blob: 1b403a65a76885d275d12d37a408e24009633dfc [file] [log] [blame]
Tim Shen7abe9882018-01-23 22:06:57 +00001; 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.
Sanjay Pateld052de82018-06-27 18:16:40 +00005; We can't use friz here because it may return -0.0 where the original code doesn't.
6
Tim Shen7abe9882018-01-23 22:06:57 +00007define float @f_i128_f(float %v) {
8; CHECK-LABEL: f_i128_f:
9; CHECK: # %bb.0: # %entry
Sanjay Pateld052de82018-06-27 18:16:40 +000010; 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
23entry:
24 %a = fptosi float %v to i128
25 %b = sitofp i128 %a to float
26 ret float %b
27}
28
29; NSZ, so it's safe to friz.
30
31define float @f_i128_fi_nsz(float %v) #0 {
32; CHECK-LABEL: f_i128_fi_nsz:
33; CHECK: # %bb.0: # %entry
Sanjay Patel3d453ad2018-04-20 15:07:55 +000034; CHECK-NEXT: friz 1, 1
Tim Shen7abe9882018-01-23 22:06:57 +000035; CHECK-NEXT: blr
36entry:
37 %a = fptosi float %v to i128
38 %b = sitofp i128 %a to float
39 ret float %b
40}
Sanjay Pateld052de82018-06-27 18:16:40 +000041
42attributes #0 = { "no-signed-zeros-fp-math"="true" }
43