[Demangle] Add a few more options to the microsoft demangler
[llvm-complete.git] / test / CodeGen / PowerPC / brcond.ll
blob5bf8c6c1f35550fa9f124c66aa28bc2281b311ae
1 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-unknown < %s | FileCheck %s
2 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s
4 define signext i32 @testi32slt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
5 ; CHECK-LABEL: testi32slt
6 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
7 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
8 entry:
9   %cmp1 = icmp eq i32 %c3, %c4
10   %cmp3tmp = icmp eq i32 %c1, %c2
11   %cmp3 = icmp slt i1 %cmp3tmp, %cmp1
12   br i1 %cmp3, label %iftrue, label %iffalse
13 iftrue:
14   ret i32 %a1
15 iffalse:
16   ret i32 %a2
19 define signext i32 @testi32ult(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
20 ; CHECK-LABEL: testi32ult
21 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
22 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
23 entry:
24   %cmp1 = icmp eq i32 %c3, %c4
25   %cmp3tmp = icmp eq i32 %c1, %c2
26   %cmp3 = icmp ult i1 %cmp3tmp, %cmp1
27   br i1 %cmp3, label %iftrue, label %iffalse
28 iftrue:
29   ret i32 %a1
30 iffalse:
31   ret i32 %a2
34 define signext i32 @testi32sle(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
35 ; CHECK-LABEL: testi32sle
36 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
37 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
38 entry:
39   %cmp1 = icmp eq i32 %c3, %c4
40   %cmp3tmp = icmp eq i32 %c1, %c2
41   %cmp3 = icmp sle i1 %cmp3tmp, %cmp1
42   br i1 %cmp3, label %iftrue, label %iffalse
43 iftrue:
44   ret i32 %a1
45 iffalse:
46   ret i32 %a2
49 define signext i32 @testi32ule(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
50 ; CHECK-LABEL: testi32ule
51 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
52 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
53 entry:
54   %cmp1 = icmp eq i32 %c3, %c4
55   %cmp3tmp = icmp eq i32 %c1, %c2
56   %cmp3 = icmp ule i1 %cmp3tmp, %cmp1
57   br i1 %cmp3, label %iftrue, label %iffalse
58 iftrue:
59   ret i32 %a1
60 iffalse:
61   ret i32 %a2
64 define signext i32 @testi32eq(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
65 ; CHECK-LABEL: testi32eq:
66 ; CHECK: crxor [[REG:[0-9]+]], 6, 2
67 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
68 entry:
69   %cmp1 = icmp eq i32 %c3, %c4
70   %cmp3tmp = icmp eq i32 %c1, %c2
71   %cmp3 = icmp eq i1 %cmp3tmp, %cmp1
72   br i1 %cmp3, label %iftrue, label %iffalse
73 iftrue:
74   ret i32 %a1
75 iffalse:
76   ret i32 %a2
79 define signext i32 @testi32sge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
80 ; CHECK-LABEL: testi32sge:
81 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
82 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
83 entry:
84   %cmp1 = icmp eq i32 %c3, %c4
85   %cmp3tmp = icmp eq i32 %c1, %c2
86   %cmp3 = icmp sge i1 %cmp3tmp, %cmp1
87   br i1 %cmp3, label %iftrue, label %iffalse
88 iftrue:
89   ret i32 %a1
90 iffalse:
91   ret i32 %a2
94 define signext i32 @testi32uge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
95 ; CHECK-LABEL: testi32uge:
96 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
97 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
98 entry:
99   %cmp1 = icmp eq i32 %c3, %c4
100   %cmp3tmp = icmp eq i32 %c1, %c2
101   %cmp3 = icmp uge i1 %cmp3tmp, %cmp1
102   br i1 %cmp3, label %iftrue, label %iffalse
103 iftrue:
104   ret i32 %a1
105 iffalse:
106   ret i32 %a2
109 define signext i32 @testi32sgt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
110 ; CHECK-LABEL: testi32sgt:
111 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
112 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
113 entry:
114   %cmp1 = icmp eq i32 %c3, %c4
115   %cmp3tmp = icmp eq i32 %c1, %c2
116   %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1
117   br i1 %cmp3, label %iftrue, label %iffalse
118 iftrue:
119   ret i32 %a1
120 iffalse:
121   ret i32 %a2
124 define signext i32 @testi32ugt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
125 ; CHECK-LABEL: testi32ugt:
126 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
127 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
128 entry:
129   %cmp1 = icmp eq i32 %c3, %c4
130   %cmp3tmp = icmp eq i32 %c1, %c2
131   %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1
132   br i1 %cmp3, label %iftrue, label %iffalse
133 iftrue:
134   ret i32 %a1
135 iffalse:
136   ret i32 %a2
139 define signext i32 @testi32ne(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {
140 ; CHECK-LABEL: testi32ne:
141 ; CHECK: creqv [[REG:[0-9]+]], 6, 2
142 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
143 entry:
144   %cmp1 = icmp eq i32 %c3, %c4
145   %cmp3tmp = icmp eq i32 %c1, %c2
146   %cmp3 = icmp ne i1 %cmp3tmp, %cmp1
147   br i1 %cmp3, label %iftrue, label %iffalse
148 iftrue:
149   ret i32 %a1
150 iffalse:
151   ret i32 %a2
154 define i64 @testi64slt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
155 ; CHECK-LABEL: testi64slt
156 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
157 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
158 entry:
159   %cmp1 = icmp eq i64 %c3, %c4
160   %cmp3tmp = icmp eq i64 %c1, %c2
161   %cmp3 = icmp slt i1 %cmp3tmp, %cmp1
162   br i1 %cmp3, label %iftrue, label %iffalse
163 iftrue:
164   ret i64 %a1
165 iffalse:
166   ret i64 %a2
169 define i64 @testi64ult(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
170 ; CHECK-LABEL: testi64ult
171 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
172 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
173 entry:
174   %cmp1 = icmp eq i64 %c3, %c4
175   %cmp3tmp = icmp eq i64 %c1, %c2
176   %cmp3 = icmp ult i1 %cmp3tmp, %cmp1
177   br i1 %cmp3, label %iftrue, label %iffalse
178 iftrue:
179   ret i64 %a1
180 iffalse:
181   ret i64 %a2
184 define i64 @testi64sle(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
185 ; CHECK-LABEL: testi64sle
186 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
187 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
188 entry:
189   %cmp1 = icmp eq i64 %c3, %c4
190   %cmp3tmp = icmp eq i64 %c1, %c2
191   %cmp3 = icmp sle i1 %cmp3tmp, %cmp1
192   br i1 %cmp3, label %iftrue, label %iffalse
193 iftrue:
194   ret i64 %a1
195 iffalse:
196   ret i64 %a2
199 define i64 @testi64ule(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
200 ; CHECK-LABEL: testi64ule
201 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
202 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
203 entry:
204   %cmp1 = icmp eq i64 %c3, %c4
205   %cmp3tmp = icmp eq i64 %c1, %c2
206   %cmp3 = icmp ule i1 %cmp3tmp, %cmp1
207   br i1 %cmp3, label %iftrue, label %iffalse
208 iftrue:
209   ret i64 %a1
210 iffalse:
211   ret i64 %a2
214 define i64 @testi64eq(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
215 ; CHECK-LABEL: testi64eq
216 ; CHECK: crxor [[REG:[0-9]+]], 6, 2
217 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
218 entry:
219   %cmp1 = icmp eq i64 %c3, %c4
220   %cmp3tmp = icmp eq i64 %c1, %c2
221   %cmp3 = icmp eq i1 %cmp3tmp, %cmp1
222   br i1 %cmp3, label %iftrue, label %iffalse
223 iftrue:
224   ret i64 %a1
225 iffalse:
226   ret i64 %a2
229 define i64 @testi64sge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
230 ; CHECK-LABEL: testi64sge
231 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
232 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
233 entry:
234   %cmp1 = icmp eq i64 %c3, %c4
235   %cmp3tmp = icmp eq i64 %c1, %c2
236   %cmp3 = icmp sge i1 %cmp3tmp, %cmp1
237   br i1 %cmp3, label %iftrue, label %iffalse
238 iftrue:
239   ret i64 %a1
240 iffalse:
241   ret i64 %a2
244 define i64 @testi64uge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
245 ; CHECK-LABEL: testi64uge
246 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
247 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
248 entry:
249   %cmp1 = icmp eq i64 %c3, %c4
250   %cmp3tmp = icmp eq i64 %c1, %c2
251   %cmp3 = icmp uge i1 %cmp3tmp, %cmp1
252   br i1 %cmp3, label %iftrue, label %iffalse
253 iftrue:
254   ret i64 %a1
255 iffalse:
256   ret i64 %a2
259 define i64 @testi64sgt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
260 ; CHECK-LABEL: testi64sgt
261 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
262 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
263 entry:
264   %cmp1 = icmp eq i64 %c3, %c4
265   %cmp3tmp = icmp eq i64 %c1, %c2
266   %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1
267   br i1 %cmp3, label %iftrue, label %iffalse
268 iftrue:
269   ret i64 %a1
270 iffalse:
271   ret i64 %a2
274 define i64 @testi64ugt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
275 ; CHECK-LABEL: testi64ugt
276 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
277 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
278 entry:
279   %cmp1 = icmp eq i64 %c3, %c4
280   %cmp3tmp = icmp eq i64 %c1, %c2
281   %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1
282   br i1 %cmp3, label %iftrue, label %iffalse
283 iftrue:
284   ret i64 %a1
285 iffalse:
286   ret i64 %a2
289 define i64 @testi64ne(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {
290 ; CHECK-LABEL: testi64ne
291 ; CHECK: creqv [[REG:[0-9]+]], 6, 2
292 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
293 entry:
294   %cmp1 = icmp eq i64 %c3, %c4
295   %cmp3tmp = icmp eq i64 %c1, %c2
296   %cmp3 = icmp ne i1 %cmp3tmp, %cmp1
297   br i1 %cmp3, label %iftrue, label %iffalse
298 iftrue:
299   ret i64 %a1
300 iffalse:
301   ret i64 %a2
304 define float @testfloatslt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
305 ; CHECK-LABEL: testfloatslt
306 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
307 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
308 entry:
309   %cmp1 = fcmp oeq float %c3, %c4
310   %cmp3tmp = fcmp oeq float %c1, %c2
311   %cmp3 = icmp slt i1 %cmp3tmp, %cmp1
312   br i1 %cmp3, label %iftrue, label %iffalse
313 iftrue:
314   ret float %a1
315 iffalse:
316   ret float %a2
319 define float @testfloatult(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
320 ; CHECK-LABEL: testfloatult
321 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
322 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
323 entry:
324   %cmp1 = fcmp oeq float %c3, %c4
325   %cmp3tmp = fcmp oeq float %c1, %c2
326   %cmp3 = icmp ult i1 %cmp3tmp, %cmp1
327   br i1 %cmp3, label %iftrue, label %iffalse
328 iftrue:
329   ret float %a1
330 iffalse:
331   ret float %a2
334 define float @testfloatsle(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
335 ; CHECK-LABEL: testfloatsle
336 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
337 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
338 entry:
339   %cmp1 = fcmp oeq float %c3, %c4
340   %cmp3tmp = fcmp oeq float %c1, %c2
341   %cmp3 = icmp sle i1 %cmp3tmp, %cmp1
342   br i1 %cmp3, label %iftrue, label %iffalse
343 iftrue:
344   ret float %a1
345 iffalse:
346   ret float %a2
349 define float @testfloatule(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
350 ; CHECK-LABEL: testfloatule
351 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
352 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
353 entry:
354   %cmp1 = fcmp oeq float %c3, %c4
355   %cmp3tmp = fcmp oeq float %c1, %c2
356   %cmp3 = icmp ule i1 %cmp3tmp, %cmp1
357   br i1 %cmp3, label %iftrue, label %iffalse
358 iftrue:
359   ret float %a1
360 iffalse:
361   ret float %a2
364 define float @testfloateq(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
365 ; CHECK-LABEL: testfloateq
366 ; CHECK: crxor [[REG:[0-9]+]], 6, 2
367 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
368 entry:
369   %cmp1 = fcmp oeq float %c3, %c4
370   %cmp3tmp = fcmp oeq float %c1, %c2
371   %cmp3 = icmp eq i1 %cmp3tmp, %cmp1
372   br i1 %cmp3, label %iftrue, label %iffalse
373 iftrue:
374   ret float %a1
375 iffalse:
376   ret float %a2
379 define float @testfloatsge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
380 ; CHECK-LABEL: testfloatsge
381 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
382 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
383 entry:
384   %cmp1 = fcmp oeq float %c3, %c4
385   %cmp3tmp = fcmp oeq float %c1, %c2
386   %cmp3 = icmp sge i1 %cmp3tmp, %cmp1
387   br i1 %cmp3, label %iftrue, label %iffalse
388 iftrue:
389   ret float %a1
390 iffalse:
391   ret float %a2
394 define float @testfloatuge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
395 ; CHECK-LABEL: testfloatuge
396 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
397 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
398 entry:
399   %cmp1 = fcmp oeq float %c3, %c4
400   %cmp3tmp = fcmp oeq float %c1, %c2
401   %cmp3 = icmp uge i1 %cmp3tmp, %cmp1
402   br i1 %cmp3, label %iftrue, label %iffalse
403 iftrue:
404   ret float %a1
405 iffalse:
406   ret float %a2
409 define float @testfloatsgt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
410 ; CHECK-LABEL: testfloatsgt
411 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
412 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
413 entry:
414   %cmp1 = fcmp oeq float %c3, %c4
415   %cmp3tmp = fcmp oeq float %c1, %c2
416   %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1
417   br i1 %cmp3, label %iftrue, label %iffalse
418 iftrue:
419   ret float %a1
420 iffalse:
421   ret float %a2
424 define float @testfloatugt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
425 ; CHECK-LABEL: testfloatugt
426 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
427 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
428 entry:
429   %cmp1 = fcmp oeq float %c3, %c4
430   %cmp3tmp = fcmp oeq float %c1, %c2
431   %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1
432   br i1 %cmp3, label %iftrue, label %iffalse
433 iftrue:
434   ret float %a1
435 iffalse:
436   ret float %a2
439 define float @testfloatne(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {
440 ; CHECK-LABEL: testfloatne
441 ; CHECK: creqv [[REG:[0-9]+]], 6, 2
442 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
443 entry:
444   %cmp1 = fcmp oeq float %c3, %c4
445   %cmp3tmp = fcmp oeq float %c1, %c2
446   %cmp3 = icmp ne i1 %cmp3tmp, %cmp1
447   br i1 %cmp3, label %iftrue, label %iffalse
448 iftrue:
449   ret float %a1
450 iffalse:
451   ret float %a2
454 define double @testdoubleslt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
455 ; CHECK-LABEL: testdoubleslt
456 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
457 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
458 entry:
459   %cmp1 = fcmp oeq double %c3, %c4
460   %cmp3tmp = fcmp oeq double %c1, %c2
461   %cmp3 = icmp slt i1 %cmp3tmp, %cmp1
462   br i1 %cmp3, label %iftrue, label %iffalse
463 iftrue:
464   ret double %a1
465 iffalse:
466   ret double %a2
469 define double @testdoubleult(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
470 ; CHECK-LABEL: testdoubleult:
471 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
472 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
473 entry:
474   %cmp1 = fcmp oeq double %c3, %c4
475   %cmp3tmp = fcmp oeq double %c1, %c2
476   %cmp3 = icmp ult i1 %cmp3tmp, %cmp1
477   br i1 %cmp3, label %iftrue, label %iffalse
478 iftrue:
479   ret double %a1
480 iffalse:
481   ret double %a2
484 define double @testdoublesle(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
485 ; CHECK-LABEL: testdoublesle
486 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
487 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
488 entry:
489   %cmp1 = fcmp oeq double %c3, %c4
490   %cmp3tmp = fcmp oeq double %c1, %c2
491   %cmp3 = icmp sle i1 %cmp3tmp, %cmp1
492   br i1 %cmp3, label %iftrue, label %iffalse
493 iftrue:
494   ret double %a1
495 iffalse:
496   ret double %a2
499 define double @testdoubleule(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
500 ; CHECK-LABEL: testdoubleule:
501 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
502 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
503 entry:
504   %cmp1 = fcmp oeq double %c3, %c4
505   %cmp3tmp = fcmp oeq double %c1, %c2
506   %cmp3 = icmp ule i1 %cmp3tmp, %cmp1
507   br i1 %cmp3, label %iftrue, label %iffalse
508 iftrue:
509   ret double %a1
510 iffalse:
511   ret double %a2
514 define double @testdoubleeq(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
515 ; CHECK-LABEL: testdoubleeq
516 ; CHECK: crxor [[REG:[0-9]+]], 6, 2
517 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
518 entry:
519   %cmp1 = fcmp oeq double %c3, %c4
520   %cmp3tmp = fcmp oeq double %c1, %c2
521   %cmp3 = icmp eq i1 %cmp3tmp, %cmp1
522   br i1 %cmp3, label %iftrue, label %iffalse
523 iftrue:
524   ret double %a1
525 iffalse:
526   ret double %a2
529 define double @testdoublesge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
530 ; CHECK-LABEL: testdoublesge
531 ; CHECK: crandc [[REG:[0-9]+]], 6, 2
532 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
533 entry:
534   %cmp1 = fcmp oeq double %c3, %c4
535   %cmp3tmp = fcmp oeq double %c1, %c2
536   %cmp3 = icmp sge i1 %cmp3tmp, %cmp1
537   br i1 %cmp3, label %iftrue, label %iffalse
538 iftrue:
539   ret double %a1
540 iffalse:
541   ret double %a2
544 define double @testdoubleuge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
545 ; CHECK-LABEL: testdoubleuge
546 ; CHECK: crandc [[REG:[0-9]+]], 2, 6
547 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
548 entry:
549   %cmp1 = fcmp oeq double %c3, %c4
550   %cmp3tmp = fcmp oeq double %c1, %c2
551   %cmp3 = icmp uge i1 %cmp3tmp, %cmp1
552   br i1 %cmp3, label %iftrue, label %iffalse
553 iftrue:
554   ret double %a1
555 iffalse:
556   ret double %a2
559 define double @testdoublesgt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
560 ; CHECK-LABEL: testdoublesgt:
561 ; CHECK: crorc [[REG:[0-9]+]], 6, 2
562 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
563 entry:
564   %cmp1 = fcmp oeq double %c3, %c4
565   %cmp3tmp = fcmp oeq double %c1, %c2
566   %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1
567   br i1 %cmp3, label %iftrue, label %iffalse
568 iftrue:
569   ret double %a1
570 iffalse:
571   ret double %a2
574 define double @testdoubleugt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
575 ; CHECK-LABEL: testdoubleugt
576 ; CHECK: crorc [[REG:[0-9]+]], 2, 6
577 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
578 entry:
579   %cmp1 = fcmp oeq double %c3, %c4
580   %cmp3tmp = fcmp oeq double %c1, %c2
581   %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1
582   br i1 %cmp3, label %iftrue, label %iffalse
583 iftrue:
584   ret double %a1
585 iffalse:
586   ret double %a2
589 define double @testdoublene(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {
590 ; CHECK-LABEL: testdoublene
591 ; CHECK: creqv [[REG:[0-9]+]], 6, 2
592 ; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}
593 entry:
594   %cmp1 = fcmp oeq double %c3, %c4
595   %cmp3tmp = fcmp oeq double %c1, %c2
596   %cmp3 = icmp ne i1 %cmp3tmp, %cmp1
597   br i1 %cmp3, label %iftrue, label %iffalse
598 iftrue:
599   ret double %a1
600 iffalse:
601   ret double %a2