Revert r354244 "[DAGCombiner] Eliminate dead stores to stack."
[llvm-complete.git] / test / Transforms / InstCombine / and-fcmp.ll
blobd2c1f135096a475319c62b8fd32f15dbf320639c
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -instcombine -S | FileCheck %s
4 define i1 @PR1738(double %x, double %y) {
5 ; CHECK-LABEL: @PR1738(
6 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]]
7 ; CHECK-NEXT:    ret i1 [[TMP1]]
9   %cmp1 = fcmp ord double %x, 0.0
10   %cmp2 = fcmp ord double %y, 0.0
11   %and = and i1 %cmp1, %cmp2
12   ret i1 %and
15 define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) {
16 ; CHECK-LABEL: @PR1738_vec_undef(
17 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord <2 x double> [[X:%.*]], [[Y:%.*]]
18 ; CHECK-NEXT:    ret <2 x i1> [[TMP1]]
20   %cmp1 = fcmp ord <2 x double> %x, <double 0.0, double undef>
21   %cmp2 = fcmp ord <2 x double> %y, <double undef, double 0.0>
22   %or = and <2 x i1> %cmp1, %cmp2
23   ret <2 x i1> %or
26 define i1 @PR15737(float %a, double %b) {
27 ; CHECK-LABEL: @PR15737(
28 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00
29 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00
30 ; CHECK-NEXT:    [[AND:%.*]] = and i1 [[CMP]], [[CMP1]]
31 ; CHECK-NEXT:    ret i1 [[AND]]
33   %cmp = fcmp ord float %a, 0.000000e+00
34   %cmp1 = fcmp ord double %b, 0.000000e+00
35   %and = and i1 %cmp, %cmp1
36   ret i1 %and
39 define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) {
40 ; CHECK-LABEL: @t9(
41 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord <2 x float> [[A:%.*]], zeroinitializer
42 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord <2 x double> [[B:%.*]], zeroinitializer
43 ; CHECK-NEXT:    [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]]
44 ; CHECK-NEXT:    ret <2 x i1> [[AND]]
46   %cmp = fcmp ord <2 x float> %a, zeroinitializer
47   %cmp1 = fcmp ord <2 x double> %b, zeroinitializer
48   %and = and <2 x i1> %cmp, %cmp1
49   ret <2 x i1> %and
52 define i1 @fcmp_ord_nonzero(float %x, float %y) {
53 ; CHECK-LABEL: @fcmp_ord_nonzero(
54 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord float [[X:%.*]], [[Y:%.*]]
55 ; CHECK-NEXT:    ret i1 [[TMP1]]
57   %cmp1 = fcmp ord float %x, 1.0
58   %cmp2 = fcmp ord float %y, 2.0
59   %and = and i1 %cmp1, %cmp2
60   ret i1 %and
63 define <3 x i1> @fcmp_ord_nonzero_vec(<3 x float> %x, <3 x float> %y) {
64 ; CHECK-LABEL: @fcmp_ord_nonzero_vec(
65 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord <3 x float> [[X:%.*]], [[Y:%.*]]
66 ; CHECK-NEXT:    ret <3 x i1> [[TMP1]]
68   %cmp1 = fcmp ord <3 x float> %x, <float 1.0, float 2.0, float 3.0>
69   %cmp2 = fcmp ord <3 x float> %y, <float 3.0, float 2.0, float 1.0>
70   %and = and <3 x i1> %cmp1, %cmp2
71   ret <3 x i1> %and
74 define i1 @auto_gen_0(double %a, double %b) {
75 ; CHECK-LABEL: @auto_gen_0(
76 ; CHECK-NEXT:    ret i1 false
78   %cmp = fcmp false double %a, %b
79   %cmp1 = fcmp false double %a, %b
80   %retval = and i1 %cmp, %cmp1
81   ret i1 %retval
84 define i1 @auto_gen_1(double %a, double %b) {
85 ; CHECK-LABEL: @auto_gen_1(
86 ; CHECK-NEXT:    ret i1 false
88   %cmp = fcmp oeq double %a, %b
89   %cmp1 = fcmp false double %a, %b
90   %retval = and i1 %cmp, %cmp1
91   ret i1 %retval
94 define i1 @auto_gen_2(double %a, double %b) {
95 ; CHECK-LABEL: @auto_gen_2(
96 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
97 ; CHECK-NEXT:    ret i1 [[TMP1]]
99   %cmp = fcmp oeq double %a, %b
100   %cmp1 = fcmp oeq double %a, %b
101   %retval = and i1 %cmp, %cmp1
102   ret i1 %retval
105 define i1 @auto_gen_3(double %a, double %b) {
106 ; CHECK-LABEL: @auto_gen_3(
107 ; CHECK-NEXT:    ret i1 false
109   %cmp = fcmp ogt double %a, %b
110   %cmp1 = fcmp false double %a, %b
111   %retval = and i1 %cmp, %cmp1
112   ret i1 %retval
115 define i1 @auto_gen_4(double %a, double %b) {
116 ; CHECK-LABEL: @auto_gen_4(
117 ; CHECK-NEXT:    ret i1 false
119   %cmp = fcmp ogt double %a, %b
120   %cmp1 = fcmp oeq double %a, %b
121   %retval = and i1 %cmp, %cmp1
122   ret i1 %retval
125 define i1 @auto_gen_5(double %a, double %b) {
126 ; CHECK-LABEL: @auto_gen_5(
127 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
128 ; CHECK-NEXT:    ret i1 [[TMP1]]
130   %cmp = fcmp ogt double %a, %b
131   %cmp1 = fcmp ogt double %a, %b
132   %retval = and i1 %cmp, %cmp1
133   ret i1 %retval
136 define i1 @auto_gen_6(double %a, double %b) {
137 ; CHECK-LABEL: @auto_gen_6(
138 ; CHECK-NEXT:    ret i1 false
140   %cmp = fcmp oge double %a, %b
141   %cmp1 = fcmp false double %a, %b
142   %retval = and i1 %cmp, %cmp1
143   ret i1 %retval
146 define i1 @auto_gen_7(double %a, double %b) {
147 ; CHECK-LABEL: @auto_gen_7(
148 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
149 ; CHECK-NEXT:    ret i1 [[TMP1]]
151   %cmp = fcmp oge double %a, %b
152   %cmp1 = fcmp oeq double %a, %b
153   %retval = and i1 %cmp, %cmp1
154   ret i1 %retval
157 define i1 @auto_gen_8(double %a, double %b) {
158 ; CHECK-LABEL: @auto_gen_8(
159 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
160 ; CHECK-NEXT:    ret i1 [[TMP1]]
162   %cmp = fcmp oge double %a, %b
163   %cmp1 = fcmp ogt double %a, %b
164   %retval = and i1 %cmp, %cmp1
165   ret i1 %retval
168 define i1 @auto_gen_9(double %a, double %b) {
169 ; CHECK-LABEL: @auto_gen_9(
170 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
171 ; CHECK-NEXT:    ret i1 [[TMP1]]
173   %cmp = fcmp oge double %a, %b
174   %cmp1 = fcmp oge double %a, %b
175   %retval = and i1 %cmp, %cmp1
176   ret i1 %retval
179 define i1 @auto_gen_10(double %a, double %b) {
180 ; CHECK-LABEL: @auto_gen_10(
181 ; CHECK-NEXT:    ret i1 false
183   %cmp = fcmp olt double %a, %b
184   %cmp1 = fcmp false double %a, %b
185   %retval = and i1 %cmp, %cmp1
186   ret i1 %retval
189 define i1 @auto_gen_11(double %a, double %b) {
190 ; CHECK-LABEL: @auto_gen_11(
191 ; CHECK-NEXT:    ret i1 false
193   %cmp = fcmp olt double %a, %b
194   %cmp1 = fcmp oeq double %a, %b
195   %retval = and i1 %cmp, %cmp1
196   ret i1 %retval
199 define i1 @auto_gen_12(double %a, double %b) {
200 ; CHECK-LABEL: @auto_gen_12(
201 ; CHECK-NEXT:    ret i1 false
203   %cmp = fcmp olt double %a, %b
204   %cmp1 = fcmp ogt double %a, %b
205   %retval = and i1 %cmp, %cmp1
206   ret i1 %retval
209 define i1 @auto_gen_13(double %a, double %b) {
210 ; CHECK-LABEL: @auto_gen_13(
211 ; CHECK-NEXT:    ret i1 false
213   %cmp = fcmp olt double %a, %b
214   %cmp1 = fcmp oge double %a, %b
215   %retval = and i1 %cmp, %cmp1
216   ret i1 %retval
219 define i1 @auto_gen_14(double %a, double %b) {
220 ; CHECK-LABEL: @auto_gen_14(
221 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
222 ; CHECK-NEXT:    ret i1 [[TMP1]]
224   %cmp = fcmp olt double %a, %b
225   %cmp1 = fcmp olt double %a, %b
226   %retval = and i1 %cmp, %cmp1
227   ret i1 %retval
230 define i1 @auto_gen_15(double %a, double %b) {
231 ; CHECK-LABEL: @auto_gen_15(
232 ; CHECK-NEXT:    ret i1 false
234   %cmp = fcmp ole double %a, %b
235   %cmp1 = fcmp false double %a, %b
236   %retval = and i1 %cmp, %cmp1
237   ret i1 %retval
240 define i1 @auto_gen_16(double %a, double %b) {
241 ; CHECK-LABEL: @auto_gen_16(
242 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
243 ; CHECK-NEXT:    ret i1 [[TMP1]]
245   %cmp = fcmp ole double %a, %b
246   %cmp1 = fcmp oeq double %a, %b
247   %retval = and i1 %cmp, %cmp1
248   ret i1 %retval
251 define i1 @auto_gen_17(double %a, double %b) {
252 ; CHECK-LABEL: @auto_gen_17(
253 ; CHECK-NEXT:    ret i1 false
255   %cmp = fcmp ole double %a, %b
256   %cmp1 = fcmp ogt double %a, %b
257   %retval = and i1 %cmp, %cmp1
258   ret i1 %retval
261 define i1 @auto_gen_18(double %a, double %b) {
262 ; CHECK-LABEL: @auto_gen_18(
263 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
264 ; CHECK-NEXT:    ret i1 [[TMP1]]
266   %cmp = fcmp ole double %a, %b
267   %cmp1 = fcmp oge double %a, %b
268   %retval = and i1 %cmp, %cmp1
269   ret i1 %retval
272 define i1 @auto_gen_19(double %a, double %b) {
273 ; CHECK-LABEL: @auto_gen_19(
274 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
275 ; CHECK-NEXT:    ret i1 [[TMP1]]
277   %cmp = fcmp ole double %a, %b
278   %cmp1 = fcmp olt double %a, %b
279   %retval = and i1 %cmp, %cmp1
280   ret i1 %retval
283 define i1 @auto_gen_20(double %a, double %b) {
284 ; CHECK-LABEL: @auto_gen_20(
285 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
286 ; CHECK-NEXT:    ret i1 [[TMP1]]
288   %cmp = fcmp ole double %a, %b
289   %cmp1 = fcmp ole double %a, %b
290   %retval = and i1 %cmp, %cmp1
291   ret i1 %retval
294 define i1 @auto_gen_21(double %a, double %b) {
295 ; CHECK-LABEL: @auto_gen_21(
296 ; CHECK-NEXT:    ret i1 false
298   %cmp = fcmp one double %a, %b
299   %cmp1 = fcmp false double %a, %b
300   %retval = and i1 %cmp, %cmp1
301   ret i1 %retval
304 define i1 @auto_gen_22(double %a, double %b) {
305 ; CHECK-LABEL: @auto_gen_22(
306 ; CHECK-NEXT:    ret i1 false
308   %cmp = fcmp one double %a, %b
309   %cmp1 = fcmp oeq double %a, %b
310   %retval = and i1 %cmp, %cmp1
311   ret i1 %retval
314 define i1 @auto_gen_23(double %a, double %b) {
315 ; CHECK-LABEL: @auto_gen_23(
316 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
317 ; CHECK-NEXT:    ret i1 [[TMP1]]
319   %cmp = fcmp one double %a, %b
320   %cmp1 = fcmp ogt double %a, %b
321   %retval = and i1 %cmp, %cmp1
322   ret i1 %retval
325 define i1 @auto_gen_24(double %a, double %b) {
326 ; CHECK-LABEL: @auto_gen_24(
327 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
328 ; CHECK-NEXT:    ret i1 [[TMP1]]
330   %cmp = fcmp one double %a, %b
331   %cmp1 = fcmp oge double %a, %b
332   %retval = and i1 %cmp, %cmp1
333   ret i1 %retval
336 define i1 @auto_gen_25(double %a, double %b) {
337 ; CHECK-LABEL: @auto_gen_25(
338 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
339 ; CHECK-NEXT:    ret i1 [[TMP1]]
341   %cmp = fcmp one double %a, %b
342   %cmp1 = fcmp olt double %a, %b
343   %retval = and i1 %cmp, %cmp1
344   ret i1 %retval
347 define i1 @auto_gen_26(double %a, double %b) {
348 ; CHECK-LABEL: @auto_gen_26(
349 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
350 ; CHECK-NEXT:    ret i1 [[TMP1]]
352   %cmp = fcmp one double %a, %b
353   %cmp1 = fcmp ole double %a, %b
354   %retval = and i1 %cmp, %cmp1
355   ret i1 %retval
358 define i1 @auto_gen_27(double %a, double %b) {
359 ; CHECK-LABEL: @auto_gen_27(
360 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
361 ; CHECK-NEXT:    ret i1 [[TMP1]]
363   %cmp = fcmp one double %a, %b
364   %cmp1 = fcmp one double %a, %b
365   %retval = and i1 %cmp, %cmp1
366   ret i1 %retval
369 define i1 @auto_gen_28(double %a, double %b) {
370 ; CHECK-LABEL: @auto_gen_28(
371 ; CHECK-NEXT:    ret i1 false
373   %cmp = fcmp ord double %a, %b
374   %cmp1 = fcmp false double %a, %b
375   %retval = and i1 %cmp, %cmp1
376   ret i1 %retval
379 define i1 @auto_gen_29(double %a, double %b) {
380 ; CHECK-LABEL: @auto_gen_29(
381 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
382 ; CHECK-NEXT:    ret i1 [[TMP1]]
384   %cmp = fcmp ord double %a, %b
385   %cmp1 = fcmp oeq double %a, %b
386   %retval = and i1 %cmp, %cmp1
387   ret i1 %retval
390 define i1 @auto_gen_30(double %a, double %b) {
391 ; CHECK-LABEL: @auto_gen_30(
392 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
393 ; CHECK-NEXT:    ret i1 [[TMP1]]
395   %cmp = fcmp ord double %a, %b
396   %cmp1 = fcmp ogt double %a, %b
397   %retval = and i1 %cmp, %cmp1
398   ret i1 %retval
401 define i1 @auto_gen_31(double %a, double %b) {
402 ; CHECK-LABEL: @auto_gen_31(
403 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
404 ; CHECK-NEXT:    ret i1 [[TMP1]]
406   %cmp = fcmp ord double %a, %b
407   %cmp1 = fcmp oge double %a, %b
408   %retval = and i1 %cmp, %cmp1
409   ret i1 %retval
412 define i1 @auto_gen_32(double %a, double %b) {
413 ; CHECK-LABEL: @auto_gen_32(
414 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
415 ; CHECK-NEXT:    ret i1 [[TMP1]]
417   %cmp = fcmp ord double %a, %b
418   %cmp1 = fcmp olt double %a, %b
419   %retval = and i1 %cmp, %cmp1
420   ret i1 %retval
423 define i1 @auto_gen_33(double %a, double %b) {
424 ; CHECK-LABEL: @auto_gen_33(
425 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
426 ; CHECK-NEXT:    ret i1 [[TMP1]]
428   %cmp = fcmp ord double %a, %b
429   %cmp1 = fcmp ole double %a, %b
430   %retval = and i1 %cmp, %cmp1
431   ret i1 %retval
434 define i1 @auto_gen_34(double %a, double %b) {
435 ; CHECK-LABEL: @auto_gen_34(
436 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
437 ; CHECK-NEXT:    ret i1 [[TMP1]]
439   %cmp = fcmp ord double %a, %b
440   %cmp1 = fcmp one double %a, %b
441   %retval = and i1 %cmp, %cmp1
442   ret i1 %retval
445 define i1 @auto_gen_35(double %a, double %b) {
446 ; CHECK-LABEL: @auto_gen_35(
447 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
448 ; CHECK-NEXT:    ret i1 [[TMP1]]
450   %cmp = fcmp ord double %a, %b
451   %cmp1 = fcmp ord double %a, %b
452   %retval = and i1 %cmp, %cmp1
453   ret i1 %retval
456 define i1 @auto_gen_36(double %a, double %b) {
457 ; CHECK-LABEL: @auto_gen_36(
458 ; CHECK-NEXT:    ret i1 false
460   %cmp = fcmp ueq double %a, %b
461   %cmp1 = fcmp false double %a, %b
462   %retval = and i1 %cmp, %cmp1
463   ret i1 %retval
466 define i1 @auto_gen_37(double %a, double %b) {
467 ; CHECK-LABEL: @auto_gen_37(
468 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
469 ; CHECK-NEXT:    ret i1 [[TMP1]]
471   %cmp = fcmp ueq double %a, %b
472   %cmp1 = fcmp oeq double %a, %b
473   %retval = and i1 %cmp, %cmp1
474   ret i1 %retval
477 define i1 @auto_gen_38(double %a, double %b) {
478 ; CHECK-LABEL: @auto_gen_38(
479 ; CHECK-NEXT:    ret i1 false
481   %cmp = fcmp ueq double %a, %b
482   %cmp1 = fcmp ogt double %a, %b
483   %retval = and i1 %cmp, %cmp1
484   ret i1 %retval
487 define i1 @auto_gen_39(double %a, double %b) {
488 ; CHECK-LABEL: @auto_gen_39(
489 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
490 ; CHECK-NEXT:    ret i1 [[TMP1]]
492   %cmp = fcmp ueq double %a, %b
493   %cmp1 = fcmp oge double %a, %b
494   %retval = and i1 %cmp, %cmp1
495   ret i1 %retval
498 define i1 @auto_gen_40(double %a, double %b) {
499 ; CHECK-LABEL: @auto_gen_40(
500 ; CHECK-NEXT:    ret i1 false
502   %cmp = fcmp ueq double %a, %b
503   %cmp1 = fcmp olt double %a, %b
504   %retval = and i1 %cmp, %cmp1
505   ret i1 %retval
508 define i1 @auto_gen_41(double %a, double %b) {
509 ; CHECK-LABEL: @auto_gen_41(
510 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
511 ; CHECK-NEXT:    ret i1 [[TMP1]]
513   %cmp = fcmp ueq double %a, %b
514   %cmp1 = fcmp ole double %a, %b
515   %retval = and i1 %cmp, %cmp1
516   ret i1 %retval
519 define i1 @auto_gen_42(double %a, double %b) {
520 ; CHECK-LABEL: @auto_gen_42(
521 ; CHECK-NEXT:    ret i1 false
523   %cmp = fcmp ueq double %a, %b
524   %cmp1 = fcmp one double %a, %b
525   %retval = and i1 %cmp, %cmp1
526   ret i1 %retval
529 define i1 @auto_gen_43(double %a, double %b) {
530 ; CHECK-LABEL: @auto_gen_43(
531 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
532 ; CHECK-NEXT:    ret i1 [[TMP1]]
534   %cmp = fcmp ueq double %a, %b
535   %cmp1 = fcmp ord double %a, %b
536   %retval = and i1 %cmp, %cmp1
537   ret i1 %retval
540 define i1 @auto_gen_44(double %a, double %b) {
541 ; CHECK-LABEL: @auto_gen_44(
542 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
543 ; CHECK-NEXT:    ret i1 [[TMP1]]
545   %cmp = fcmp ueq double %a, %b
546   %cmp1 = fcmp ueq double %a, %b
547   %retval = and i1 %cmp, %cmp1
548   ret i1 %retval
551 define i1 @auto_gen_45(double %a, double %b) {
552 ; CHECK-LABEL: @auto_gen_45(
553 ; CHECK-NEXT:    ret i1 false
555   %cmp = fcmp ugt double %a, %b
556   %cmp1 = fcmp false double %a, %b
557   %retval = and i1 %cmp, %cmp1
558   ret i1 %retval
561 define i1 @auto_gen_46(double %a, double %b) {
562 ; CHECK-LABEL: @auto_gen_46(
563 ; CHECK-NEXT:    ret i1 false
565   %cmp = fcmp ugt double %a, %b
566   %cmp1 = fcmp oeq double %a, %b
567   %retval = and i1 %cmp, %cmp1
568   ret i1 %retval
571 define i1 @auto_gen_47(double %a, double %b) {
572 ; CHECK-LABEL: @auto_gen_47(
573 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
574 ; CHECK-NEXT:    ret i1 [[TMP1]]
576   %cmp = fcmp ugt double %a, %b
577   %cmp1 = fcmp ogt double %a, %b
578   %retval = and i1 %cmp, %cmp1
579   ret i1 %retval
582 define i1 @auto_gen_48(double %a, double %b) {
583 ; CHECK-LABEL: @auto_gen_48(
584 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
585 ; CHECK-NEXT:    ret i1 [[TMP1]]
587   %cmp = fcmp ugt double %a, %b
588   %cmp1 = fcmp oge double %a, %b
589   %retval = and i1 %cmp, %cmp1
590   ret i1 %retval
593 define i1 @auto_gen_49(double %a, double %b) {
594 ; CHECK-LABEL: @auto_gen_49(
595 ; CHECK-NEXT:    ret i1 false
597   %cmp = fcmp ugt double %a, %b
598   %cmp1 = fcmp olt double %a, %b
599   %retval = and i1 %cmp, %cmp1
600   ret i1 %retval
603 define i1 @auto_gen_50(double %a, double %b) {
604 ; CHECK-LABEL: @auto_gen_50(
605 ; CHECK-NEXT:    ret i1 false
607   %cmp = fcmp ugt double %a, %b
608   %cmp1 = fcmp ole double %a, %b
609   %retval = and i1 %cmp, %cmp1
610   ret i1 %retval
613 define i1 @auto_gen_51(double %a, double %b) {
614 ; CHECK-LABEL: @auto_gen_51(
615 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
616 ; CHECK-NEXT:    ret i1 [[TMP1]]
618   %cmp = fcmp ugt double %a, %b
619   %cmp1 = fcmp one double %a, %b
620   %retval = and i1 %cmp, %cmp1
621   ret i1 %retval
624 define i1 @auto_gen_52(double %a, double %b) {
625 ; CHECK-LABEL: @auto_gen_52(
626 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
627 ; CHECK-NEXT:    ret i1 [[TMP1]]
629   %cmp = fcmp ugt double %a, %b
630   %cmp1 = fcmp ord double %a, %b
631   %retval = and i1 %cmp, %cmp1
632   ret i1 %retval
635 define i1 @auto_gen_53(double %a, double %b) {
636 ; CHECK-LABEL: @auto_gen_53(
637 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
638 ; CHECK-NEXT:    ret i1 [[TMP1]]
640   %cmp = fcmp ugt double %a, %b
641   %cmp1 = fcmp ueq double %a, %b
642   %retval = and i1 %cmp, %cmp1
643   ret i1 %retval
646 define i1 @auto_gen_54(double %a, double %b) {
647 ; CHECK-LABEL: @auto_gen_54(
648 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
649 ; CHECK-NEXT:    ret i1 [[TMP1]]
651   %cmp = fcmp ugt double %a, %b
652   %cmp1 = fcmp ugt double %a, %b
653   %retval = and i1 %cmp, %cmp1
654   ret i1 %retval
657 define i1 @auto_gen_55(double %a, double %b) {
658 ; CHECK-LABEL: @auto_gen_55(
659 ; CHECK-NEXT:    ret i1 false
661   %cmp = fcmp uge double %a, %b
662   %cmp1 = fcmp false double %a, %b
663   %retval = and i1 %cmp, %cmp1
664   ret i1 %retval
667 define i1 @auto_gen_56(double %a, double %b) {
668 ; CHECK-LABEL: @auto_gen_56(
669 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
670 ; CHECK-NEXT:    ret i1 [[TMP1]]
672   %cmp = fcmp uge double %a, %b
673   %cmp1 = fcmp oeq double %a, %b
674   %retval = and i1 %cmp, %cmp1
675   ret i1 %retval
678 define i1 @auto_gen_57(double %a, double %b) {
679 ; CHECK-LABEL: @auto_gen_57(
680 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
681 ; CHECK-NEXT:    ret i1 [[TMP1]]
683   %cmp = fcmp uge double %a, %b
684   %cmp1 = fcmp ogt double %a, %b
685   %retval = and i1 %cmp, %cmp1
686   ret i1 %retval
689 define i1 @auto_gen_58(double %a, double %b) {
690 ; CHECK-LABEL: @auto_gen_58(
691 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
692 ; CHECK-NEXT:    ret i1 [[TMP1]]
694   %cmp = fcmp uge double %a, %b
695   %cmp1 = fcmp oge double %a, %b
696   %retval = and i1 %cmp, %cmp1
697   ret i1 %retval
700 define i1 @auto_gen_59(double %a, double %b) {
701 ; CHECK-LABEL: @auto_gen_59(
702 ; CHECK-NEXT:    ret i1 false
704   %cmp = fcmp uge double %a, %b
705   %cmp1 = fcmp olt double %a, %b
706   %retval = and i1 %cmp, %cmp1
707   ret i1 %retval
710 define i1 @auto_gen_60(double %a, double %b) {
711 ; CHECK-LABEL: @auto_gen_60(
712 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
713 ; CHECK-NEXT:    ret i1 [[TMP1]]
715   %cmp = fcmp uge double %a, %b
716   %cmp1 = fcmp ole double %a, %b
717   %retval = and i1 %cmp, %cmp1
718   ret i1 %retval
721 define i1 @auto_gen_61(double %a, double %b) {
722 ; CHECK-LABEL: @auto_gen_61(
723 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
724 ; CHECK-NEXT:    ret i1 [[TMP1]]
726   %cmp = fcmp uge double %a, %b
727   %cmp1 = fcmp one double %a, %b
728   %retval = and i1 %cmp, %cmp1
729   ret i1 %retval
732 define i1 @auto_gen_62(double %a, double %b) {
733 ; CHECK-LABEL: @auto_gen_62(
734 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
735 ; CHECK-NEXT:    ret i1 [[TMP1]]
737   %cmp = fcmp uge double %a, %b
738   %cmp1 = fcmp ord double %a, %b
739   %retval = and i1 %cmp, %cmp1
740   ret i1 %retval
743 define i1 @auto_gen_63(double %a, double %b) {
744 ; CHECK-LABEL: @auto_gen_63(
745 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
746 ; CHECK-NEXT:    ret i1 [[TMP1]]
748   %cmp = fcmp uge double %a, %b
749   %cmp1 = fcmp ueq double %a, %b
750   %retval = and i1 %cmp, %cmp1
751   ret i1 %retval
754 define i1 @auto_gen_64(double %a, double %b) {
755 ; CHECK-LABEL: @auto_gen_64(
756 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
757 ; CHECK-NEXT:    ret i1 [[TMP1]]
759   %cmp = fcmp uge double %a, %b
760   %cmp1 = fcmp ugt double %a, %b
761   %retval = and i1 %cmp, %cmp1
762   ret i1 %retval
765 define i1 @auto_gen_65(double %a, double %b) {
766 ; CHECK-LABEL: @auto_gen_65(
767 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
768 ; CHECK-NEXT:    ret i1 [[TMP1]]
770   %cmp = fcmp uge double %a, %b
771   %cmp1 = fcmp uge double %a, %b
772   %retval = and i1 %cmp, %cmp1
773   ret i1 %retval
776 define i1 @auto_gen_66(double %a, double %b) {
777 ; CHECK-LABEL: @auto_gen_66(
778 ; CHECK-NEXT:    ret i1 false
780   %cmp = fcmp ult double %a, %b
781   %cmp1 = fcmp false double %a, %b
782   %retval = and i1 %cmp, %cmp1
783   ret i1 %retval
786 define i1 @auto_gen_67(double %a, double %b) {
787 ; CHECK-LABEL: @auto_gen_67(
788 ; CHECK-NEXT:    ret i1 false
790   %cmp = fcmp ult double %a, %b
791   %cmp1 = fcmp oeq double %a, %b
792   %retval = and i1 %cmp, %cmp1
793   ret i1 %retval
796 define i1 @auto_gen_68(double %a, double %b) {
797 ; CHECK-LABEL: @auto_gen_68(
798 ; CHECK-NEXT:    ret i1 false
800   %cmp = fcmp ult double %a, %b
801   %cmp1 = fcmp ogt double %a, %b
802   %retval = and i1 %cmp, %cmp1
803   ret i1 %retval
806 define i1 @auto_gen_69(double %a, double %b) {
807 ; CHECK-LABEL: @auto_gen_69(
808 ; CHECK-NEXT:    ret i1 false
810   %cmp = fcmp ult double %a, %b
811   %cmp1 = fcmp oge double %a, %b
812   %retval = and i1 %cmp, %cmp1
813   ret i1 %retval
816 define i1 @auto_gen_70(double %a, double %b) {
817 ; CHECK-LABEL: @auto_gen_70(
818 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
819 ; CHECK-NEXT:    ret i1 [[TMP1]]
821   %cmp = fcmp ult double %a, %b
822   %cmp1 = fcmp olt double %a, %b
823   %retval = and i1 %cmp, %cmp1
824   ret i1 %retval
827 define i1 @auto_gen_71(double %a, double %b) {
828 ; CHECK-LABEL: @auto_gen_71(
829 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
830 ; CHECK-NEXT:    ret i1 [[TMP1]]
832   %cmp = fcmp ult double %a, %b
833   %cmp1 = fcmp ole double %a, %b
834   %retval = and i1 %cmp, %cmp1
835   ret i1 %retval
838 define i1 @auto_gen_72(double %a, double %b) {
839 ; CHECK-LABEL: @auto_gen_72(
840 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
841 ; CHECK-NEXT:    ret i1 [[TMP1]]
843   %cmp = fcmp ult double %a, %b
844   %cmp1 = fcmp one double %a, %b
845   %retval = and i1 %cmp, %cmp1
846   ret i1 %retval
849 define i1 @auto_gen_73(double %a, double %b) {
850 ; CHECK-LABEL: @auto_gen_73(
851 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
852 ; CHECK-NEXT:    ret i1 [[TMP1]]
854   %cmp = fcmp ult double %a, %b
855   %cmp1 = fcmp ord double %a, %b
856   %retval = and i1 %cmp, %cmp1
857   ret i1 %retval
860 define i1 @auto_gen_74(double %a, double %b) {
861 ; CHECK-LABEL: @auto_gen_74(
862 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
863 ; CHECK-NEXT:    ret i1 [[TMP1]]
865   %cmp = fcmp ult double %a, %b
866   %cmp1 = fcmp ueq double %a, %b
867   %retval = and i1 %cmp, %cmp1
868   ret i1 %retval
871 define i1 @auto_gen_75(double %a, double %b) {
872 ; CHECK-LABEL: @auto_gen_75(
873 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
874 ; CHECK-NEXT:    ret i1 [[TMP1]]
876   %cmp = fcmp ult double %a, %b
877   %cmp1 = fcmp ugt double %a, %b
878   %retval = and i1 %cmp, %cmp1
879   ret i1 %retval
882 define i1 @auto_gen_76(double %a, double %b) {
883 ; CHECK-LABEL: @auto_gen_76(
884 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
885 ; CHECK-NEXT:    ret i1 [[TMP1]]
887   %cmp = fcmp ult double %a, %b
888   %cmp1 = fcmp uge double %a, %b
889   %retval = and i1 %cmp, %cmp1
890   ret i1 %retval
893 define i1 @auto_gen_77(double %a, double %b) {
894 ; CHECK-LABEL: @auto_gen_77(
895 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
896 ; CHECK-NEXT:    ret i1 [[TMP1]]
898   %cmp = fcmp ult double %a, %b
899   %cmp1 = fcmp ult double %a, %b
900   %retval = and i1 %cmp, %cmp1
901   ret i1 %retval
904 define i1 @auto_gen_78(double %a, double %b) {
905 ; CHECK-LABEL: @auto_gen_78(
906 ; CHECK-NEXT:    ret i1 false
908   %cmp = fcmp ule double %a, %b
909   %cmp1 = fcmp false double %a, %b
910   %retval = and i1 %cmp, %cmp1
911   ret i1 %retval
914 define i1 @auto_gen_79(double %a, double %b) {
915 ; CHECK-LABEL: @auto_gen_79(
916 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
917 ; CHECK-NEXT:    ret i1 [[TMP1]]
919   %cmp = fcmp ule double %a, %b
920   %cmp1 = fcmp oeq double %a, %b
921   %retval = and i1 %cmp, %cmp1
922   ret i1 %retval
925 define i1 @auto_gen_80(double %a, double %b) {
926 ; CHECK-LABEL: @auto_gen_80(
927 ; CHECK-NEXT:    ret i1 false
929   %cmp = fcmp ule double %a, %b
930   %cmp1 = fcmp ogt double %a, %b
931   %retval = and i1 %cmp, %cmp1
932   ret i1 %retval
935 define i1 @auto_gen_81(double %a, double %b) {
936 ; CHECK-LABEL: @auto_gen_81(
937 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
938 ; CHECK-NEXT:    ret i1 [[TMP1]]
940   %cmp = fcmp ule double %a, %b
941   %cmp1 = fcmp oge double %a, %b
942   %retval = and i1 %cmp, %cmp1
943   ret i1 %retval
946 define i1 @auto_gen_82(double %a, double %b) {
947 ; CHECK-LABEL: @auto_gen_82(
948 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
949 ; CHECK-NEXT:    ret i1 [[TMP1]]
951   %cmp = fcmp ule double %a, %b
952   %cmp1 = fcmp olt double %a, %b
953   %retval = and i1 %cmp, %cmp1
954   ret i1 %retval
957 define i1 @auto_gen_83(double %a, double %b) {
958 ; CHECK-LABEL: @auto_gen_83(
959 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
960 ; CHECK-NEXT:    ret i1 [[TMP1]]
962   %cmp = fcmp ule double %a, %b
963   %cmp1 = fcmp ole double %a, %b
964   %retval = and i1 %cmp, %cmp1
965   ret i1 %retval
968 define i1 @auto_gen_84(double %a, double %b) {
969 ; CHECK-LABEL: @auto_gen_84(
970 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
971 ; CHECK-NEXT:    ret i1 [[TMP1]]
973   %cmp = fcmp ule double %a, %b
974   %cmp1 = fcmp one double %a, %b
975   %retval = and i1 %cmp, %cmp1
976   ret i1 %retval
979 define i1 @auto_gen_85(double %a, double %b) {
980 ; CHECK-LABEL: @auto_gen_85(
981 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
982 ; CHECK-NEXT:    ret i1 [[TMP1]]
984   %cmp = fcmp ule double %a, %b
985   %cmp1 = fcmp ord double %a, %b
986   %retval = and i1 %cmp, %cmp1
987   ret i1 %retval
990 define i1 @auto_gen_86(double %a, double %b) {
991 ; CHECK-LABEL: @auto_gen_86(
992 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
993 ; CHECK-NEXT:    ret i1 [[TMP1]]
995   %cmp = fcmp ule double %a, %b
996   %cmp1 = fcmp ueq double %a, %b
997   %retval = and i1 %cmp, %cmp1
998   ret i1 %retval
1001 define i1 @auto_gen_87(double %a, double %b) {
1002 ; CHECK-LABEL: @auto_gen_87(
1003 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1004 ; CHECK-NEXT:    ret i1 [[TMP1]]
1006   %cmp = fcmp ule double %a, %b
1007   %cmp1 = fcmp ugt double %a, %b
1008   %retval = and i1 %cmp, %cmp1
1009   ret i1 %retval
1012 define i1 @auto_gen_88(double %a, double %b) {
1013 ; CHECK-LABEL: @auto_gen_88(
1014 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1015 ; CHECK-NEXT:    ret i1 [[TMP1]]
1017   %cmp = fcmp ule double %a, %b
1018   %cmp1 = fcmp uge double %a, %b
1019   %retval = and i1 %cmp, %cmp1
1020   ret i1 %retval
1023 define i1 @auto_gen_89(double %a, double %b) {
1024 ; CHECK-LABEL: @auto_gen_89(
1025 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1026 ; CHECK-NEXT:    ret i1 [[TMP1]]
1028   %cmp = fcmp ule double %a, %b
1029   %cmp1 = fcmp ult double %a, %b
1030   %retval = and i1 %cmp, %cmp1
1031   ret i1 %retval
1034 define i1 @auto_gen_90(double %a, double %b) {
1035 ; CHECK-LABEL: @auto_gen_90(
1036 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1037 ; CHECK-NEXT:    ret i1 [[TMP1]]
1039   %cmp = fcmp ule double %a, %b
1040   %cmp1 = fcmp ule double %a, %b
1041   %retval = and i1 %cmp, %cmp1
1042   ret i1 %retval
1045 define i1 @auto_gen_91(double %a, double %b) {
1046 ; CHECK-LABEL: @auto_gen_91(
1047 ; CHECK-NEXT:    ret i1 false
1049   %cmp = fcmp une double %a, %b
1050   %cmp1 = fcmp false double %a, %b
1051   %retval = and i1 %cmp, %cmp1
1052   ret i1 %retval
1055 define i1 @auto_gen_92(double %a, double %b) {
1056 ; CHECK-LABEL: @auto_gen_92(
1057 ; CHECK-NEXT:    ret i1 false
1059   %cmp = fcmp une double %a, %b
1060   %cmp1 = fcmp oeq double %a, %b
1061   %retval = and i1 %cmp, %cmp1
1062   ret i1 %retval
1065 define i1 @auto_gen_93(double %a, double %b) {
1066 ; CHECK-LABEL: @auto_gen_93(
1067 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1068 ; CHECK-NEXT:    ret i1 [[TMP1]]
1070   %cmp = fcmp une double %a, %b
1071   %cmp1 = fcmp ogt double %a, %b
1072   %retval = and i1 %cmp, %cmp1
1073   ret i1 %retval
1076 define i1 @auto_gen_94(double %a, double %b) {
1077 ; CHECK-LABEL: @auto_gen_94(
1078 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1079 ; CHECK-NEXT:    ret i1 [[TMP1]]
1081   %cmp = fcmp une double %a, %b
1082   %cmp1 = fcmp oge double %a, %b
1083   %retval = and i1 %cmp, %cmp1
1084   ret i1 %retval
1087 define i1 @auto_gen_95(double %a, double %b) {
1088 ; CHECK-LABEL: @auto_gen_95(
1089 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1090 ; CHECK-NEXT:    ret i1 [[TMP1]]
1092   %cmp = fcmp une double %a, %b
1093   %cmp1 = fcmp olt double %a, %b
1094   %retval = and i1 %cmp, %cmp1
1095   ret i1 %retval
1098 define i1 @auto_gen_96(double %a, double %b) {
1099 ; CHECK-LABEL: @auto_gen_96(
1100 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1101 ; CHECK-NEXT:    ret i1 [[TMP1]]
1103   %cmp = fcmp une double %a, %b
1104   %cmp1 = fcmp ole double %a, %b
1105   %retval = and i1 %cmp, %cmp1
1106   ret i1 %retval
1109 define i1 @auto_gen_97(double %a, double %b) {
1110 ; CHECK-LABEL: @auto_gen_97(
1111 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1112 ; CHECK-NEXT:    ret i1 [[TMP1]]
1114   %cmp = fcmp une double %a, %b
1115   %cmp1 = fcmp one double %a, %b
1116   %retval = and i1 %cmp, %cmp1
1117   ret i1 %retval
1120 define i1 @auto_gen_98(double %a, double %b) {
1121 ; CHECK-LABEL: @auto_gen_98(
1122 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1123 ; CHECK-NEXT:    ret i1 [[TMP1]]
1125   %cmp = fcmp une double %a, %b
1126   %cmp1 = fcmp ord double %a, %b
1127   %retval = and i1 %cmp, %cmp1
1128   ret i1 %retval
1131 define i1 @auto_gen_99(double %a, double %b) {
1132 ; CHECK-LABEL: @auto_gen_99(
1133 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1134 ; CHECK-NEXT:    ret i1 [[TMP1]]
1136   %cmp = fcmp une double %a, %b
1137   %cmp1 = fcmp ueq double %a, %b
1138   %retval = and i1 %cmp, %cmp1
1139   ret i1 %retval
1142 define i1 @auto_gen_100(double %a, double %b) {
1143 ; CHECK-LABEL: @auto_gen_100(
1144 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1145 ; CHECK-NEXT:    ret i1 [[TMP1]]
1147   %cmp = fcmp une double %a, %b
1148   %cmp1 = fcmp ugt double %a, %b
1149   %retval = and i1 %cmp, %cmp1
1150   ret i1 %retval
1153 define i1 @auto_gen_101(double %a, double %b) {
1154 ; CHECK-LABEL: @auto_gen_101(
1155 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1156 ; CHECK-NEXT:    ret i1 [[TMP1]]
1158   %cmp = fcmp une double %a, %b
1159   %cmp1 = fcmp uge double %a, %b
1160   %retval = and i1 %cmp, %cmp1
1161   ret i1 %retval
1164 define i1 @auto_gen_102(double %a, double %b) {
1165 ; CHECK-LABEL: @auto_gen_102(
1166 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1167 ; CHECK-NEXT:    ret i1 [[TMP1]]
1169   %cmp = fcmp une double %a, %b
1170   %cmp1 = fcmp ult double %a, %b
1171   %retval = and i1 %cmp, %cmp1
1172   ret i1 %retval
1175 define i1 @auto_gen_103(double %a, double %b) {
1176 ; CHECK-LABEL: @auto_gen_103(
1177 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1178 ; CHECK-NEXT:    ret i1 [[TMP1]]
1180   %cmp = fcmp une double %a, %b
1181   %cmp1 = fcmp ule double %a, %b
1182   %retval = and i1 %cmp, %cmp1
1183   ret i1 %retval
1186 define i1 @auto_gen_104(double %a, double %b) {
1187 ; CHECK-LABEL: @auto_gen_104(
1188 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1189 ; CHECK-NEXT:    ret i1 [[TMP1]]
1191   %cmp = fcmp une double %a, %b
1192   %cmp1 = fcmp une double %a, %b
1193   %retval = and i1 %cmp, %cmp1
1194   ret i1 %retval
1197 define i1 @auto_gen_105(double %a, double %b) {
1198 ; CHECK-LABEL: @auto_gen_105(
1199 ; CHECK-NEXT:    ret i1 false
1201   %cmp = fcmp uno double %a, %b
1202   %cmp1 = fcmp false double %a, %b
1203   %retval = and i1 %cmp, %cmp1
1204   ret i1 %retval
1207 define i1 @auto_gen_106(double %a, double %b) {
1208 ; CHECK-LABEL: @auto_gen_106(
1209 ; CHECK-NEXT:    ret i1 false
1211   %cmp = fcmp uno double %a, %b
1212   %cmp1 = fcmp oeq double %a, %b
1213   %retval = and i1 %cmp, %cmp1
1214   ret i1 %retval
1217 define i1 @auto_gen_107(double %a, double %b) {
1218 ; CHECK-LABEL: @auto_gen_107(
1219 ; CHECK-NEXT:    ret i1 false
1221   %cmp = fcmp uno double %a, %b
1222   %cmp1 = fcmp ogt double %a, %b
1223   %retval = and i1 %cmp, %cmp1
1224   ret i1 %retval
1227 define i1 @auto_gen_108(double %a, double %b) {
1228 ; CHECK-LABEL: @auto_gen_108(
1229 ; CHECK-NEXT:    ret i1 false
1231   %cmp = fcmp uno double %a, %b
1232   %cmp1 = fcmp oge double %a, %b
1233   %retval = and i1 %cmp, %cmp1
1234   ret i1 %retval
1237 define i1 @auto_gen_109(double %a, double %b) {
1238 ; CHECK-LABEL: @auto_gen_109(
1239 ; CHECK-NEXT:    ret i1 false
1241   %cmp = fcmp uno double %a, %b
1242   %cmp1 = fcmp olt double %a, %b
1243   %retval = and i1 %cmp, %cmp1
1244   ret i1 %retval
1247 define i1 @auto_gen_110(double %a, double %b) {
1248 ; CHECK-LABEL: @auto_gen_110(
1249 ; CHECK-NEXT:    ret i1 false
1251   %cmp = fcmp uno double %a, %b
1252   %cmp1 = fcmp ole double %a, %b
1253   %retval = and i1 %cmp, %cmp1
1254   ret i1 %retval
1257 define i1 @auto_gen_111(double %a, double %b) {
1258 ; CHECK-LABEL: @auto_gen_111(
1259 ; CHECK-NEXT:    ret i1 false
1261   %cmp = fcmp uno double %a, %b
1262   %cmp1 = fcmp one double %a, %b
1263   %retval = and i1 %cmp, %cmp1
1264   ret i1 %retval
1267 define i1 @auto_gen_112(double %a, double %b) {
1268 ; CHECK-LABEL: @auto_gen_112(
1269 ; CHECK-NEXT:    ret i1 false
1271   %cmp = fcmp uno double %a, %b
1272   %cmp1 = fcmp ord double %a, %b
1273   %retval = and i1 %cmp, %cmp1
1274   ret i1 %retval
1277 define i1 @auto_gen_113(double %a, double %b) {
1278 ; CHECK-LABEL: @auto_gen_113(
1279 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1280 ; CHECK-NEXT:    ret i1 [[TMP1]]
1282   %cmp = fcmp uno double %a, %b
1283   %cmp1 = fcmp ueq double %a, %b
1284   %retval = and i1 %cmp, %cmp1
1285   ret i1 %retval
1288 define i1 @auto_gen_114(double %a, double %b) {
1289 ; CHECK-LABEL: @auto_gen_114(
1290 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1291 ; CHECK-NEXT:    ret i1 [[TMP1]]
1293   %cmp = fcmp uno double %a, %b
1294   %cmp1 = fcmp ugt double %a, %b
1295   %retval = and i1 %cmp, %cmp1
1296   ret i1 %retval
1299 define i1 @auto_gen_115(double %a, double %b) {
1300 ; CHECK-LABEL: @auto_gen_115(
1301 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1302 ; CHECK-NEXT:    ret i1 [[TMP1]]
1304   %cmp = fcmp uno double %a, %b
1305   %cmp1 = fcmp uge double %a, %b
1306   %retval = and i1 %cmp, %cmp1
1307   ret i1 %retval
1310 define i1 @auto_gen_116(double %a, double %b) {
1311 ; CHECK-LABEL: @auto_gen_116(
1312 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1313 ; CHECK-NEXT:    ret i1 [[TMP1]]
1315   %cmp = fcmp uno double %a, %b
1316   %cmp1 = fcmp ult double %a, %b
1317   %retval = and i1 %cmp, %cmp1
1318   ret i1 %retval
1321 define i1 @auto_gen_117(double %a, double %b) {
1322 ; CHECK-LABEL: @auto_gen_117(
1323 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1324 ; CHECK-NEXT:    ret i1 [[TMP1]]
1326   %cmp = fcmp uno double %a, %b
1327   %cmp1 = fcmp ule double %a, %b
1328   %retval = and i1 %cmp, %cmp1
1329   ret i1 %retval
1332 define i1 @auto_gen_118(double %a, double %b) {
1333 ; CHECK-LABEL: @auto_gen_118(
1334 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1335 ; CHECK-NEXT:    ret i1 [[TMP1]]
1337   %cmp = fcmp uno double %a, %b
1338   %cmp1 = fcmp une double %a, %b
1339   %retval = and i1 %cmp, %cmp1
1340   ret i1 %retval
1343 define i1 @auto_gen_119(double %a, double %b) {
1344 ; CHECK-LABEL: @auto_gen_119(
1345 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1346 ; CHECK-NEXT:    ret i1 [[TMP1]]
1348   %cmp = fcmp uno double %a, %b
1349   %cmp1 = fcmp uno double %a, %b
1350   %retval = and i1 %cmp, %cmp1
1351   ret i1 %retval
1354 define i1 @auto_gen_120(double %a, double %b) {
1355 ; CHECK-LABEL: @auto_gen_120(
1356 ; CHECK-NEXT:    ret i1 false
1358   %cmp = fcmp true double %a, %b
1359   %cmp1 = fcmp false double %a, %b
1360   %retval = and i1 %cmp, %cmp1
1361   ret i1 %retval
1364 define i1 @auto_gen_121(double %a, double %b) {
1365 ; CHECK-LABEL: @auto_gen_121(
1366 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1367 ; CHECK-NEXT:    ret i1 [[CMP1]]
1369   %cmp = fcmp true double %a, %b
1370   %cmp1 = fcmp oeq double %a, %b
1371   %retval = and i1 %cmp, %cmp1
1372   ret i1 %retval
1375 define i1 @auto_gen_122(double %a, double %b) {
1376 ; CHECK-LABEL: @auto_gen_122(
1377 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1378 ; CHECK-NEXT:    ret i1 [[CMP1]]
1380   %cmp = fcmp true double %a, %b
1381   %cmp1 = fcmp ogt double %a, %b
1382   %retval = and i1 %cmp, %cmp1
1383   ret i1 %retval
1386 define i1 @auto_gen_123(double %a, double %b) {
1387 ; CHECK-LABEL: @auto_gen_123(
1388 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1389 ; CHECK-NEXT:    ret i1 [[CMP1]]
1391   %cmp = fcmp true double %a, %b
1392   %cmp1 = fcmp oge double %a, %b
1393   %retval = and i1 %cmp, %cmp1
1394   ret i1 %retval
1397 define i1 @auto_gen_124(double %a, double %b) {
1398 ; CHECK-LABEL: @auto_gen_124(
1399 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1400 ; CHECK-NEXT:    ret i1 [[CMP1]]
1402   %cmp = fcmp true double %a, %b
1403   %cmp1 = fcmp olt double %a, %b
1404   %retval = and i1 %cmp, %cmp1
1405   ret i1 %retval
1408 define i1 @auto_gen_125(double %a, double %b) {
1409 ; CHECK-LABEL: @auto_gen_125(
1410 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1411 ; CHECK-NEXT:    ret i1 [[CMP1]]
1413   %cmp = fcmp true double %a, %b
1414   %cmp1 = fcmp ole double %a, %b
1415   %retval = and i1 %cmp, %cmp1
1416   ret i1 %retval
1419 define i1 @auto_gen_126(double %a, double %b) {
1420 ; CHECK-LABEL: @auto_gen_126(
1421 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1422 ; CHECK-NEXT:    ret i1 [[CMP1]]
1424   %cmp = fcmp true double %a, %b
1425   %cmp1 = fcmp one double %a, %b
1426   %retval = and i1 %cmp, %cmp1
1427   ret i1 %retval
1430 define i1 @auto_gen_127(double %a, double %b) {
1431 ; CHECK-LABEL: @auto_gen_127(
1432 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1433 ; CHECK-NEXT:    ret i1 [[CMP1]]
1435   %cmp = fcmp true double %a, %b
1436   %cmp1 = fcmp ord double %a, %b
1437   %retval = and i1 %cmp, %cmp1
1438   ret i1 %retval
1441 define i1 @auto_gen_128(double %a, double %b) {
1442 ; CHECK-LABEL: @auto_gen_128(
1443 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1444 ; CHECK-NEXT:    ret i1 [[CMP1]]
1446   %cmp = fcmp true double %a, %b
1447   %cmp1 = fcmp ueq double %a, %b
1448   %retval = and i1 %cmp, %cmp1
1449   ret i1 %retval
1452 define i1 @auto_gen_129(double %a, double %b) {
1453 ; CHECK-LABEL: @auto_gen_129(
1454 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1455 ; CHECK-NEXT:    ret i1 [[CMP1]]
1457   %cmp = fcmp true double %a, %b
1458   %cmp1 = fcmp ugt double %a, %b
1459   %retval = and i1 %cmp, %cmp1
1460   ret i1 %retval
1463 define i1 @auto_gen_130(double %a, double %b) {
1464 ; CHECK-LABEL: @auto_gen_130(
1465 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1466 ; CHECK-NEXT:    ret i1 [[CMP1]]
1468   %cmp = fcmp true double %a, %b
1469   %cmp1 = fcmp uge double %a, %b
1470   %retval = and i1 %cmp, %cmp1
1471   ret i1 %retval
1474 define i1 @auto_gen_131(double %a, double %b) {
1475 ; CHECK-LABEL: @auto_gen_131(
1476 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1477 ; CHECK-NEXT:    ret i1 [[CMP1]]
1479   %cmp = fcmp true double %a, %b
1480   %cmp1 = fcmp ult double %a, %b
1481   %retval = and i1 %cmp, %cmp1
1482   ret i1 %retval
1485 define i1 @auto_gen_132(double %a, double %b) {
1486 ; CHECK-LABEL: @auto_gen_132(
1487 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1488 ; CHECK-NEXT:    ret i1 [[CMP1]]
1490   %cmp = fcmp true double %a, %b
1491   %cmp1 = fcmp ule double %a, %b
1492   %retval = and i1 %cmp, %cmp1
1493   ret i1 %retval
1496 define i1 @auto_gen_133(double %a, double %b) {
1497 ; CHECK-LABEL: @auto_gen_133(
1498 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1499 ; CHECK-NEXT:    ret i1 [[CMP1]]
1501   %cmp = fcmp true double %a, %b
1502   %cmp1 = fcmp une double %a, %b
1503   %retval = and i1 %cmp, %cmp1
1504   ret i1 %retval
1507 define i1 @auto_gen_134(double %a, double %b) {
1508 ; CHECK-LABEL: @auto_gen_134(
1509 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1510 ; CHECK-NEXT:    ret i1 [[CMP1]]
1512   %cmp = fcmp true double %a, %b
1513   %cmp1 = fcmp uno double %a, %b
1514   %retval = and i1 %cmp, %cmp1
1515   ret i1 %retval
1518 define i1 @auto_gen_135(double %a, double %b) {
1519 ; CHECK-LABEL: @auto_gen_135(
1520 ; CHECK-NEXT:    ret i1 true
1522   %cmp = fcmp true double %a, %b
1523   %cmp1 = fcmp true double %a, %b
1524   %retval = and i1 %cmp, %cmp1
1525   ret i1 %retval