Rename loop unrolling and loop vectorizer metadata to have a common prefix.
[oota-llvm.git] / test / CodeGen / PowerPC / fast-isel-cmp-imm.ll
1 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64
2
3 define void @t1a(float %a) uwtable ssp {
4 entry:
5 ; ELF64: t1a
6   %cmp = fcmp oeq float %a, 0.000000e+00
7 ; ELF64: addis
8 ; ELF64: lfs
9 ; ELF64: fcmpu
10   br i1 %cmp, label %if.then, label %if.end
11
12 if.then:                                          ; preds = %entry
13   call void @foo()
14   br label %if.end
15
16 if.end:                                           ; preds = %if.then, %entry
17   ret void
18 }
19
20 declare void @foo()
21
22 define void @t1b(float %a) uwtable ssp {
23 entry:
24 ; ELF64: t1b
25   %cmp = fcmp oeq float %a, -0.000000e+00
26 ; ELF64: addis
27 ; ELF64: lfs
28 ; ELF64: fcmpu
29   br i1 %cmp, label %if.then, label %if.end
30
31 if.then:                                          ; preds = %entry
32   call void @foo()
33   br label %if.end
34
35 if.end:                                           ; preds = %if.then, %entry
36   ret void
37 }
38
39 define void @t2a(double %a) uwtable ssp {
40 entry:
41 ; ELF64: t2a
42   %cmp = fcmp oeq double %a, 0.000000e+00
43 ; ELF64: addis
44 ; ELF64: lfd
45 ; ELF64: fcmpu
46   br i1 %cmp, label %if.then, label %if.end
47
48 if.then:                                          ; preds = %entry
49   call void @foo()
50   br label %if.end
51
52 if.end:                                           ; preds = %if.then, %entry
53   ret void
54 }
55
56 define void @t2b(double %a) uwtable ssp {
57 entry:
58 ; ELF64: t2b
59   %cmp = fcmp oeq double %a, -0.000000e+00
60 ; ELF64: addis
61 ; ELF64: lfd
62 ; ELF64: fcmpu
63   br i1 %cmp, label %if.then, label %if.end
64
65 if.then:                                          ; preds = %entry
66   call void @foo()
67   br label %if.end
68
69 if.end:                                           ; preds = %if.then, %entry
70   ret void
71 }
72
73 define void @t4(i8 signext %a) uwtable ssp {
74 entry:
75 ; ELF64: t4
76   %cmp = icmp eq i8 %a, -1
77 ; ELF64: extsb
78 ; ELF64: cmpwi
79   br i1 %cmp, label %if.then, label %if.end
80
81 if.then:                                          ; preds = %entry
82   call void @foo()
83   br label %if.end
84
85 if.end:                                           ; preds = %if.then, %entry
86   ret void
87 }
88
89 define void @t5(i8 zeroext %a) uwtable ssp {
90 entry:
91 ; ELF64: t5
92   %cmp = icmp eq i8 %a, 1
93 ; ELF64: extsb
94 ; ELF64: cmpwi
95   br i1 %cmp, label %if.then, label %if.end
96
97 if.then:                                          ; preds = %entry
98   call void @foo()
99   br label %if.end
100
101 if.end:                                           ; preds = %if.then, %entry
102   ret void
103 }
104
105 define void @t6(i16 signext %a) uwtable ssp {
106 entry:
107 ; ELF64: t6
108   %cmp = icmp eq i16 %a, -1
109 ; ELF64: extsh
110 ; ELF64: cmpwi
111   br i1 %cmp, label %if.then, label %if.end
112
113 if.then:                                          ; preds = %entry
114   call void @foo()
115   br label %if.end
116
117 if.end:                                           ; preds = %if.then, %entry
118   ret void
119 }
120
121 define void @t7(i16 zeroext %a) uwtable ssp {
122 entry:
123 ; ELF64: t7
124   %cmp = icmp eq i16 %a, 1
125 ; ELF64: extsh
126 ; ELF64: cmpwi
127   br i1 %cmp, label %if.then, label %if.end
128
129 if.then:                                          ; preds = %entry
130   call void @foo()
131   br label %if.end
132
133 if.end:                                           ; preds = %if.then, %entry
134   ret void
135 }
136
137 define void @t8(i32 %a) uwtable ssp {
138 entry:
139 ; ELF64: t8
140   %cmp = icmp eq i32 %a, -1
141 ; ELF64: cmpwi
142   br i1 %cmp, label %if.then, label %if.end
143
144 if.then:                                          ; preds = %entry
145   call void @foo()
146   br label %if.end
147
148 if.end:                                           ; preds = %if.then, %entry
149   ret void
150 }
151
152 define void @t9(i32 %a) uwtable ssp {
153 entry:
154 ; ELF64: t9
155   %cmp = icmp eq i32 %a, 1
156 ; ELF64: cmpwi
157   br i1 %cmp, label %if.then, label %if.end
158
159 if.then:                                          ; preds = %entry
160   call void @foo()
161   br label %if.end
162
163 if.end:                                           ; preds = %if.then, %entry
164   ret void
165 }
166
167 define void @t10(i32 %a) uwtable ssp {
168 entry:
169 ; ELF64: t10
170   %cmp = icmp eq i32 %a, 384
171 ; ELF64: cmpwi
172   br i1 %cmp, label %if.then, label %if.end
173
174 if.then:                                          ; preds = %entry
175   call void @foo()
176   br label %if.end
177
178 if.end:                                           ; preds = %if.then, %entry
179   ret void
180 }
181
182 define void @t11(i32 %a) uwtable ssp {
183 entry:
184 ; ELF64: t11
185   %cmp = icmp eq i32 %a, 4096
186 ; ELF64: cmpwi
187   br i1 %cmp, label %if.then, label %if.end
188
189 if.then:                                          ; preds = %entry
190   call void @foo()
191   br label %if.end
192
193 if.end:                                           ; preds = %if.then, %entry
194   ret void
195 }
196
197 define void @t12(i8 %a) uwtable ssp {
198 entry:
199 ; ELF64: t12
200   %cmp = icmp ugt i8 %a, -113
201 ; ELF64: rlwinm
202 ; ELF64: cmplwi
203   br i1 %cmp, label %if.then, label %if.end
204
205 if.then:                                          ; preds = %entry
206   call void @foo()
207   br label %if.end
208
209 if.end:                                           ; preds = %if.then, %entry
210   ret void
211 }
212
213 define void @t13() nounwind ssp {
214 entry:
215 ; ELF64: t13
216   %cmp = icmp slt i32 -123, -2147483648
217 ; ELF64: li
218 ; ELF64: lis
219 ; ELF64: cmpw
220   br i1 %cmp, label %if.then, label %if.end
221
222 if.then:                                          ; preds = %entry
223   ret void
224
225 if.end:                                           ; preds = %entry
226   ret void
227 }
228
229 define void @t14(i64 %a) uwtable ssp {
230 entry:
231 ; ELF64: t14
232   %cmp = icmp eq i64 %a, -1
233 ; ELF64: cmpdi
234   br i1 %cmp, label %if.then, label %if.end
235
236 if.then:                                          ; preds = %entry
237   call void @foo()
238   br label %if.end
239
240 if.end:                                           ; preds = %if.then, %entry
241   ret void
242 }
243
244 define void @t15(i64 %a) uwtable ssp {
245 entry:
246 ; ELF64: t15
247   %cmp = icmp eq i64 %a, 1
248 ; ELF64: cmpdi
249   br i1 %cmp, label %if.then, label %if.end
250
251 if.then:                                          ; preds = %entry
252   call void @foo()
253   br label %if.end
254
255 if.end:                                           ; preds = %if.then, %entry
256   ret void
257 }
258
259 define void @t16(i64 %a) uwtable ssp {
260 entry:
261 ; ELF64: t16
262   %cmp = icmp eq i64 %a, 384
263 ; ELF64: cmpdi
264   br i1 %cmp, label %if.then, label %if.end
265
266 if.then:                                          ; preds = %entry
267   call void @foo()
268   br label %if.end
269
270 if.end:                                           ; preds = %if.then, %entry
271   ret void
272 }
273
274 define void @t17(i64 %a) uwtable ssp {
275 entry:
276 ; ELF64: t17
277   %cmp = icmp eq i64 %a, 32768
278 ; Extra operand so we don't match on cmpdi.
279 ; ELF64: cmpd {{[0-9]+}}
280   br i1 %cmp, label %if.then, label %if.end
281
282 if.then:                                          ; preds = %entry
283   call void @foo()
284   br label %if.end
285
286 if.end:                                           ; preds = %if.then, %entry
287   ret void
288 }
289