[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / PowerPC / no-extra-fp-conv-ldst.ll
blob2ae1d32e78eab5e8cd2515ba014885f32601fafa
1 ; RUN: llc -verify-machineinstrs -mcpu=a2 < %s | FileCheck %s
2 target datalayout = "E-m:e-i64:64-n32:64"
3 target triple = "powerpc64-unknown-linux-gnu"
5 ; Function Attrs: nounwind readonly
6 define double @test1(i64* nocapture readonly %x) #0 {
7 entry:
8   %0 = load i64, i64* %x, align 8
9   %conv = sitofp i64 %0 to double
10   ret double %conv
12 ; CHECK-LABEL: @test1
13 ; CHECK: lfd [[REG1:[0-9]+]], 0(3)
14 ; CHECK: fcfid 1, [[REG1]]
15 ; CHECK: blr
18 ; Function Attrs: nounwind readonly
19 define double @test2(i32* nocapture readonly %x) #0 {
20 entry:
21   %0 = load i32, i32* %x, align 4
22   %conv = sitofp i32 %0 to double
23   ret double %conv
25 ; CHECK-LABEL: @test2
26 ; CHECK: lfiwax [[REG1:[0-9]+]], 0, 3
27 ; CHECK: fcfid 1, [[REG1]]
28 ; CHECK: blr
31 ; Function Attrs: nounwind readnone
32 define float @foo(float %X) #0 {
33 entry:
34   %conv = fptosi float %X to i32
35   %conv1 = sitofp i32 %conv to float
36   ret float %conv1
38 ; CHECK-LABEL: @foo
39 ; CHECK: friz 1, 1
40 ; CHECK: blr
43 ; Function Attrs: nounwind readnone
44 define double @food(double %X) #0 {
45 entry:
46   %conv = fptosi double %X to i32
47   %conv1 = sitofp i32 %conv to double
48   ret double %conv1
50 ; CHECK-LABEL: @food
51 ; CHECK: friz 1, 1
52 ; CHECK: blr
55 ; Function Attrs: nounwind readnone
56 define float @foou(float %X) #0 {
57 entry:
58   %conv = fptoui float %X to i32
59   %conv1 = uitofp i32 %conv to float
60   ret float %conv1
62 ; CHECK-LABEL: @foou
63 ; CHECK: friz 1, 1
64 ; CHECK: blr
67 ; Function Attrs: nounwind readnone
68 define double @fooud(double %X) #0 {
69 entry:
70   %conv = fptoui double %X to i32
71   %conv1 = uitofp i32 %conv to double
72   ret double %conv1
74 ; CHECK-LABEL: @fooud
75 ; CHECK: friz 1, 1
76 ; CHECK: blr
79 attributes #0 = { nounwind readonly "no-signed-zeros-fp-math"="true" }