[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / PowerPC / fast-isel-ret.ll
blob5fe786129b574620ecacd695ce8f6ce16d16a957
1 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64
3 define zeroext i1 @rettrue() nounwind {
4 entry:
5 ; ELF64-LABEL: rettrue
6 ; ELF64: li 3, 1
7 ; ELF64: blr
8   ret i1 true
11 define zeroext i1 @retfalse() nounwind {
12 entry:
13 ; ELF64-LABEL: retfalse
14 ; ELF64: li 3, 0
15 ; ELF64: blr
16   ret i1 false
19 define signext i1 @retstrue() nounwind {
20 entry:
21 ; ELF64-LABEL: retstrue
22 ; ELF64: li 3, -1
23 ; ELF64: blr
24   ret i1 true
27 define signext i1 @retsfalse() nounwind {
28 entry:
29 ; ELF64-LABEL: retsfalse
30 ; ELF64: li 3, 0
31 ; ELF64: blr
32   ret i1 false
35 define signext i8 @ret2(i8 signext %a) nounwind {
36 entry:
37 ; ELF64-LABEL: ret2
38 ; ELF64: extsb
39 ; ELF64: blr
40   ret i8 %a
43 define zeroext i8 @ret3(i8 signext %a) nounwind {
44 entry:
45 ; ELF64-LABEL: ret3
46 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 56
47 ; ELF64: blr
48   ret i8 %a
51 define signext i16 @ret4(i16 signext %a) nounwind {
52 entry:
53 ; ELF64-LABEL: ret4
54 ; ELF64: extsh
55 ; ELF64: blr
56   ret i16 %a
59 define zeroext i16 @ret5(i16 signext %a) nounwind {
60 entry:
61 ; ELF64-LABEL: ret5
62 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 48
63 ; ELF64: blr
64   ret i16 %a
67 define i16 @ret6(i16 %a) nounwind {
68 entry:
69 ; ELF64-LABEL: ret6
70 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 48
71 ; ELF64: blr
72   ret i16 %a
75 define signext i32 @ret7(i32 signext %a) nounwind {
76 entry:
77 ; ELF64-LABEL: ret7
78 ; ELF64: extsw
79 ; ELF64: blr
80   ret i32 %a
83 define zeroext i32 @ret8(i32 signext %a) nounwind {
84 entry:
85 ; ELF64-LABEL: ret8
86 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 32
87 ; ELF64: blr
88   ret i32 %a
91 define i32 @ret9(i32 %a) nounwind {
92 entry:
93 ; ELF64-LABEL: ret9
94 ; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 32
95 ; ELF64: blr
96   ret i32 %a
99 define i64 @ret10(i64 %a) nounwind {
100 entry:
101 ; ELF64-LABEL: ret10
102 ; ELF64-NOT: exts
103 ; ELF64-NOT: clrldi
104 ; ELF64-NOT: rldicl
105 ; ELF64: blr
106   ret i64 %a
109 define float @ret11(float %a) nounwind {
110 entry:
111 ; ELF64-LABEL: ret11
112 ; ELF64: blr
113   ret float %a
116 define double @ret12(double %a) nounwind {
117 entry:
118 ; ELF64-LABEL: ret12
119 ; ELF64: blr
120   ret double %a
123 define i8 @ret13() nounwind {
124 entry:
125 ; ELF64-LABEL: ret13
126 ; ELF64: li
127 ; ELF64: blr
128   ret i8 15;
131 define i16 @ret14() nounwind {
132 entry:
133 ; ELF64-LABEL: ret14
134 ; ELF64: li
135 ; ELF64: blr
136   ret i16 -225;
139 define i32 @ret15() nounwind {
140 entry:
141 ; ELF64-LABEL: ret15
142 ; ELF64: lis
143 ; ELF64: ori
144 ; ELF64: blr
145   ret i32 278135;
148 define i64 @ret16() nounwind {
149 entry:
150 ; ELF64-LABEL: ret16
151 ; ELF64: li
152 ; ELF64: sldi
153 ; ELF64: oris
154 ; ELF64: ori
155 ; ELF64: blr
156   ret i64 27813515225;
159 define float @ret17() nounwind {
160 entry:
161 ; ELF64-LABEL: ret17
162 ; ELF64: addis
163 ; ELF64: lfs
164 ; ELF64: blr
165   ret float 2.5;
168 define double @ret18() nounwind {
169 entry:
170 ; ELF64-LABEL: ret18
171 ; ELF64: addis
172 ; ELF64: lfd
173 ; ELF64: blr
174   ret double 2.5e-33;
177 define zeroext i32 @ret19() nounwind {
178 entry:
179 ; ELF64-LABEL: ret19
180 ; ELF64: li
181 ; ELF64: oris
182 ; ELF64: ori
183 ; ELF64: blr
184   ret i32 -1
187 define zeroext i16 @ret20() nounwind {
188 entry:
189 ; ELF64-LABEL: ret20
190 ; ELF64: lis{{.*}}0
191 ; ELF64: ori{{.*}}32768
192 ; ELF64: blr
193   ret i16 32768