[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / PowerPC / fp-int128-fp-combine.ll
blob6c9690527321caf38e7d9087f03391e1f071e396
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -O0 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
4 ; xscvdpsxds should NOT be emitted, since it saturates the result down to i64.
5 ; We can't use friz here because it may return -0.0 where the original code doesn't.
7 define float @f_i128_f(float %v) {
8 ; CHECK-LABEL: f_i128_f:
9 ; CHECK:       # %bb.0: # %entry
10 ; CHECK-NEXT:    mflr 0
11 ; CHECK-NEXT:    std 0, 16(1)
12 ; CHECK-NEXT:    stdu 1, -32(1)
13 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
14 ; CHECK-NEXT:    .cfi_offset lr, 16
15 ; CHECK-NEXT:    bl __fixsfti
16 ; CHECK-NEXT:    nop
17 ; CHECK-NEXT:    bl __floattisf
18 ; CHECK-NEXT:    nop
19 ; CHECK-NEXT:    addi 1, 1, 32
20 ; CHECK-NEXT:    ld 0, 16(1)
21 ; CHECK-NEXT:    mtlr 0
22 ; CHECK-NEXT:    blr
23 entry:
24   %a = fptosi float %v to i128
25   %b = sitofp i128 %a to float
26   ret float %b
29 ; NSZ, so it's safe to friz.
31 define float @f_i128_fi_nsz(float %v) #0 {
32 ; CHECK-LABEL: f_i128_fi_nsz:
33 ; CHECK:       # %bb.0: # %entry
34 ; CHECK-NEXT:    friz 0, 1
35 ; CHECK-NEXT:    fmr 1, 0
36 ; CHECK-NEXT:    blr
37 entry:
38   %a = fptosi float %v to i128
39   %b = sitofp i128 %a to float
40   ret float %b
43 attributes #0 = { "no-signed-zeros-fp-math"="true" }