• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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) {
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
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
34; CHECK-NEXT:    friz 1, 1
35; CHECK-NEXT:    blr
36entry:
37  %a = fptosi float %v to i128
38  %b = sitofp i128 %a to float
39  ret float %b
40}
41
42attributes #0 = { "no-signed-zeros-fp-math"="true" }
43
44