Revert r354244 "[DAGCombiner] Eliminate dead stores to stack."
[llvm-complete.git] / test / CodeGen / PowerPC / fast-isel-ret.ll
blob4c499e44e4f04cf24f57ee906e21a6e2e6d8d74b
1 ; FIXME: FastISel currently returns false if it hits code that uses VSX
2 ; registers and with -fast-isel-abort=1 turned on the test case will then fail.
3 ; When fastisel better supports VSX fix up this test case.
5 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=-vsx | FileCheck %s --check-prefix=ELF64
7 define zeroext i1 @rettrue() nounwind {
8 entry:
9 ; ELF64-LABEL: rettrue
10 ; ELF64: li 3, 1
11 ; ELF64: blr
12   ret i1 true
15 define zeroext i1 @retfalse() nounwind {
16 entry:
17 ; ELF64-LABEL: retfalse
18 ; ELF64: li 3, 0
19 ; ELF64: blr
20   ret i1 false
23 define signext i1 @retstrue() nounwind {
24 entry:
25 ; ELF64-LABEL: retstrue
26 ; ELF64: li 3, -1
27 ; ELF64: blr
28   ret i1 true
31 define signext i1 @retsfalse() nounwind {
32 entry:
33 ; ELF64-LABEL: retsfalse
34 ; ELF64: li 3, 0
35 ; ELF64: blr
36   ret i1 false
39 define signext i8 @ret2(i8 signext %a) nounwind {
40 entry:
41 ; ELF64-LABEL: ret2
42 ; ELF64: extsb
43 ; ELF64: blr
44   ret i8 %a
47 define zeroext i8 @ret3(i8 signext %a) nounwind {
48 entry:
49 ; ELF64-LABEL: ret3
50 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 56
51 ; ELF64: blr
52   ret i8 %a
55 define signext i16 @ret4(i16 signext %a) nounwind {
56 entry:
57 ; ELF64-LABEL: ret4
58 ; ELF64: extsh
59 ; ELF64: blr
60   ret i16 %a
63 define zeroext i16 @ret5(i16 signext %a) nounwind {
64 entry:
65 ; ELF64-LABEL: ret5
66 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 48
67 ; ELF64: blr
68   ret i16 %a
71 define i16 @ret6(i16 %a) nounwind {
72 entry:
73 ; ELF64-LABEL: ret6
74 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 48
75 ; ELF64: blr
76   ret i16 %a
79 define signext i32 @ret7(i32 signext %a) nounwind {
80 entry:
81 ; ELF64-LABEL: ret7
82 ; ELF64: extsw
83 ; ELF64: blr
84   ret i32 %a
87 define zeroext i32 @ret8(i32 signext %a) nounwind {
88 entry:
89 ; ELF64-LABEL: ret8
90 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 32
91 ; ELF64: blr
92   ret i32 %a
95 define i32 @ret9(i32 %a) nounwind {
96 entry:
97 ; ELF64-LABEL: ret9
98 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 32
99 ; ELF64: blr
100   ret i32 %a
103 define i64 @ret10(i64 %a) nounwind {
104 entry:
105 ; ELF64-LABEL: ret10
106 ; ELF64-NOT: exts
107 ; ELF64-NOT: clrldi
108 ; ELF64-NOT: rldicl
109 ; ELF64: blr
110   ret i64 %a
113 define float @ret11(float %a) nounwind {
114 entry:
115 ; ELF64-LABEL: ret11
116 ; ELF64: blr
117   ret float %a
120 define double @ret12(double %a) nounwind {
121 entry:
122 ; ELF64-LABEL: ret12
123 ; ELF64: blr
124   ret double %a
127 define i8 @ret13() nounwind {
128 entry:
129 ; ELF64-LABEL: ret13
130 ; ELF64: li
131 ; ELF64: blr
132   ret i8 15;
135 define i16 @ret14() nounwind {
136 entry:
137 ; ELF64-LABEL: ret14
138 ; ELF64: li
139 ; ELF64: blr
140   ret i16 -225;
143 define i32 @ret15() nounwind {
144 entry:
145 ; ELF64-LABEL: ret15
146 ; ELF64: lis
147 ; ELF64: ori
148 ; ELF64: blr
149   ret i32 278135;
152 define i64 @ret16() nounwind {
153 entry:
154 ; ELF64-LABEL: ret16
155 ; ELF64: li
156 ; ELF64: sldi
157 ; ELF64: oris
158 ; ELF64: ori
159 ; ELF64: blr
160   ret i64 27813515225;
163 define float @ret17() nounwind {
164 entry:
165 ; ELF64-LABEL: ret17
166 ; ELF64: addis
167 ; ELF64: lfs
168 ; ELF64: blr
169   ret float 2.5;
172 define double @ret18() nounwind {
173 entry:
174 ; ELF64-LABEL: ret18
175 ; ELF64: addis
176 ; ELF64: lfd
177 ; ELF64: blr
178   ret double 2.5e-33;
181 define zeroext i32 @ret19() nounwind {
182 entry:
183 ; ELF64-LABEL: ret19
184 ; ELF64: li
185 ; ELF64: oris
186 ; ELF64: ori
187 ; ELF64: blr
188   ret i32 -1
191 define zeroext i16 @ret20() nounwind {
192 entry:
193 ; ELF64-LABEL: ret20
194 ; ELF64: lis{{.*}}0
195 ; ELF64: ori{{.*}}32768
196 ; ELF64: blr
197   ret i16 32768