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) nounwind {
8 ; CHECK-LABEL: f_i128_f:
9 ; CHECK: # %bb.0: # %entry
11 ; CHECK-NEXT: std 0, 16(1)
12 ; CHECK-NEXT: stdu 1, -32(1)
13 ; CHECK-NEXT: bl __fixsfti
15 ; CHECK-NEXT: bl __floattisf
17 ; CHECK-NEXT: addi 1, 1, 32
18 ; CHECK-NEXT: ld 0, 16(1)
22 %a = fptosi float %v to i128
23 %b = sitofp i128 %a to float
27 ; NSZ, so it's safe to friz.
29 define float @f_i128_fi_nsz(float %v) #0 {
30 ; CHECK-LABEL: f_i128_fi_nsz:
31 ; CHECK: # %bb.0: # %entry
32 ; CHECK-NEXT: friz 0, 1
33 ; CHECK-NEXT: fmr 1, 0
36 %a = fptosi float %v to i128
37 %b = sitofp i128 %a to float
41 attributes #0 = { "no-signed-zeros-fp-math"="true" }