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 3 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. 6 7define float @f_i128_f(float %v) nounwind { 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: bl __fixsfti 14; CHECK-NEXT: nop 15; CHECK-NEXT: bl __floattisf 16; CHECK-NEXT: nop 17; CHECK-NEXT: addi 1, 1, 32 18; CHECK-NEXT: ld 0, 16(1) 19; CHECK-NEXT: mtlr 0 20; CHECK-NEXT: blr 21entry: 22 %a = fptosi float %v to i128 23 %b = sitofp i128 %a to float 24 ret float %b 25} 26 27; NSZ, so it's safe to friz. 28 29define float @f_i128_fi_nsz(float %v) #0 { 30; CHECK-LABEL: f_i128_fi_nsz: 31; CHECK: # %bb.0: # %entry 32; CHECK-NEXT: xsrdpiz 1, 1 33; CHECK-NEXT: blr 34entry: 35 %a = fptosi float %v to i128 36 %b = sitofp i128 %a to float 37 ret float %b 38} 39 40attributes #0 = { "no-signed-zeros-fp-math"="true" } 41 42