[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / InstCombine / and-fcmp.ll
blob86444288200a5377bfedc071423cf3b1b84206d0
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 ; TODO: this can be supported by freezing %y
16 define i1 @PR1738_logical(double %x, double %y) {
17 ; CHECK-LABEL: @PR1738_logical(
18 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double [[X:%.*]], 0.000000e+00
19 ; CHECK-NEXT:    [[CMP2:%.*]] = fcmp ord double [[Y:%.*]], 0.000000e+00
20 ; CHECK-NEXT:    [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false
21 ; CHECK-NEXT:    ret i1 [[AND]]
23   %cmp1 = fcmp ord double %x, 0.0
24   %cmp2 = fcmp ord double %y, 0.0
25   %and = select i1 %cmp1, i1 %cmp2, i1 false
26   ret i1 %and
29 define i1 @PR1738_logical_noundef(double %x, double noundef %y) {
30 ; CHECK-LABEL: @PR1738_logical_noundef(
31 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]]
32 ; CHECK-NEXT:    ret i1 [[TMP1]]
34   %cmp1 = fcmp ord double %x, 0.0
35   %cmp2 = fcmp ord double %y, 0.0
36   %and = select i1 %cmp1, i1 %cmp2, i1 false
37   ret i1 %and
40 define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) {
41 ; CHECK-LABEL: @PR1738_vec_undef(
42 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord <2 x double> [[X:%.*]], [[Y:%.*]]
43 ; CHECK-NEXT:    ret <2 x i1> [[TMP1]]
45   %cmp1 = fcmp ord <2 x double> %x, <double 0.0, double undef>
46   %cmp2 = fcmp ord <2 x double> %y, <double undef, double 0.0>
47   %or = and <2 x i1> %cmp1, %cmp2
48   ret <2 x i1> %or
51 define i1 @PR41069(i1 %z, float %c, float %d) {
52 ; CHECK-LABEL: @PR41069(
53 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord float [[D:%.*]], [[C:%.*]]
54 ; CHECK-NEXT:    [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]
55 ; CHECK-NEXT:    ret i1 [[R]]
57   %ord1 = fcmp arcp ord float %c, 0.0
58   %and = and i1 %ord1, %z
59   %ord2 = fcmp afn ord float %d, 0.0
60   %r = and i1 %and, %ord2
61   ret i1 %r
64 ; FIXME: this can be supported by freezing %d
65 define i1 @PR41069_logical(i1 %z, float %c, float %d) {
66 ; CHECK-LABEL: @PR41069_logical(
67 ; CHECK-NEXT:    [[ORD1:%.*]] = fcmp arcp ord float [[C:%.*]], 0.000000e+00
68 ; CHECK-NEXT:    [[AND:%.*]] = select i1 [[ORD1]], i1 [[Z:%.*]], i1 false
69 ; CHECK-NEXT:    [[ORD2:%.*]] = fcmp afn ord float [[D:%.*]], 0.000000e+00
70 ; CHECK-NEXT:    [[R:%.*]] = select i1 [[AND]], i1 [[ORD2]], i1 false
71 ; CHECK-NEXT:    ret i1 [[R]]
73   %ord1 = fcmp arcp ord float %c, 0.0
74   %and = select i1 %ord1, i1 %z, i1 false
75   %ord2 = fcmp afn ord float %d, 0.0
76   %r = select i1 %and, i1 %ord2, i1 false
77   ret i1 %r
80 define i1 @PR41069_commute(i1 %z, float %c, float %d) {
81 ; CHECK-LABEL: @PR41069_commute(
82 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ninf ord float [[D:%.*]], [[C:%.*]]
83 ; CHECK-NEXT:    [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]
84 ; CHECK-NEXT:    ret i1 [[R]]
86   %ord1 = fcmp ninf ord float %c, 0.0
87   %and = and i1 %ord1, %z
88   %ord2 = fcmp ninf reassoc ord float %d, 0.0
89   %r = and i1 %ord2, %and
90   ret i1 %r
93 ; TODO: this should be fixed using freeze
94 define i1 @PR41069_commute_logical(i1 %z, float %c, float %d) {
95 ; CHECK-LABEL: @PR41069_commute_logical(
96 ; CHECK-NEXT:    [[ORD1:%.*]] = fcmp ninf ord float [[C:%.*]], 0.000000e+00
97 ; CHECK-NEXT:    [[ORD2:%.*]] = fcmp reassoc ninf ord float [[D:%.*]], 0.000000e+00
98 ; CHECK-NEXT:    [[TMP1:%.*]] = select i1 [[ORD2]], i1 [[ORD1]], i1 false
99 ; CHECK-NEXT:    [[R:%.*]] = select i1 [[TMP1]], i1 [[Z:%.*]], i1 false
100 ; CHECK-NEXT:    ret i1 [[R]]
102   %ord1 = fcmp ninf ord float %c, 0.0
103   %and = select i1 %ord1, i1 %z, i1 false
104   %ord2 = fcmp ninf reassoc ord float %d, 0.0
105   %r = select i1 %ord2, i1 %and, i1 false
106   ret i1 %r
109 ; Commute differently and make sure vectors work.
111 define <2 x i1> @PR41069_vec(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {
112 ; CHECK-LABEL: @PR41069_vec(
113 ; CHECK-NEXT:    [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]
114 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord <2 x double> [[D:%.*]], [[C:%.*]]
115 ; CHECK-NEXT:    [[R:%.*]] = and <2 x i1> [[TMP1]], [[ORD1]]
116 ; CHECK-NEXT:    ret <2 x i1> [[R]]
118   %ord1 = fcmp ord <2 x double> %a, %b
119   %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>
120   %and = and <2 x i1> %ord1, %ord2
121   %ord3 = fcmp ord <2 x double> %d, zeroinitializer
122   %r = and <2 x i1> %and, %ord3
123   ret <2 x i1> %r
126 define <2 x i1> @PR41069_vec_commute(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {
127 ; CHECK-LABEL: @PR41069_vec_commute(
128 ; CHECK-NEXT:    [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]
129 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord <2 x double> [[D:%.*]], [[C:%.*]]
130 ; CHECK-NEXT:    [[R:%.*]] = and <2 x i1> [[TMP1]], [[ORD1]]
131 ; CHECK-NEXT:    ret <2 x i1> [[R]]
133   %ord1 = fcmp ord <2 x double> %a, %b
134   %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>
135   %and = and <2 x i1> %ord1, %ord2
136   %ord3 = fcmp ord <2 x double> %d, zeroinitializer
137   %r = and <2 x i1> %ord3, %and
138   ret <2 x i1> %r
141 define i1 @PR15737(float %a, double %b) {
142 ; CHECK-LABEL: @PR15737(
143 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00
144 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00
145 ; CHECK-NEXT:    [[AND:%.*]] = and i1 [[CMP]], [[CMP1]]
146 ; CHECK-NEXT:    ret i1 [[AND]]
148   %cmp = fcmp ord float %a, 0.000000e+00
149   %cmp1 = fcmp ord double %b, 0.000000e+00
150   %and = and i1 %cmp, %cmp1
151   ret i1 %and
154 define i1 @PR15737_logical(float %a, double %b) {
155 ; CHECK-LABEL: @PR15737_logical(
156 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00
157 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00
158 ; CHECK-NEXT:    [[AND:%.*]] = select i1 [[CMP]], i1 [[CMP1]], i1 false
159 ; CHECK-NEXT:    ret i1 [[AND]]
161   %cmp = fcmp ord float %a, 0.000000e+00
162   %cmp1 = fcmp ord double %b, 0.000000e+00
163   %and = select i1 %cmp, i1 %cmp1, i1 false
164   ret i1 %and
167 define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) {
168 ; CHECK-LABEL: @t9(
169 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord <2 x float> [[A:%.*]], zeroinitializer
170 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord <2 x double> [[B:%.*]], zeroinitializer
171 ; CHECK-NEXT:    [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]]
172 ; CHECK-NEXT:    ret <2 x i1> [[AND]]
174   %cmp = fcmp ord <2 x float> %a, zeroinitializer
175   %cmp1 = fcmp ord <2 x double> %b, zeroinitializer
176   %and = and <2 x i1> %cmp, %cmp1
177   ret <2 x i1> %and
180 define i1 @fcmp_ord_nonzero(float %x, float %y) {
181 ; CHECK-LABEL: @fcmp_ord_nonzero(
182 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord float [[X:%.*]], [[Y:%.*]]
183 ; CHECK-NEXT:    ret i1 [[TMP1]]
185   %cmp1 = fcmp ord float %x, 1.0
186   %cmp2 = fcmp ord float %y, 2.0
187   %and = and i1 %cmp1, %cmp2
188   ret i1 %and
191 ; TODO: this can be supported by freezing %y
192 define i1 @fcmp_ord_nonzero_logical(float %x, float %y) {
193 ; CHECK-LABEL: @fcmp_ord_nonzero_logical(
194 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord float [[X:%.*]], 0.000000e+00
195 ; CHECK-NEXT:    [[CMP2:%.*]] = fcmp ord float [[Y:%.*]], 0.000000e+00
196 ; CHECK-NEXT:    [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false
197 ; CHECK-NEXT:    ret i1 [[AND]]
199   %cmp1 = fcmp ord float %x, 1.0
200   %cmp2 = fcmp ord float %y, 2.0
201   %and = select i1 %cmp1, i1 %cmp2, i1 false
202   ret i1 %and
205 define <3 x i1> @fcmp_ord_nonzero_vec(<3 x float> %x, <3 x float> %y) {
206 ; CHECK-LABEL: @fcmp_ord_nonzero_vec(
207 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord <3 x float> [[X:%.*]], [[Y:%.*]]
208 ; CHECK-NEXT:    ret <3 x i1> [[TMP1]]
210   %cmp1 = fcmp ord <3 x float> %x, <float 1.0, float 2.0, float 3.0>
211   %cmp2 = fcmp ord <3 x float> %y, <float 3.0, float 2.0, float 1.0>
212   %and = and <3 x i1> %cmp1, %cmp2
213   ret <3 x i1> %and
216 define i1 @auto_gen_0(double %a, double %b) {
217 ; CHECK-LABEL: @auto_gen_0(
218 ; CHECK-NEXT:    ret i1 false
220   %cmp = fcmp false double %a, %b
221   %cmp1 = fcmp false double %a, %b
222   %retval = and i1 %cmp, %cmp1
223   ret i1 %retval
226 define i1 @auto_gen_0_logical(double %a, double %b) {
227 ; CHECK-LABEL: @auto_gen_0_logical(
228 ; CHECK-NEXT:    ret i1 false
230   %cmp = fcmp false double %a, %b
231   %cmp1 = fcmp false double %a, %b
232   %retval = select i1 %cmp, i1 %cmp1, i1 false
233   ret i1 %retval
236 define i1 @auto_gen_1(double %a, double %b) {
237 ; CHECK-LABEL: @auto_gen_1(
238 ; CHECK-NEXT:    ret i1 false
240   %cmp = fcmp oeq double %a, %b
241   %cmp1 = fcmp false double %a, %b
242   %retval = and i1 %cmp, %cmp1
243   ret i1 %retval
246 define i1 @auto_gen_1_logical(double %a, double %b) {
247 ; CHECK-LABEL: @auto_gen_1_logical(
248 ; CHECK-NEXT:    ret i1 false
250   %cmp = fcmp oeq double %a, %b
251   %cmp1 = fcmp false double %a, %b
252   %retval = select i1 %cmp, i1 %cmp1, i1 false
253   ret i1 %retval
256 define i1 @auto_gen_2(double %a, double %b) {
257 ; CHECK-LABEL: @auto_gen_2(
258 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
259 ; CHECK-NEXT:    ret i1 [[TMP1]]
261   %cmp = fcmp oeq double %a, %b
262   %cmp1 = fcmp oeq double %a, %b
263   %retval = and i1 %cmp, %cmp1
264   ret i1 %retval
267 define i1 @auto_gen_2_logical(double %a, double %b) {
268 ; CHECK-LABEL: @auto_gen_2_logical(
269 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
270 ; CHECK-NEXT:    ret i1 [[TMP1]]
272   %cmp = fcmp oeq double %a, %b
273   %cmp1 = fcmp oeq double %a, %b
274   %retval = select i1 %cmp, i1 %cmp1, i1 false
275   ret i1 %retval
278 define i1 @auto_gen_3(double %a, double %b) {
279 ; CHECK-LABEL: @auto_gen_3(
280 ; CHECK-NEXT:    ret i1 false
282   %cmp = fcmp ogt double %a, %b
283   %cmp1 = fcmp false double %a, %b
284   %retval = and i1 %cmp, %cmp1
285   ret i1 %retval
288 define i1 @auto_gen_3_logical(double %a, double %b) {
289 ; CHECK-LABEL: @auto_gen_3_logical(
290 ; CHECK-NEXT:    ret i1 false
292   %cmp = fcmp ogt double %a, %b
293   %cmp1 = fcmp false double %a, %b
294   %retval = select i1 %cmp, i1 %cmp1, i1 false
295   ret i1 %retval
298 define i1 @auto_gen_4(double %a, double %b) {
299 ; CHECK-LABEL: @auto_gen_4(
300 ; CHECK-NEXT:    ret i1 false
302   %cmp = fcmp ogt double %a, %b
303   %cmp1 = fcmp oeq double %a, %b
304   %retval = and i1 %cmp, %cmp1
305   ret i1 %retval
308 define i1 @auto_gen_4_logical(double %a, double %b) {
309 ; CHECK-LABEL: @auto_gen_4_logical(
310 ; CHECK-NEXT:    ret i1 false
312   %cmp = fcmp ogt double %a, %b
313   %cmp1 = fcmp oeq double %a, %b
314   %retval = select i1 %cmp, i1 %cmp1, i1 false
315   ret i1 %retval
318 define i1 @auto_gen_5(double %a, double %b) {
319 ; CHECK-LABEL: @auto_gen_5(
320 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
321 ; CHECK-NEXT:    ret i1 [[TMP1]]
323   %cmp = fcmp ogt double %a, %b
324   %cmp1 = fcmp ogt double %a, %b
325   %retval = and i1 %cmp, %cmp1
326   ret i1 %retval
329 define i1 @auto_gen_5_logical(double %a, double %b) {
330 ; CHECK-LABEL: @auto_gen_5_logical(
331 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
332 ; CHECK-NEXT:    ret i1 [[TMP1]]
334   %cmp = fcmp ogt double %a, %b
335   %cmp1 = fcmp ogt double %a, %b
336   %retval = select i1 %cmp, i1 %cmp1, i1 false
337   ret i1 %retval
340 define i1 @auto_gen_6(double %a, double %b) {
341 ; CHECK-LABEL: @auto_gen_6(
342 ; CHECK-NEXT:    ret i1 false
344   %cmp = fcmp oge double %a, %b
345   %cmp1 = fcmp false double %a, %b
346   %retval = and i1 %cmp, %cmp1
347   ret i1 %retval
350 define i1 @auto_gen_6_logical(double %a, double %b) {
351 ; CHECK-LABEL: @auto_gen_6_logical(
352 ; CHECK-NEXT:    ret i1 false
354   %cmp = fcmp oge double %a, %b
355   %cmp1 = fcmp false double %a, %b
356   %retval = select i1 %cmp, i1 %cmp1, i1 false
357   ret i1 %retval
360 define i1 @auto_gen_7(double %a, double %b) {
361 ; CHECK-LABEL: @auto_gen_7(
362 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
363 ; CHECK-NEXT:    ret i1 [[TMP1]]
365   %cmp = fcmp oge double %a, %b
366   %cmp1 = fcmp oeq double %a, %b
367   %retval = and i1 %cmp, %cmp1
368   ret i1 %retval
371 define i1 @auto_gen_7_logical(double %a, double %b) {
372 ; CHECK-LABEL: @auto_gen_7_logical(
373 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
374 ; CHECK-NEXT:    ret i1 [[TMP1]]
376   %cmp = fcmp oge double %a, %b
377   %cmp1 = fcmp oeq double %a, %b
378   %retval = select i1 %cmp, i1 %cmp1, i1 false
379   ret i1 %retval
382 define i1 @auto_gen_8(double %a, double %b) {
383 ; CHECK-LABEL: @auto_gen_8(
384 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
385 ; CHECK-NEXT:    ret i1 [[TMP1]]
387   %cmp = fcmp oge double %a, %b
388   %cmp1 = fcmp ogt double %a, %b
389   %retval = and i1 %cmp, %cmp1
390   ret i1 %retval
393 define i1 @auto_gen_8_logical(double %a, double %b) {
394 ; CHECK-LABEL: @auto_gen_8_logical(
395 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
396 ; CHECK-NEXT:    ret i1 [[TMP1]]
398   %cmp = fcmp oge double %a, %b
399   %cmp1 = fcmp ogt double %a, %b
400   %retval = select i1 %cmp, i1 %cmp1, i1 false
401   ret i1 %retval
404 define i1 @auto_gen_9(double %a, double %b) {
405 ; CHECK-LABEL: @auto_gen_9(
406 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
407 ; CHECK-NEXT:    ret i1 [[TMP1]]
409   %cmp = fcmp oge double %a, %b
410   %cmp1 = fcmp oge double %a, %b
411   %retval = and i1 %cmp, %cmp1
412   ret i1 %retval
415 define i1 @auto_gen_9_logical(double %a, double %b) {
416 ; CHECK-LABEL: @auto_gen_9_logical(
417 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
418 ; CHECK-NEXT:    ret i1 [[TMP1]]
420   %cmp = fcmp oge double %a, %b
421   %cmp1 = fcmp oge double %a, %b
422   %retval = select i1 %cmp, i1 %cmp1, i1 false
423   ret i1 %retval
426 define i1 @auto_gen_10(double %a, double %b) {
427 ; CHECK-LABEL: @auto_gen_10(
428 ; CHECK-NEXT:    ret i1 false
430   %cmp = fcmp olt double %a, %b
431   %cmp1 = fcmp false double %a, %b
432   %retval = and i1 %cmp, %cmp1
433   ret i1 %retval
436 define i1 @auto_gen_10_logical(double %a, double %b) {
437 ; CHECK-LABEL: @auto_gen_10_logical(
438 ; CHECK-NEXT:    ret i1 false
440   %cmp = fcmp olt double %a, %b
441   %cmp1 = fcmp false double %a, %b
442   %retval = select i1 %cmp, i1 %cmp1, i1 false
443   ret i1 %retval
446 define i1 @auto_gen_11(double %a, double %b) {
447 ; CHECK-LABEL: @auto_gen_11(
448 ; CHECK-NEXT:    ret i1 false
450   %cmp = fcmp olt double %a, %b
451   %cmp1 = fcmp oeq double %a, %b
452   %retval = and i1 %cmp, %cmp1
453   ret i1 %retval
456 define i1 @auto_gen_11_logical(double %a, double %b) {
457 ; CHECK-LABEL: @auto_gen_11_logical(
458 ; CHECK-NEXT:    ret i1 false
460   %cmp = fcmp olt double %a, %b
461   %cmp1 = fcmp oeq double %a, %b
462   %retval = select i1 %cmp, i1 %cmp1, i1 false
463   ret i1 %retval
466 define i1 @auto_gen_12(double %a, double %b) {
467 ; CHECK-LABEL: @auto_gen_12(
468 ; CHECK-NEXT:    ret i1 false
470   %cmp = fcmp olt double %a, %b
471   %cmp1 = fcmp ogt double %a, %b
472   %retval = and i1 %cmp, %cmp1
473   ret i1 %retval
476 define i1 @auto_gen_12_logical(double %a, double %b) {
477 ; CHECK-LABEL: @auto_gen_12_logical(
478 ; CHECK-NEXT:    ret i1 false
480   %cmp = fcmp olt double %a, %b
481   %cmp1 = fcmp ogt double %a, %b
482   %retval = select i1 %cmp, i1 %cmp1, i1 false
483   ret i1 %retval
486 define i1 @auto_gen_13(double %a, double %b) {
487 ; CHECK-LABEL: @auto_gen_13(
488 ; CHECK-NEXT:    ret i1 false
490   %cmp = fcmp olt double %a, %b
491   %cmp1 = fcmp oge double %a, %b
492   %retval = and i1 %cmp, %cmp1
493   ret i1 %retval
496 define i1 @auto_gen_13_logical(double %a, double %b) {
497 ; CHECK-LABEL: @auto_gen_13_logical(
498 ; CHECK-NEXT:    ret i1 false
500   %cmp = fcmp olt double %a, %b
501   %cmp1 = fcmp oge double %a, %b
502   %retval = select i1 %cmp, i1 %cmp1, i1 false
503   ret i1 %retval
506 define i1 @auto_gen_14(double %a, double %b) {
507 ; CHECK-LABEL: @auto_gen_14(
508 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
509 ; CHECK-NEXT:    ret i1 [[TMP1]]
511   %cmp = fcmp olt double %a, %b
512   %cmp1 = fcmp olt double %a, %b
513   %retval = and i1 %cmp, %cmp1
514   ret i1 %retval
517 define i1 @auto_gen_14_logical(double %a, double %b) {
518 ; CHECK-LABEL: @auto_gen_14_logical(
519 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
520 ; CHECK-NEXT:    ret i1 [[TMP1]]
522   %cmp = fcmp olt double %a, %b
523   %cmp1 = fcmp olt double %a, %b
524   %retval = select i1 %cmp, i1 %cmp1, i1 false
525   ret i1 %retval
528 define i1 @auto_gen_15(double %a, double %b) {
529 ; CHECK-LABEL: @auto_gen_15(
530 ; CHECK-NEXT:    ret i1 false
532   %cmp = fcmp ole double %a, %b
533   %cmp1 = fcmp false double %a, %b
534   %retval = and i1 %cmp, %cmp1
535   ret i1 %retval
538 define i1 @auto_gen_15_logical(double %a, double %b) {
539 ; CHECK-LABEL: @auto_gen_15_logical(
540 ; CHECK-NEXT:    ret i1 false
542   %cmp = fcmp ole double %a, %b
543   %cmp1 = fcmp false double %a, %b
544   %retval = select i1 %cmp, i1 %cmp1, i1 false
545   ret i1 %retval
548 define i1 @auto_gen_16(double %a, double %b) {
549 ; CHECK-LABEL: @auto_gen_16(
550 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
551 ; CHECK-NEXT:    ret i1 [[TMP1]]
553   %cmp = fcmp ole double %a, %b
554   %cmp1 = fcmp oeq double %a, %b
555   %retval = and i1 %cmp, %cmp1
556   ret i1 %retval
559 define i1 @auto_gen_16_logical(double %a, double %b) {
560 ; CHECK-LABEL: @auto_gen_16_logical(
561 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
562 ; CHECK-NEXT:    ret i1 [[TMP1]]
564   %cmp = fcmp ole double %a, %b
565   %cmp1 = fcmp oeq double %a, %b
566   %retval = select i1 %cmp, i1 %cmp1, i1 false
567   ret i1 %retval
570 define i1 @auto_gen_17(double %a, double %b) {
571 ; CHECK-LABEL: @auto_gen_17(
572 ; CHECK-NEXT:    ret i1 false
574   %cmp = fcmp ole double %a, %b
575   %cmp1 = fcmp ogt double %a, %b
576   %retval = and i1 %cmp, %cmp1
577   ret i1 %retval
580 define i1 @auto_gen_17_logical(double %a, double %b) {
581 ; CHECK-LABEL: @auto_gen_17_logical(
582 ; CHECK-NEXT:    ret i1 false
584   %cmp = fcmp ole double %a, %b
585   %cmp1 = fcmp ogt double %a, %b
586   %retval = select i1 %cmp, i1 %cmp1, i1 false
587   ret i1 %retval
590 define i1 @auto_gen_18(double %a, double %b) {
591 ; CHECK-LABEL: @auto_gen_18(
592 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
593 ; CHECK-NEXT:    ret i1 [[TMP1]]
595   %cmp = fcmp ole double %a, %b
596   %cmp1 = fcmp oge double %a, %b
597   %retval = and i1 %cmp, %cmp1
598   ret i1 %retval
601 define i1 @auto_gen_18_logical(double %a, double %b) {
602 ; CHECK-LABEL: @auto_gen_18_logical(
603 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
604 ; CHECK-NEXT:    ret i1 [[TMP1]]
606   %cmp = fcmp ole double %a, %b
607   %cmp1 = fcmp oge double %a, %b
608   %retval = select i1 %cmp, i1 %cmp1, i1 false
609   ret i1 %retval
612 define i1 @auto_gen_19(double %a, double %b) {
613 ; CHECK-LABEL: @auto_gen_19(
614 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
615 ; CHECK-NEXT:    ret i1 [[TMP1]]
617   %cmp = fcmp ole double %a, %b
618   %cmp1 = fcmp olt double %a, %b
619   %retval = and i1 %cmp, %cmp1
620   ret i1 %retval
623 define i1 @auto_gen_19_logical(double %a, double %b) {
624 ; CHECK-LABEL: @auto_gen_19_logical(
625 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
626 ; CHECK-NEXT:    ret i1 [[TMP1]]
628   %cmp = fcmp ole double %a, %b
629   %cmp1 = fcmp olt double %a, %b
630   %retval = select i1 %cmp, i1 %cmp1, i1 false
631   ret i1 %retval
634 define i1 @auto_gen_20(double %a, double %b) {
635 ; CHECK-LABEL: @auto_gen_20(
636 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
637 ; CHECK-NEXT:    ret i1 [[TMP1]]
639   %cmp = fcmp ole double %a, %b
640   %cmp1 = fcmp ole double %a, %b
641   %retval = and i1 %cmp, %cmp1
642   ret i1 %retval
645 define i1 @auto_gen_20_logical(double %a, double %b) {
646 ; CHECK-LABEL: @auto_gen_20_logical(
647 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
648 ; CHECK-NEXT:    ret i1 [[TMP1]]
650   %cmp = fcmp ole double %a, %b
651   %cmp1 = fcmp ole double %a, %b
652   %retval = select i1 %cmp, i1 %cmp1, i1 false
653   ret i1 %retval
656 define i1 @auto_gen_21(double %a, double %b) {
657 ; CHECK-LABEL: @auto_gen_21(
658 ; CHECK-NEXT:    ret i1 false
660   %cmp = fcmp one double %a, %b
661   %cmp1 = fcmp false double %a, %b
662   %retval = and i1 %cmp, %cmp1
663   ret i1 %retval
666 define i1 @auto_gen_21_logical(double %a, double %b) {
667 ; CHECK-LABEL: @auto_gen_21_logical(
668 ; CHECK-NEXT:    ret i1 false
670   %cmp = fcmp one double %a, %b
671   %cmp1 = fcmp false double %a, %b
672   %retval = select i1 %cmp, i1 %cmp1, i1 false
673   ret i1 %retval
676 define i1 @auto_gen_22(double %a, double %b) {
677 ; CHECK-LABEL: @auto_gen_22(
678 ; CHECK-NEXT:    ret i1 false
680   %cmp = fcmp one double %a, %b
681   %cmp1 = fcmp oeq double %a, %b
682   %retval = and i1 %cmp, %cmp1
683   ret i1 %retval
686 define i1 @auto_gen_22_logical(double %a, double %b) {
687 ; CHECK-LABEL: @auto_gen_22_logical(
688 ; CHECK-NEXT:    ret i1 false
690   %cmp = fcmp one double %a, %b
691   %cmp1 = fcmp oeq double %a, %b
692   %retval = select i1 %cmp, i1 %cmp1, i1 false
693   ret i1 %retval
696 define i1 @auto_gen_23(double %a, double %b) {
697 ; CHECK-LABEL: @auto_gen_23(
698 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
699 ; CHECK-NEXT:    ret i1 [[TMP1]]
701   %cmp = fcmp one double %a, %b
702   %cmp1 = fcmp ogt double %a, %b
703   %retval = and i1 %cmp, %cmp1
704   ret i1 %retval
707 define i1 @auto_gen_23_logical(double %a, double %b) {
708 ; CHECK-LABEL: @auto_gen_23_logical(
709 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
710 ; CHECK-NEXT:    ret i1 [[TMP1]]
712   %cmp = fcmp one double %a, %b
713   %cmp1 = fcmp ogt double %a, %b
714   %retval = select i1 %cmp, i1 %cmp1, i1 false
715   ret i1 %retval
718 define i1 @auto_gen_24(double %a, double %b) {
719 ; CHECK-LABEL: @auto_gen_24(
720 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
721 ; CHECK-NEXT:    ret i1 [[TMP1]]
723   %cmp = fcmp one double %a, %b
724   %cmp1 = fcmp oge double %a, %b
725   %retval = and i1 %cmp, %cmp1
726   ret i1 %retval
729 define i1 @auto_gen_24_logical(double %a, double %b) {
730 ; CHECK-LABEL: @auto_gen_24_logical(
731 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
732 ; CHECK-NEXT:    ret i1 [[TMP1]]
734   %cmp = fcmp one double %a, %b
735   %cmp1 = fcmp oge double %a, %b
736   %retval = select i1 %cmp, i1 %cmp1, i1 false
737   ret i1 %retval
740 define i1 @auto_gen_25(double %a, double %b) {
741 ; CHECK-LABEL: @auto_gen_25(
742 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
743 ; CHECK-NEXT:    ret i1 [[TMP1]]
745   %cmp = fcmp one double %a, %b
746   %cmp1 = fcmp olt double %a, %b
747   %retval = and i1 %cmp, %cmp1
748   ret i1 %retval
751 define i1 @auto_gen_25_logical(double %a, double %b) {
752 ; CHECK-LABEL: @auto_gen_25_logical(
753 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
754 ; CHECK-NEXT:    ret i1 [[TMP1]]
756   %cmp = fcmp one double %a, %b
757   %cmp1 = fcmp olt double %a, %b
758   %retval = select i1 %cmp, i1 %cmp1, i1 false
759   ret i1 %retval
762 define i1 @auto_gen_26(double %a, double %b) {
763 ; CHECK-LABEL: @auto_gen_26(
764 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
765 ; CHECK-NEXT:    ret i1 [[TMP1]]
767   %cmp = fcmp one double %a, %b
768   %cmp1 = fcmp ole double %a, %b
769   %retval = and i1 %cmp, %cmp1
770   ret i1 %retval
773 define i1 @auto_gen_26_logical(double %a, double %b) {
774 ; CHECK-LABEL: @auto_gen_26_logical(
775 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
776 ; CHECK-NEXT:    ret i1 [[TMP1]]
778   %cmp = fcmp one double %a, %b
779   %cmp1 = fcmp ole double %a, %b
780   %retval = select i1 %cmp, i1 %cmp1, i1 false
781   ret i1 %retval
784 define i1 @auto_gen_27(double %a, double %b) {
785 ; CHECK-LABEL: @auto_gen_27(
786 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
787 ; CHECK-NEXT:    ret i1 [[TMP1]]
789   %cmp = fcmp one double %a, %b
790   %cmp1 = fcmp one double %a, %b
791   %retval = and i1 %cmp, %cmp1
792   ret i1 %retval
795 define i1 @auto_gen_27_logical(double %a, double %b) {
796 ; CHECK-LABEL: @auto_gen_27_logical(
797 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
798 ; CHECK-NEXT:    ret i1 [[TMP1]]
800   %cmp = fcmp one double %a, %b
801   %cmp1 = fcmp one double %a, %b
802   %retval = select i1 %cmp, i1 %cmp1, i1 false
803   ret i1 %retval
806 define i1 @auto_gen_28(double %a, double %b) {
807 ; CHECK-LABEL: @auto_gen_28(
808 ; CHECK-NEXT:    ret i1 false
810   %cmp = fcmp ord double %a, %b
811   %cmp1 = fcmp false double %a, %b
812   %retval = and i1 %cmp, %cmp1
813   ret i1 %retval
816 define i1 @auto_gen_28_logical(double %a, double %b) {
817 ; CHECK-LABEL: @auto_gen_28_logical(
818 ; CHECK-NEXT:    ret i1 false
820   %cmp = fcmp ord double %a, %b
821   %cmp1 = fcmp false double %a, %b
822   %retval = select i1 %cmp, i1 %cmp1, i1 false
823   ret i1 %retval
826 define i1 @auto_gen_29(double %a, double %b) {
827 ; CHECK-LABEL: @auto_gen_29(
828 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
829 ; CHECK-NEXT:    ret i1 [[TMP1]]
831   %cmp = fcmp ord double %a, %b
832   %cmp1 = fcmp oeq double %a, %b
833   %retval = and i1 %cmp, %cmp1
834   ret i1 %retval
837 define i1 @auto_gen_29_logical(double %a, double %b) {
838 ; CHECK-LABEL: @auto_gen_29_logical(
839 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
840 ; CHECK-NEXT:    ret i1 [[TMP1]]
842   %cmp = fcmp ord double %a, %b
843   %cmp1 = fcmp oeq double %a, %b
844   %retval = select i1 %cmp, i1 %cmp1, i1 false
845   ret i1 %retval
848 define i1 @auto_gen_30(double %a, double %b) {
849 ; CHECK-LABEL: @auto_gen_30(
850 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
851 ; CHECK-NEXT:    ret i1 [[TMP1]]
853   %cmp = fcmp ord double %a, %b
854   %cmp1 = fcmp ogt double %a, %b
855   %retval = and i1 %cmp, %cmp1
856   ret i1 %retval
859 define i1 @auto_gen_30_logical(double %a, double %b) {
860 ; CHECK-LABEL: @auto_gen_30_logical(
861 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
862 ; CHECK-NEXT:    ret i1 [[TMP1]]
864   %cmp = fcmp ord double %a, %b
865   %cmp1 = fcmp ogt double %a, %b
866   %retval = select i1 %cmp, i1 %cmp1, i1 false
867   ret i1 %retval
870 define i1 @auto_gen_31(double %a, double %b) {
871 ; CHECK-LABEL: @auto_gen_31(
872 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
873 ; CHECK-NEXT:    ret i1 [[TMP1]]
875   %cmp = fcmp ord double %a, %b
876   %cmp1 = fcmp oge double %a, %b
877   %retval = and i1 %cmp, %cmp1
878   ret i1 %retval
881 define i1 @auto_gen_31_logical(double %a, double %b) {
882 ; CHECK-LABEL: @auto_gen_31_logical(
883 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
884 ; CHECK-NEXT:    ret i1 [[TMP1]]
886   %cmp = fcmp ord double %a, %b
887   %cmp1 = fcmp oge double %a, %b
888   %retval = select i1 %cmp, i1 %cmp1, i1 false
889   ret i1 %retval
892 define i1 @auto_gen_32(double %a, double %b) {
893 ; CHECK-LABEL: @auto_gen_32(
894 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
895 ; CHECK-NEXT:    ret i1 [[TMP1]]
897   %cmp = fcmp ord double %a, %b
898   %cmp1 = fcmp olt double %a, %b
899   %retval = and i1 %cmp, %cmp1
900   ret i1 %retval
903 define i1 @auto_gen_32_logical(double %a, double %b) {
904 ; CHECK-LABEL: @auto_gen_32_logical(
905 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
906 ; CHECK-NEXT:    ret i1 [[TMP1]]
908   %cmp = fcmp ord double %a, %b
909   %cmp1 = fcmp olt double %a, %b
910   %retval = select i1 %cmp, i1 %cmp1, i1 false
911   ret i1 %retval
914 define i1 @auto_gen_33(double %a, double %b) {
915 ; CHECK-LABEL: @auto_gen_33(
916 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
917 ; CHECK-NEXT:    ret i1 [[TMP1]]
919   %cmp = fcmp ord double %a, %b
920   %cmp1 = fcmp ole double %a, %b
921   %retval = and i1 %cmp, %cmp1
922   ret i1 %retval
925 define i1 @auto_gen_33_logical(double %a, double %b) {
926 ; CHECK-LABEL: @auto_gen_33_logical(
927 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
928 ; CHECK-NEXT:    ret i1 [[TMP1]]
930   %cmp = fcmp ord double %a, %b
931   %cmp1 = fcmp ole double %a, %b
932   %retval = select i1 %cmp, i1 %cmp1, i1 false
933   ret i1 %retval
936 define i1 @auto_gen_34(double %a, double %b) {
937 ; CHECK-LABEL: @auto_gen_34(
938 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
939 ; CHECK-NEXT:    ret i1 [[TMP1]]
941   %cmp = fcmp ord double %a, %b
942   %cmp1 = fcmp one double %a, %b
943   %retval = and i1 %cmp, %cmp1
944   ret i1 %retval
947 define i1 @auto_gen_34_logical(double %a, double %b) {
948 ; CHECK-LABEL: @auto_gen_34_logical(
949 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
950 ; CHECK-NEXT:    ret i1 [[TMP1]]
952   %cmp = fcmp ord double %a, %b
953   %cmp1 = fcmp one double %a, %b
954   %retval = select i1 %cmp, i1 %cmp1, i1 false
955   ret i1 %retval
958 define i1 @auto_gen_35(double %a, double %b) {
959 ; CHECK-LABEL: @auto_gen_35(
960 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
961 ; CHECK-NEXT:    ret i1 [[TMP1]]
963   %cmp = fcmp ord double %a, %b
964   %cmp1 = fcmp ord double %a, %b
965   %retval = and i1 %cmp, %cmp1
966   ret i1 %retval
969 define i1 @auto_gen_35_logical(double %a, double %b) {
970 ; CHECK-LABEL: @auto_gen_35_logical(
971 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
972 ; CHECK-NEXT:    ret i1 [[TMP1]]
974   %cmp = fcmp ord double %a, %b
975   %cmp1 = fcmp ord double %a, %b
976   %retval = select i1 %cmp, i1 %cmp1, i1 false
977   ret i1 %retval
980 define i1 @auto_gen_36(double %a, double %b) {
981 ; CHECK-LABEL: @auto_gen_36(
982 ; CHECK-NEXT:    ret i1 false
984   %cmp = fcmp ueq double %a, %b
985   %cmp1 = fcmp false double %a, %b
986   %retval = and i1 %cmp, %cmp1
987   ret i1 %retval
990 define i1 @auto_gen_36_logical(double %a, double %b) {
991 ; CHECK-LABEL: @auto_gen_36_logical(
992 ; CHECK-NEXT:    ret i1 false
994   %cmp = fcmp ueq double %a, %b
995   %cmp1 = fcmp false double %a, %b
996   %retval = select i1 %cmp, i1 %cmp1, i1 false
997   ret i1 %retval
1000 define i1 @auto_gen_37(double %a, double %b) {
1001 ; CHECK-LABEL: @auto_gen_37(
1002 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1003 ; CHECK-NEXT:    ret i1 [[TMP1]]
1005   %cmp = fcmp ueq double %a, %b
1006   %cmp1 = fcmp oeq double %a, %b
1007   %retval = and i1 %cmp, %cmp1
1008   ret i1 %retval
1011 define i1 @auto_gen_37_logical(double %a, double %b) {
1012 ; CHECK-LABEL: @auto_gen_37_logical(
1013 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1014 ; CHECK-NEXT:    ret i1 [[TMP1]]
1016   %cmp = fcmp ueq double %a, %b
1017   %cmp1 = fcmp oeq double %a, %b
1018   %retval = select i1 %cmp, i1 %cmp1, i1 false
1019   ret i1 %retval
1022 define i1 @auto_gen_38(double %a, double %b) {
1023 ; CHECK-LABEL: @auto_gen_38(
1024 ; CHECK-NEXT:    ret i1 false
1026   %cmp = fcmp ueq double %a, %b
1027   %cmp1 = fcmp ogt double %a, %b
1028   %retval = and i1 %cmp, %cmp1
1029   ret i1 %retval
1032 define i1 @auto_gen_38_logical(double %a, double %b) {
1033 ; CHECK-LABEL: @auto_gen_38_logical(
1034 ; CHECK-NEXT:    ret i1 false
1036   %cmp = fcmp ueq double %a, %b
1037   %cmp1 = fcmp ogt double %a, %b
1038   %retval = select i1 %cmp, i1 %cmp1, i1 false
1039   ret i1 %retval
1042 define i1 @auto_gen_39(double %a, double %b) {
1043 ; CHECK-LABEL: @auto_gen_39(
1044 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1045 ; CHECK-NEXT:    ret i1 [[TMP1]]
1047   %cmp = fcmp ueq double %a, %b
1048   %cmp1 = fcmp oge double %a, %b
1049   %retval = and i1 %cmp, %cmp1
1050   ret i1 %retval
1053 define i1 @auto_gen_39_logical(double %a, double %b) {
1054 ; CHECK-LABEL: @auto_gen_39_logical(
1055 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1056 ; CHECK-NEXT:    ret i1 [[TMP1]]
1058   %cmp = fcmp ueq double %a, %b
1059   %cmp1 = fcmp oge double %a, %b
1060   %retval = select i1 %cmp, i1 %cmp1, i1 false
1061   ret i1 %retval
1064 define i1 @auto_gen_40(double %a, double %b) {
1065 ; CHECK-LABEL: @auto_gen_40(
1066 ; CHECK-NEXT:    ret i1 false
1068   %cmp = fcmp ueq double %a, %b
1069   %cmp1 = fcmp olt double %a, %b
1070   %retval = and i1 %cmp, %cmp1
1071   ret i1 %retval
1074 define i1 @auto_gen_40_logical(double %a, double %b) {
1075 ; CHECK-LABEL: @auto_gen_40_logical(
1076 ; CHECK-NEXT:    ret i1 false
1078   %cmp = fcmp ueq double %a, %b
1079   %cmp1 = fcmp olt double %a, %b
1080   %retval = select i1 %cmp, i1 %cmp1, i1 false
1081   ret i1 %retval
1084 define i1 @auto_gen_41(double %a, double %b) {
1085 ; CHECK-LABEL: @auto_gen_41(
1086 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1087 ; CHECK-NEXT:    ret i1 [[TMP1]]
1089   %cmp = fcmp ueq double %a, %b
1090   %cmp1 = fcmp ole double %a, %b
1091   %retval = and i1 %cmp, %cmp1
1092   ret i1 %retval
1095 define i1 @auto_gen_41_logical(double %a, double %b) {
1096 ; CHECK-LABEL: @auto_gen_41_logical(
1097 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1098 ; CHECK-NEXT:    ret i1 [[TMP1]]
1100   %cmp = fcmp ueq double %a, %b
1101   %cmp1 = fcmp ole double %a, %b
1102   %retval = select i1 %cmp, i1 %cmp1, i1 false
1103   ret i1 %retval
1106 define i1 @auto_gen_42(double %a, double %b) {
1107 ; CHECK-LABEL: @auto_gen_42(
1108 ; CHECK-NEXT:    ret i1 false
1110   %cmp = fcmp ueq double %a, %b
1111   %cmp1 = fcmp one double %a, %b
1112   %retval = and i1 %cmp, %cmp1
1113   ret i1 %retval
1116 define i1 @auto_gen_42_logical(double %a, double %b) {
1117 ; CHECK-LABEL: @auto_gen_42_logical(
1118 ; CHECK-NEXT:    ret i1 false
1120   %cmp = fcmp ueq double %a, %b
1121   %cmp1 = fcmp one double %a, %b
1122   %retval = select i1 %cmp, i1 %cmp1, i1 false
1123   ret i1 %retval
1126 define i1 @auto_gen_43(double %a, double %b) {
1127 ; CHECK-LABEL: @auto_gen_43(
1128 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1129 ; CHECK-NEXT:    ret i1 [[TMP1]]
1131   %cmp = fcmp ueq double %a, %b
1132   %cmp1 = fcmp ord double %a, %b
1133   %retval = and i1 %cmp, %cmp1
1134   ret i1 %retval
1137 define i1 @auto_gen_43_logical(double %a, double %b) {
1138 ; CHECK-LABEL: @auto_gen_43_logical(
1139 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1140 ; CHECK-NEXT:    ret i1 [[TMP1]]
1142   %cmp = fcmp ueq double %a, %b
1143   %cmp1 = fcmp ord double %a, %b
1144   %retval = select i1 %cmp, i1 %cmp1, i1 false
1145   ret i1 %retval
1148 define i1 @auto_gen_44(double %a, double %b) {
1149 ; CHECK-LABEL: @auto_gen_44(
1150 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1151 ; CHECK-NEXT:    ret i1 [[TMP1]]
1153   %cmp = fcmp ueq double %a, %b
1154   %cmp1 = fcmp ueq double %a, %b
1155   %retval = and i1 %cmp, %cmp1
1156   ret i1 %retval
1159 define i1 @auto_gen_44_logical(double %a, double %b) {
1160 ; CHECK-LABEL: @auto_gen_44_logical(
1161 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1162 ; CHECK-NEXT:    ret i1 [[TMP1]]
1164   %cmp = fcmp ueq double %a, %b
1165   %cmp1 = fcmp ueq double %a, %b
1166   %retval = select i1 %cmp, i1 %cmp1, i1 false
1167   ret i1 %retval
1170 define i1 @auto_gen_45(double %a, double %b) {
1171 ; CHECK-LABEL: @auto_gen_45(
1172 ; CHECK-NEXT:    ret i1 false
1174   %cmp = fcmp ugt double %a, %b
1175   %cmp1 = fcmp false double %a, %b
1176   %retval = and i1 %cmp, %cmp1
1177   ret i1 %retval
1180 define i1 @auto_gen_45_logical(double %a, double %b) {
1181 ; CHECK-LABEL: @auto_gen_45_logical(
1182 ; CHECK-NEXT:    ret i1 false
1184   %cmp = fcmp ugt double %a, %b
1185   %cmp1 = fcmp false double %a, %b
1186   %retval = select i1 %cmp, i1 %cmp1, i1 false
1187   ret i1 %retval
1190 define i1 @auto_gen_46(double %a, double %b) {
1191 ; CHECK-LABEL: @auto_gen_46(
1192 ; CHECK-NEXT:    ret i1 false
1194   %cmp = fcmp ugt double %a, %b
1195   %cmp1 = fcmp oeq double %a, %b
1196   %retval = and i1 %cmp, %cmp1
1197   ret i1 %retval
1200 define i1 @auto_gen_46_logical(double %a, double %b) {
1201 ; CHECK-LABEL: @auto_gen_46_logical(
1202 ; CHECK-NEXT:    ret i1 false
1204   %cmp = fcmp ugt double %a, %b
1205   %cmp1 = fcmp oeq double %a, %b
1206   %retval = select i1 %cmp, i1 %cmp1, i1 false
1207   ret i1 %retval
1210 define i1 @auto_gen_47(double %a, double %b) {
1211 ; CHECK-LABEL: @auto_gen_47(
1212 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1213 ; CHECK-NEXT:    ret i1 [[TMP1]]
1215   %cmp = fcmp ugt double %a, %b
1216   %cmp1 = fcmp ogt double %a, %b
1217   %retval = and i1 %cmp, %cmp1
1218   ret i1 %retval
1221 define i1 @auto_gen_47_logical(double %a, double %b) {
1222 ; CHECK-LABEL: @auto_gen_47_logical(
1223 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1224 ; CHECK-NEXT:    ret i1 [[TMP1]]
1226   %cmp = fcmp ugt double %a, %b
1227   %cmp1 = fcmp ogt double %a, %b
1228   %retval = select i1 %cmp, i1 %cmp1, i1 false
1229   ret i1 %retval
1232 define i1 @auto_gen_48(double %a, double %b) {
1233 ; CHECK-LABEL: @auto_gen_48(
1234 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1235 ; CHECK-NEXT:    ret i1 [[TMP1]]
1237   %cmp = fcmp ugt double %a, %b
1238   %cmp1 = fcmp oge double %a, %b
1239   %retval = and i1 %cmp, %cmp1
1240   ret i1 %retval
1243 define i1 @auto_gen_48_logical(double %a, double %b) {
1244 ; CHECK-LABEL: @auto_gen_48_logical(
1245 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1246 ; CHECK-NEXT:    ret i1 [[TMP1]]
1248   %cmp = fcmp ugt double %a, %b
1249   %cmp1 = fcmp oge double %a, %b
1250   %retval = select i1 %cmp, i1 %cmp1, i1 false
1251   ret i1 %retval
1254 define i1 @auto_gen_49(double %a, double %b) {
1255 ; CHECK-LABEL: @auto_gen_49(
1256 ; CHECK-NEXT:    ret i1 false
1258   %cmp = fcmp ugt double %a, %b
1259   %cmp1 = fcmp olt double %a, %b
1260   %retval = and i1 %cmp, %cmp1
1261   ret i1 %retval
1264 define i1 @auto_gen_49_logical(double %a, double %b) {
1265 ; CHECK-LABEL: @auto_gen_49_logical(
1266 ; CHECK-NEXT:    ret i1 false
1268   %cmp = fcmp ugt double %a, %b
1269   %cmp1 = fcmp olt double %a, %b
1270   %retval = select i1 %cmp, i1 %cmp1, i1 false
1271   ret i1 %retval
1274 define i1 @auto_gen_50(double %a, double %b) {
1275 ; CHECK-LABEL: @auto_gen_50(
1276 ; CHECK-NEXT:    ret i1 false
1278   %cmp = fcmp ugt double %a, %b
1279   %cmp1 = fcmp ole double %a, %b
1280   %retval = and i1 %cmp, %cmp1
1281   ret i1 %retval
1284 define i1 @auto_gen_50_logical(double %a, double %b) {
1285 ; CHECK-LABEL: @auto_gen_50_logical(
1286 ; CHECK-NEXT:    ret i1 false
1288   %cmp = fcmp ugt double %a, %b
1289   %cmp1 = fcmp ole double %a, %b
1290   %retval = select i1 %cmp, i1 %cmp1, i1 false
1291   ret i1 %retval
1294 define i1 @auto_gen_51(double %a, double %b) {
1295 ; CHECK-LABEL: @auto_gen_51(
1296 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1297 ; CHECK-NEXT:    ret i1 [[TMP1]]
1299   %cmp = fcmp ugt double %a, %b
1300   %cmp1 = fcmp one double %a, %b
1301   %retval = and i1 %cmp, %cmp1
1302   ret i1 %retval
1305 define i1 @auto_gen_51_logical(double %a, double %b) {
1306 ; CHECK-LABEL: @auto_gen_51_logical(
1307 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1308 ; CHECK-NEXT:    ret i1 [[TMP1]]
1310   %cmp = fcmp ugt double %a, %b
1311   %cmp1 = fcmp one double %a, %b
1312   %retval = select i1 %cmp, i1 %cmp1, i1 false
1313   ret i1 %retval
1316 define i1 @auto_gen_52(double %a, double %b) {
1317 ; CHECK-LABEL: @auto_gen_52(
1318 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1319 ; CHECK-NEXT:    ret i1 [[TMP1]]
1321   %cmp = fcmp ugt double %a, %b
1322   %cmp1 = fcmp ord double %a, %b
1323   %retval = and i1 %cmp, %cmp1
1324   ret i1 %retval
1327 define i1 @auto_gen_52_logical(double %a, double %b) {
1328 ; CHECK-LABEL: @auto_gen_52_logical(
1329 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1330 ; CHECK-NEXT:    ret i1 [[TMP1]]
1332   %cmp = fcmp ugt double %a, %b
1333   %cmp1 = fcmp ord double %a, %b
1334   %retval = select i1 %cmp, i1 %cmp1, i1 false
1335   ret i1 %retval
1338 define i1 @auto_gen_53(double %a, double %b) {
1339 ; CHECK-LABEL: @auto_gen_53(
1340 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1341 ; CHECK-NEXT:    ret i1 [[TMP1]]
1343   %cmp = fcmp ugt double %a, %b
1344   %cmp1 = fcmp ueq double %a, %b
1345   %retval = and i1 %cmp, %cmp1
1346   ret i1 %retval
1349 define i1 @auto_gen_53_logical(double %a, double %b) {
1350 ; CHECK-LABEL: @auto_gen_53_logical(
1351 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1352 ; CHECK-NEXT:    ret i1 [[TMP1]]
1354   %cmp = fcmp ugt double %a, %b
1355   %cmp1 = fcmp ueq double %a, %b
1356   %retval = select i1 %cmp, i1 %cmp1, i1 false
1357   ret i1 %retval
1360 define i1 @auto_gen_54(double %a, double %b) {
1361 ; CHECK-LABEL: @auto_gen_54(
1362 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1363 ; CHECK-NEXT:    ret i1 [[TMP1]]
1365   %cmp = fcmp ugt double %a, %b
1366   %cmp1 = fcmp ugt double %a, %b
1367   %retval = and i1 %cmp, %cmp1
1368   ret i1 %retval
1371 define i1 @auto_gen_54_logical(double %a, double %b) {
1372 ; CHECK-LABEL: @auto_gen_54_logical(
1373 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1374 ; CHECK-NEXT:    ret i1 [[TMP1]]
1376   %cmp = fcmp ugt double %a, %b
1377   %cmp1 = fcmp ugt double %a, %b
1378   %retval = select i1 %cmp, i1 %cmp1, i1 false
1379   ret i1 %retval
1382 define i1 @auto_gen_55(double %a, double %b) {
1383 ; CHECK-LABEL: @auto_gen_55(
1384 ; CHECK-NEXT:    ret i1 false
1386   %cmp = fcmp uge double %a, %b
1387   %cmp1 = fcmp false double %a, %b
1388   %retval = and i1 %cmp, %cmp1
1389   ret i1 %retval
1392 define i1 @auto_gen_55_logical(double %a, double %b) {
1393 ; CHECK-LABEL: @auto_gen_55_logical(
1394 ; CHECK-NEXT:    ret i1 false
1396   %cmp = fcmp uge double %a, %b
1397   %cmp1 = fcmp false double %a, %b
1398   %retval = select i1 %cmp, i1 %cmp1, i1 false
1399   ret i1 %retval
1402 define i1 @auto_gen_56(double %a, double %b) {
1403 ; CHECK-LABEL: @auto_gen_56(
1404 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1405 ; CHECK-NEXT:    ret i1 [[TMP1]]
1407   %cmp = fcmp uge double %a, %b
1408   %cmp1 = fcmp oeq double %a, %b
1409   %retval = and i1 %cmp, %cmp1
1410   ret i1 %retval
1413 define i1 @auto_gen_56_logical(double %a, double %b) {
1414 ; CHECK-LABEL: @auto_gen_56_logical(
1415 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1416 ; CHECK-NEXT:    ret i1 [[TMP1]]
1418   %cmp = fcmp uge double %a, %b
1419   %cmp1 = fcmp oeq double %a, %b
1420   %retval = select i1 %cmp, i1 %cmp1, i1 false
1421   ret i1 %retval
1424 define i1 @auto_gen_57(double %a, double %b) {
1425 ; CHECK-LABEL: @auto_gen_57(
1426 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1427 ; CHECK-NEXT:    ret i1 [[TMP1]]
1429   %cmp = fcmp uge double %a, %b
1430   %cmp1 = fcmp ogt double %a, %b
1431   %retval = and i1 %cmp, %cmp1
1432   ret i1 %retval
1435 define i1 @auto_gen_57_logical(double %a, double %b) {
1436 ; CHECK-LABEL: @auto_gen_57_logical(
1437 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1438 ; CHECK-NEXT:    ret i1 [[TMP1]]
1440   %cmp = fcmp uge double %a, %b
1441   %cmp1 = fcmp ogt double %a, %b
1442   %retval = select i1 %cmp, i1 %cmp1, i1 false
1443   ret i1 %retval
1446 define i1 @auto_gen_58(double %a, double %b) {
1447 ; CHECK-LABEL: @auto_gen_58(
1448 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1449 ; CHECK-NEXT:    ret i1 [[TMP1]]
1451   %cmp = fcmp uge double %a, %b
1452   %cmp1 = fcmp oge double %a, %b
1453   %retval = and i1 %cmp, %cmp1
1454   ret i1 %retval
1457 define i1 @auto_gen_58_logical(double %a, double %b) {
1458 ; CHECK-LABEL: @auto_gen_58_logical(
1459 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1460 ; CHECK-NEXT:    ret i1 [[TMP1]]
1462   %cmp = fcmp uge double %a, %b
1463   %cmp1 = fcmp oge double %a, %b
1464   %retval = select i1 %cmp, i1 %cmp1, i1 false
1465   ret i1 %retval
1468 define i1 @auto_gen_59(double %a, double %b) {
1469 ; CHECK-LABEL: @auto_gen_59(
1470 ; CHECK-NEXT:    ret i1 false
1472   %cmp = fcmp uge double %a, %b
1473   %cmp1 = fcmp olt double %a, %b
1474   %retval = and i1 %cmp, %cmp1
1475   ret i1 %retval
1478 define i1 @auto_gen_59_logical(double %a, double %b) {
1479 ; CHECK-LABEL: @auto_gen_59_logical(
1480 ; CHECK-NEXT:    ret i1 false
1482   %cmp = fcmp uge double %a, %b
1483   %cmp1 = fcmp olt double %a, %b
1484   %retval = select i1 %cmp, i1 %cmp1, i1 false
1485   ret i1 %retval
1488 define i1 @auto_gen_60(double %a, double %b) {
1489 ; CHECK-LABEL: @auto_gen_60(
1490 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1491 ; CHECK-NEXT:    ret i1 [[TMP1]]
1493   %cmp = fcmp uge double %a, %b
1494   %cmp1 = fcmp ole double %a, %b
1495   %retval = and i1 %cmp, %cmp1
1496   ret i1 %retval
1499 define i1 @auto_gen_60_logical(double %a, double %b) {
1500 ; CHECK-LABEL: @auto_gen_60_logical(
1501 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1502 ; CHECK-NEXT:    ret i1 [[TMP1]]
1504   %cmp = fcmp uge double %a, %b
1505   %cmp1 = fcmp ole double %a, %b
1506   %retval = select i1 %cmp, i1 %cmp1, i1 false
1507   ret i1 %retval
1510 define i1 @auto_gen_61(double %a, double %b) {
1511 ; CHECK-LABEL: @auto_gen_61(
1512 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1513 ; CHECK-NEXT:    ret i1 [[TMP1]]
1515   %cmp = fcmp uge double %a, %b
1516   %cmp1 = fcmp one double %a, %b
1517   %retval = and i1 %cmp, %cmp1
1518   ret i1 %retval
1521 define i1 @auto_gen_61_logical(double %a, double %b) {
1522 ; CHECK-LABEL: @auto_gen_61_logical(
1523 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1524 ; CHECK-NEXT:    ret i1 [[TMP1]]
1526   %cmp = fcmp uge double %a, %b
1527   %cmp1 = fcmp one double %a, %b
1528   %retval = select i1 %cmp, i1 %cmp1, i1 false
1529   ret i1 %retval
1532 define i1 @auto_gen_62(double %a, double %b) {
1533 ; CHECK-LABEL: @auto_gen_62(
1534 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1535 ; CHECK-NEXT:    ret i1 [[TMP1]]
1537   %cmp = fcmp uge double %a, %b
1538   %cmp1 = fcmp ord double %a, %b
1539   %retval = and i1 %cmp, %cmp1
1540   ret i1 %retval
1543 define i1 @auto_gen_62_logical(double %a, double %b) {
1544 ; CHECK-LABEL: @auto_gen_62_logical(
1545 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1546 ; CHECK-NEXT:    ret i1 [[TMP1]]
1548   %cmp = fcmp uge double %a, %b
1549   %cmp1 = fcmp ord double %a, %b
1550   %retval = select i1 %cmp, i1 %cmp1, i1 false
1551   ret i1 %retval
1554 define i1 @auto_gen_63(double %a, double %b) {
1555 ; CHECK-LABEL: @auto_gen_63(
1556 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1557 ; CHECK-NEXT:    ret i1 [[TMP1]]
1559   %cmp = fcmp uge double %a, %b
1560   %cmp1 = fcmp ueq double %a, %b
1561   %retval = and i1 %cmp, %cmp1
1562   ret i1 %retval
1565 define i1 @auto_gen_63_logical(double %a, double %b) {
1566 ; CHECK-LABEL: @auto_gen_63_logical(
1567 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1568 ; CHECK-NEXT:    ret i1 [[TMP1]]
1570   %cmp = fcmp uge double %a, %b
1571   %cmp1 = fcmp ueq double %a, %b
1572   %retval = select i1 %cmp, i1 %cmp1, i1 false
1573   ret i1 %retval
1576 define i1 @auto_gen_64(double %a, double %b) {
1577 ; CHECK-LABEL: @auto_gen_64(
1578 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1579 ; CHECK-NEXT:    ret i1 [[TMP1]]
1581   %cmp = fcmp uge double %a, %b
1582   %cmp1 = fcmp ugt double %a, %b
1583   %retval = and i1 %cmp, %cmp1
1584   ret i1 %retval
1587 define i1 @auto_gen_64_logical(double %a, double %b) {
1588 ; CHECK-LABEL: @auto_gen_64_logical(
1589 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1590 ; CHECK-NEXT:    ret i1 [[TMP1]]
1592   %cmp = fcmp uge double %a, %b
1593   %cmp1 = fcmp ugt double %a, %b
1594   %retval = select i1 %cmp, i1 %cmp1, i1 false
1595   ret i1 %retval
1598 define i1 @auto_gen_65(double %a, double %b) {
1599 ; CHECK-LABEL: @auto_gen_65(
1600 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1601 ; CHECK-NEXT:    ret i1 [[TMP1]]
1603   %cmp = fcmp uge double %a, %b
1604   %cmp1 = fcmp uge double %a, %b
1605   %retval = and i1 %cmp, %cmp1
1606   ret i1 %retval
1609 define i1 @auto_gen_65_logical(double %a, double %b) {
1610 ; CHECK-LABEL: @auto_gen_65_logical(
1611 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1612 ; CHECK-NEXT:    ret i1 [[TMP1]]
1614   %cmp = fcmp uge double %a, %b
1615   %cmp1 = fcmp uge double %a, %b
1616   %retval = select i1 %cmp, i1 %cmp1, i1 false
1617   ret i1 %retval
1620 define i1 @auto_gen_66(double %a, double %b) {
1621 ; CHECK-LABEL: @auto_gen_66(
1622 ; CHECK-NEXT:    ret i1 false
1624   %cmp = fcmp ult double %a, %b
1625   %cmp1 = fcmp false double %a, %b
1626   %retval = and i1 %cmp, %cmp1
1627   ret i1 %retval
1630 define i1 @auto_gen_66_logical(double %a, double %b) {
1631 ; CHECK-LABEL: @auto_gen_66_logical(
1632 ; CHECK-NEXT:    ret i1 false
1634   %cmp = fcmp ult double %a, %b
1635   %cmp1 = fcmp false double %a, %b
1636   %retval = select i1 %cmp, i1 %cmp1, i1 false
1637   ret i1 %retval
1640 define i1 @auto_gen_67(double %a, double %b) {
1641 ; CHECK-LABEL: @auto_gen_67(
1642 ; CHECK-NEXT:    ret i1 false
1644   %cmp = fcmp ult double %a, %b
1645   %cmp1 = fcmp oeq double %a, %b
1646   %retval = and i1 %cmp, %cmp1
1647   ret i1 %retval
1650 define i1 @auto_gen_67_logical(double %a, double %b) {
1651 ; CHECK-LABEL: @auto_gen_67_logical(
1652 ; CHECK-NEXT:    ret i1 false
1654   %cmp = fcmp ult double %a, %b
1655   %cmp1 = fcmp oeq double %a, %b
1656   %retval = select i1 %cmp, i1 %cmp1, i1 false
1657   ret i1 %retval
1660 define i1 @auto_gen_68(double %a, double %b) {
1661 ; CHECK-LABEL: @auto_gen_68(
1662 ; CHECK-NEXT:    ret i1 false
1664   %cmp = fcmp ult double %a, %b
1665   %cmp1 = fcmp ogt double %a, %b
1666   %retval = and i1 %cmp, %cmp1
1667   ret i1 %retval
1670 define i1 @auto_gen_68_logical(double %a, double %b) {
1671 ; CHECK-LABEL: @auto_gen_68_logical(
1672 ; CHECK-NEXT:    ret i1 false
1674   %cmp = fcmp ult double %a, %b
1675   %cmp1 = fcmp ogt double %a, %b
1676   %retval = select i1 %cmp, i1 %cmp1, i1 false
1677   ret i1 %retval
1680 define i1 @auto_gen_69(double %a, double %b) {
1681 ; CHECK-LABEL: @auto_gen_69(
1682 ; CHECK-NEXT:    ret i1 false
1684   %cmp = fcmp ult double %a, %b
1685   %cmp1 = fcmp oge double %a, %b
1686   %retval = and i1 %cmp, %cmp1
1687   ret i1 %retval
1690 define i1 @auto_gen_69_logical(double %a, double %b) {
1691 ; CHECK-LABEL: @auto_gen_69_logical(
1692 ; CHECK-NEXT:    ret i1 false
1694   %cmp = fcmp ult double %a, %b
1695   %cmp1 = fcmp oge double %a, %b
1696   %retval = select i1 %cmp, i1 %cmp1, i1 false
1697   ret i1 %retval
1700 define i1 @auto_gen_70(double %a, double %b) {
1701 ; CHECK-LABEL: @auto_gen_70(
1702 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1703 ; CHECK-NEXT:    ret i1 [[TMP1]]
1705   %cmp = fcmp ult double %a, %b
1706   %cmp1 = fcmp olt double %a, %b
1707   %retval = and i1 %cmp, %cmp1
1708   ret i1 %retval
1711 define i1 @auto_gen_70_logical(double %a, double %b) {
1712 ; CHECK-LABEL: @auto_gen_70_logical(
1713 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1714 ; CHECK-NEXT:    ret i1 [[TMP1]]
1716   %cmp = fcmp ult double %a, %b
1717   %cmp1 = fcmp olt double %a, %b
1718   %retval = select i1 %cmp, i1 %cmp1, i1 false
1719   ret i1 %retval
1722 define i1 @auto_gen_71(double %a, double %b) {
1723 ; CHECK-LABEL: @auto_gen_71(
1724 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1725 ; CHECK-NEXT:    ret i1 [[TMP1]]
1727   %cmp = fcmp ult double %a, %b
1728   %cmp1 = fcmp ole double %a, %b
1729   %retval = and i1 %cmp, %cmp1
1730   ret i1 %retval
1733 define i1 @auto_gen_71_logical(double %a, double %b) {
1734 ; CHECK-LABEL: @auto_gen_71_logical(
1735 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1736 ; CHECK-NEXT:    ret i1 [[TMP1]]
1738   %cmp = fcmp ult double %a, %b
1739   %cmp1 = fcmp ole double %a, %b
1740   %retval = select i1 %cmp, i1 %cmp1, i1 false
1741   ret i1 %retval
1744 define i1 @auto_gen_72(double %a, double %b) {
1745 ; CHECK-LABEL: @auto_gen_72(
1746 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1747 ; CHECK-NEXT:    ret i1 [[TMP1]]
1749   %cmp = fcmp ult double %a, %b
1750   %cmp1 = fcmp one double %a, %b
1751   %retval = and i1 %cmp, %cmp1
1752   ret i1 %retval
1755 define i1 @auto_gen_72_logical(double %a, double %b) {
1756 ; CHECK-LABEL: @auto_gen_72_logical(
1757 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1758 ; CHECK-NEXT:    ret i1 [[TMP1]]
1760   %cmp = fcmp ult double %a, %b
1761   %cmp1 = fcmp one double %a, %b
1762   %retval = select i1 %cmp, i1 %cmp1, i1 false
1763   ret i1 %retval
1766 define i1 @auto_gen_73(double %a, double %b) {
1767 ; CHECK-LABEL: @auto_gen_73(
1768 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1769 ; CHECK-NEXT:    ret i1 [[TMP1]]
1771   %cmp = fcmp ult double %a, %b
1772   %cmp1 = fcmp ord double %a, %b
1773   %retval = and i1 %cmp, %cmp1
1774   ret i1 %retval
1777 define i1 @auto_gen_73_logical(double %a, double %b) {
1778 ; CHECK-LABEL: @auto_gen_73_logical(
1779 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1780 ; CHECK-NEXT:    ret i1 [[TMP1]]
1782   %cmp = fcmp ult double %a, %b
1783   %cmp1 = fcmp ord double %a, %b
1784   %retval = select i1 %cmp, i1 %cmp1, i1 false
1785   ret i1 %retval
1788 define i1 @auto_gen_74(double %a, double %b) {
1789 ; CHECK-LABEL: @auto_gen_74(
1790 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1791 ; CHECK-NEXT:    ret i1 [[TMP1]]
1793   %cmp = fcmp ult double %a, %b
1794   %cmp1 = fcmp ueq double %a, %b
1795   %retval = and i1 %cmp, %cmp1
1796   ret i1 %retval
1799 define i1 @auto_gen_74_logical(double %a, double %b) {
1800 ; CHECK-LABEL: @auto_gen_74_logical(
1801 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1802 ; CHECK-NEXT:    ret i1 [[TMP1]]
1804   %cmp = fcmp ult double %a, %b
1805   %cmp1 = fcmp ueq double %a, %b
1806   %retval = select i1 %cmp, i1 %cmp1, i1 false
1807   ret i1 %retval
1810 define i1 @auto_gen_75(double %a, double %b) {
1811 ; CHECK-LABEL: @auto_gen_75(
1812 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1813 ; CHECK-NEXT:    ret i1 [[TMP1]]
1815   %cmp = fcmp ult double %a, %b
1816   %cmp1 = fcmp ugt double %a, %b
1817   %retval = and i1 %cmp, %cmp1
1818   ret i1 %retval
1821 define i1 @auto_gen_75_logical(double %a, double %b) {
1822 ; CHECK-LABEL: @auto_gen_75_logical(
1823 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1824 ; CHECK-NEXT:    ret i1 [[TMP1]]
1826   %cmp = fcmp ult double %a, %b
1827   %cmp1 = fcmp ugt double %a, %b
1828   %retval = select i1 %cmp, i1 %cmp1, i1 false
1829   ret i1 %retval
1832 define i1 @auto_gen_76(double %a, double %b) {
1833 ; CHECK-LABEL: @auto_gen_76(
1834 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1835 ; CHECK-NEXT:    ret i1 [[TMP1]]
1837   %cmp = fcmp ult double %a, %b
1838   %cmp1 = fcmp uge double %a, %b
1839   %retval = and i1 %cmp, %cmp1
1840   ret i1 %retval
1843 define i1 @auto_gen_76_logical(double %a, double %b) {
1844 ; CHECK-LABEL: @auto_gen_76_logical(
1845 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1846 ; CHECK-NEXT:    ret i1 [[TMP1]]
1848   %cmp = fcmp ult double %a, %b
1849   %cmp1 = fcmp uge double %a, %b
1850   %retval = select i1 %cmp, i1 %cmp1, i1 false
1851   ret i1 %retval
1854 define i1 @auto_gen_77(double %a, double %b) {
1855 ; CHECK-LABEL: @auto_gen_77(
1856 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1857 ; CHECK-NEXT:    ret i1 [[TMP1]]
1859   %cmp = fcmp ult double %a, %b
1860   %cmp1 = fcmp ult double %a, %b
1861   %retval = and i1 %cmp, %cmp1
1862   ret i1 %retval
1865 define i1 @auto_gen_77_logical(double %a, double %b) {
1866 ; CHECK-LABEL: @auto_gen_77_logical(
1867 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1868 ; CHECK-NEXT:    ret i1 [[TMP1]]
1870   %cmp = fcmp ult double %a, %b
1871   %cmp1 = fcmp ult double %a, %b
1872   %retval = select i1 %cmp, i1 %cmp1, i1 false
1873   ret i1 %retval
1876 define i1 @auto_gen_78(double %a, double %b) {
1877 ; CHECK-LABEL: @auto_gen_78(
1878 ; CHECK-NEXT:    ret i1 false
1880   %cmp = fcmp ule double %a, %b
1881   %cmp1 = fcmp false double %a, %b
1882   %retval = and i1 %cmp, %cmp1
1883   ret i1 %retval
1886 define i1 @auto_gen_78_logical(double %a, double %b) {
1887 ; CHECK-LABEL: @auto_gen_78_logical(
1888 ; CHECK-NEXT:    ret i1 false
1890   %cmp = fcmp ule double %a, %b
1891   %cmp1 = fcmp false double %a, %b
1892   %retval = select i1 %cmp, i1 %cmp1, i1 false
1893   ret i1 %retval
1896 define i1 @auto_gen_79(double %a, double %b) {
1897 ; CHECK-LABEL: @auto_gen_79(
1898 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1899 ; CHECK-NEXT:    ret i1 [[TMP1]]
1901   %cmp = fcmp ule double %a, %b
1902   %cmp1 = fcmp oeq double %a, %b
1903   %retval = and i1 %cmp, %cmp1
1904   ret i1 %retval
1907 define i1 @auto_gen_79_logical(double %a, double %b) {
1908 ; CHECK-LABEL: @auto_gen_79_logical(
1909 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1910 ; CHECK-NEXT:    ret i1 [[TMP1]]
1912   %cmp = fcmp ule double %a, %b
1913   %cmp1 = fcmp oeq double %a, %b
1914   %retval = select i1 %cmp, i1 %cmp1, i1 false
1915   ret i1 %retval
1918 define i1 @auto_gen_80(double %a, double %b) {
1919 ; CHECK-LABEL: @auto_gen_80(
1920 ; CHECK-NEXT:    ret i1 false
1922   %cmp = fcmp ule double %a, %b
1923   %cmp1 = fcmp ogt double %a, %b
1924   %retval = and i1 %cmp, %cmp1
1925   ret i1 %retval
1928 define i1 @auto_gen_80_logical(double %a, double %b) {
1929 ; CHECK-LABEL: @auto_gen_80_logical(
1930 ; CHECK-NEXT:    ret i1 false
1932   %cmp = fcmp ule double %a, %b
1933   %cmp1 = fcmp ogt double %a, %b
1934   %retval = select i1 %cmp, i1 %cmp1, i1 false
1935   ret i1 %retval
1938 define i1 @auto_gen_81(double %a, double %b) {
1939 ; CHECK-LABEL: @auto_gen_81(
1940 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1941 ; CHECK-NEXT:    ret i1 [[TMP1]]
1943   %cmp = fcmp ule double %a, %b
1944   %cmp1 = fcmp oge double %a, %b
1945   %retval = and i1 %cmp, %cmp1
1946   ret i1 %retval
1949 define i1 @auto_gen_81_logical(double %a, double %b) {
1950 ; CHECK-LABEL: @auto_gen_81_logical(
1951 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1952 ; CHECK-NEXT:    ret i1 [[TMP1]]
1954   %cmp = fcmp ule double %a, %b
1955   %cmp1 = fcmp oge double %a, %b
1956   %retval = select i1 %cmp, i1 %cmp1, i1 false
1957   ret i1 %retval
1960 define i1 @auto_gen_82(double %a, double %b) {
1961 ; CHECK-LABEL: @auto_gen_82(
1962 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1963 ; CHECK-NEXT:    ret i1 [[TMP1]]
1965   %cmp = fcmp ule double %a, %b
1966   %cmp1 = fcmp olt double %a, %b
1967   %retval = and i1 %cmp, %cmp1
1968   ret i1 %retval
1971 define i1 @auto_gen_82_logical(double %a, double %b) {
1972 ; CHECK-LABEL: @auto_gen_82_logical(
1973 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1974 ; CHECK-NEXT:    ret i1 [[TMP1]]
1976   %cmp = fcmp ule double %a, %b
1977   %cmp1 = fcmp olt double %a, %b
1978   %retval = select i1 %cmp, i1 %cmp1, i1 false
1979   ret i1 %retval
1982 define i1 @auto_gen_83(double %a, double %b) {
1983 ; CHECK-LABEL: @auto_gen_83(
1984 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1985 ; CHECK-NEXT:    ret i1 [[TMP1]]
1987   %cmp = fcmp ule double %a, %b
1988   %cmp1 = fcmp ole double %a, %b
1989   %retval = and i1 %cmp, %cmp1
1990   ret i1 %retval
1993 define i1 @auto_gen_83_logical(double %a, double %b) {
1994 ; CHECK-LABEL: @auto_gen_83_logical(
1995 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1996 ; CHECK-NEXT:    ret i1 [[TMP1]]
1998   %cmp = fcmp ule double %a, %b
1999   %cmp1 = fcmp ole double %a, %b
2000   %retval = select i1 %cmp, i1 %cmp1, i1 false
2001   ret i1 %retval
2004 define i1 @auto_gen_84(double %a, double %b) {
2005 ; CHECK-LABEL: @auto_gen_84(
2006 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2007 ; CHECK-NEXT:    ret i1 [[TMP1]]
2009   %cmp = fcmp ule double %a, %b
2010   %cmp1 = fcmp one double %a, %b
2011   %retval = and i1 %cmp, %cmp1
2012   ret i1 %retval
2015 define i1 @auto_gen_84_logical(double %a, double %b) {
2016 ; CHECK-LABEL: @auto_gen_84_logical(
2017 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2018 ; CHECK-NEXT:    ret i1 [[TMP1]]
2020   %cmp = fcmp ule double %a, %b
2021   %cmp1 = fcmp one double %a, %b
2022   %retval = select i1 %cmp, i1 %cmp1, i1 false
2023   ret i1 %retval
2026 define i1 @auto_gen_85(double %a, double %b) {
2027 ; CHECK-LABEL: @auto_gen_85(
2028 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2029 ; CHECK-NEXT:    ret i1 [[TMP1]]
2031   %cmp = fcmp ule double %a, %b
2032   %cmp1 = fcmp ord double %a, %b
2033   %retval = and i1 %cmp, %cmp1
2034   ret i1 %retval
2037 define i1 @auto_gen_85_logical(double %a, double %b) {
2038 ; CHECK-LABEL: @auto_gen_85_logical(
2039 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2040 ; CHECK-NEXT:    ret i1 [[TMP1]]
2042   %cmp = fcmp ule double %a, %b
2043   %cmp1 = fcmp ord double %a, %b
2044   %retval = select i1 %cmp, i1 %cmp1, i1 false
2045   ret i1 %retval
2048 define i1 @auto_gen_86(double %a, double %b) {
2049 ; CHECK-LABEL: @auto_gen_86(
2050 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2051 ; CHECK-NEXT:    ret i1 [[TMP1]]
2053   %cmp = fcmp ule double %a, %b
2054   %cmp1 = fcmp ueq double %a, %b
2055   %retval = and i1 %cmp, %cmp1
2056   ret i1 %retval
2059 define i1 @auto_gen_86_logical(double %a, double %b) {
2060 ; CHECK-LABEL: @auto_gen_86_logical(
2061 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2062 ; CHECK-NEXT:    ret i1 [[TMP1]]
2064   %cmp = fcmp ule double %a, %b
2065   %cmp1 = fcmp ueq double %a, %b
2066   %retval = select i1 %cmp, i1 %cmp1, i1 false
2067   ret i1 %retval
2070 define i1 @auto_gen_87(double %a, double %b) {
2071 ; CHECK-LABEL: @auto_gen_87(
2072 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2073 ; CHECK-NEXT:    ret i1 [[TMP1]]
2075   %cmp = fcmp ule double %a, %b
2076   %cmp1 = fcmp ugt double %a, %b
2077   %retval = and i1 %cmp, %cmp1
2078   ret i1 %retval
2081 define i1 @auto_gen_87_logical(double %a, double %b) {
2082 ; CHECK-LABEL: @auto_gen_87_logical(
2083 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2084 ; CHECK-NEXT:    ret i1 [[TMP1]]
2086   %cmp = fcmp ule double %a, %b
2087   %cmp1 = fcmp ugt double %a, %b
2088   %retval = select i1 %cmp, i1 %cmp1, i1 false
2089   ret i1 %retval
2092 define i1 @auto_gen_88(double %a, double %b) {
2093 ; CHECK-LABEL: @auto_gen_88(
2094 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2095 ; CHECK-NEXT:    ret i1 [[TMP1]]
2097   %cmp = fcmp ule double %a, %b
2098   %cmp1 = fcmp uge double %a, %b
2099   %retval = and i1 %cmp, %cmp1
2100   ret i1 %retval
2103 define i1 @auto_gen_88_logical(double %a, double %b) {
2104 ; CHECK-LABEL: @auto_gen_88_logical(
2105 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2106 ; CHECK-NEXT:    ret i1 [[TMP1]]
2108   %cmp = fcmp ule double %a, %b
2109   %cmp1 = fcmp uge double %a, %b
2110   %retval = select i1 %cmp, i1 %cmp1, i1 false
2111   ret i1 %retval
2114 define i1 @auto_gen_89(double %a, double %b) {
2115 ; CHECK-LABEL: @auto_gen_89(
2116 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2117 ; CHECK-NEXT:    ret i1 [[TMP1]]
2119   %cmp = fcmp ule double %a, %b
2120   %cmp1 = fcmp ult double %a, %b
2121   %retval = and i1 %cmp, %cmp1
2122   ret i1 %retval
2125 define i1 @auto_gen_89_logical(double %a, double %b) {
2126 ; CHECK-LABEL: @auto_gen_89_logical(
2127 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2128 ; CHECK-NEXT:    ret i1 [[TMP1]]
2130   %cmp = fcmp ule double %a, %b
2131   %cmp1 = fcmp ult double %a, %b
2132   %retval = select i1 %cmp, i1 %cmp1, i1 false
2133   ret i1 %retval
2136 define i1 @auto_gen_90(double %a, double %b) {
2137 ; CHECK-LABEL: @auto_gen_90(
2138 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2139 ; CHECK-NEXT:    ret i1 [[TMP1]]
2141   %cmp = fcmp ule double %a, %b
2142   %cmp1 = fcmp ule double %a, %b
2143   %retval = and i1 %cmp, %cmp1
2144   ret i1 %retval
2147 define i1 @auto_gen_90_logical(double %a, double %b) {
2148 ; CHECK-LABEL: @auto_gen_90_logical(
2149 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2150 ; CHECK-NEXT:    ret i1 [[TMP1]]
2152   %cmp = fcmp ule double %a, %b
2153   %cmp1 = fcmp ule double %a, %b
2154   %retval = select i1 %cmp, i1 %cmp1, i1 false
2155   ret i1 %retval
2158 define i1 @auto_gen_91(double %a, double %b) {
2159 ; CHECK-LABEL: @auto_gen_91(
2160 ; CHECK-NEXT:    ret i1 false
2162   %cmp = fcmp une double %a, %b
2163   %cmp1 = fcmp false double %a, %b
2164   %retval = and i1 %cmp, %cmp1
2165   ret i1 %retval
2168 define i1 @auto_gen_91_logical(double %a, double %b) {
2169 ; CHECK-LABEL: @auto_gen_91_logical(
2170 ; CHECK-NEXT:    ret i1 false
2172   %cmp = fcmp une double %a, %b
2173   %cmp1 = fcmp false double %a, %b
2174   %retval = select i1 %cmp, i1 %cmp1, i1 false
2175   ret i1 %retval
2178 define i1 @auto_gen_92(double %a, double %b) {
2179 ; CHECK-LABEL: @auto_gen_92(
2180 ; CHECK-NEXT:    ret i1 false
2182   %cmp = fcmp une double %a, %b
2183   %cmp1 = fcmp oeq double %a, %b
2184   %retval = and i1 %cmp, %cmp1
2185   ret i1 %retval
2188 define i1 @auto_gen_92_logical(double %a, double %b) {
2189 ; CHECK-LABEL: @auto_gen_92_logical(
2190 ; CHECK-NEXT:    ret i1 false
2192   %cmp = fcmp une double %a, %b
2193   %cmp1 = fcmp oeq double %a, %b
2194   %retval = select i1 %cmp, i1 %cmp1, i1 false
2195   ret i1 %retval
2198 define i1 @auto_gen_93(double %a, double %b) {
2199 ; CHECK-LABEL: @auto_gen_93(
2200 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2201 ; CHECK-NEXT:    ret i1 [[TMP1]]
2203   %cmp = fcmp une double %a, %b
2204   %cmp1 = fcmp ogt double %a, %b
2205   %retval = and i1 %cmp, %cmp1
2206   ret i1 %retval
2209 define i1 @auto_gen_93_logical(double %a, double %b) {
2210 ; CHECK-LABEL: @auto_gen_93_logical(
2211 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2212 ; CHECK-NEXT:    ret i1 [[TMP1]]
2214   %cmp = fcmp une double %a, %b
2215   %cmp1 = fcmp ogt double %a, %b
2216   %retval = select i1 %cmp, i1 %cmp1, i1 false
2217   ret i1 %retval
2220 define i1 @auto_gen_94(double %a, double %b) {
2221 ; CHECK-LABEL: @auto_gen_94(
2222 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2223 ; CHECK-NEXT:    ret i1 [[TMP1]]
2225   %cmp = fcmp une double %a, %b
2226   %cmp1 = fcmp oge double %a, %b
2227   %retval = and i1 %cmp, %cmp1
2228   ret i1 %retval
2231 define i1 @auto_gen_94_logical(double %a, double %b) {
2232 ; CHECK-LABEL: @auto_gen_94_logical(
2233 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2234 ; CHECK-NEXT:    ret i1 [[TMP1]]
2236   %cmp = fcmp une double %a, %b
2237   %cmp1 = fcmp oge double %a, %b
2238   %retval = select i1 %cmp, i1 %cmp1, i1 false
2239   ret i1 %retval
2242 define i1 @auto_gen_95(double %a, double %b) {
2243 ; CHECK-LABEL: @auto_gen_95(
2244 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2245 ; CHECK-NEXT:    ret i1 [[TMP1]]
2247   %cmp = fcmp une double %a, %b
2248   %cmp1 = fcmp olt double %a, %b
2249   %retval = and i1 %cmp, %cmp1
2250   ret i1 %retval
2253 define i1 @auto_gen_95_logical(double %a, double %b) {
2254 ; CHECK-LABEL: @auto_gen_95_logical(
2255 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2256 ; CHECK-NEXT:    ret i1 [[TMP1]]
2258   %cmp = fcmp une double %a, %b
2259   %cmp1 = fcmp olt double %a, %b
2260   %retval = select i1 %cmp, i1 %cmp1, i1 false
2261   ret i1 %retval
2264 define i1 @auto_gen_96(double %a, double %b) {
2265 ; CHECK-LABEL: @auto_gen_96(
2266 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2267 ; CHECK-NEXT:    ret i1 [[TMP1]]
2269   %cmp = fcmp une double %a, %b
2270   %cmp1 = fcmp ole double %a, %b
2271   %retval = and i1 %cmp, %cmp1
2272   ret i1 %retval
2275 define i1 @auto_gen_96_logical(double %a, double %b) {
2276 ; CHECK-LABEL: @auto_gen_96_logical(
2277 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2278 ; CHECK-NEXT:    ret i1 [[TMP1]]
2280   %cmp = fcmp une double %a, %b
2281   %cmp1 = fcmp ole double %a, %b
2282   %retval = select i1 %cmp, i1 %cmp1, i1 false
2283   ret i1 %retval
2286 define i1 @auto_gen_97(double %a, double %b) {
2287 ; CHECK-LABEL: @auto_gen_97(
2288 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
2289 ; CHECK-NEXT:    ret i1 [[TMP1]]
2291   %cmp = fcmp une double %a, %b
2292   %cmp1 = fcmp one double %a, %b
2293   %retval = and i1 %cmp, %cmp1
2294   ret i1 %retval
2297 define i1 @auto_gen_97_logical(double %a, double %b) {
2298 ; CHECK-LABEL: @auto_gen_97_logical(
2299 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
2300 ; CHECK-NEXT:    ret i1 [[TMP1]]
2302   %cmp = fcmp une double %a, %b
2303   %cmp1 = fcmp one double %a, %b
2304   %retval = select i1 %cmp, i1 %cmp1, i1 false
2305   ret i1 %retval
2308 define i1 @auto_gen_98(double %a, double %b) {
2309 ; CHECK-LABEL: @auto_gen_98(
2310 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
2311 ; CHECK-NEXT:    ret i1 [[TMP1]]
2313   %cmp = fcmp une double %a, %b
2314   %cmp1 = fcmp ord double %a, %b
2315   %retval = and i1 %cmp, %cmp1
2316   ret i1 %retval
2319 define i1 @auto_gen_98_logical(double %a, double %b) {
2320 ; CHECK-LABEL: @auto_gen_98_logical(
2321 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
2322 ; CHECK-NEXT:    ret i1 [[TMP1]]
2324   %cmp = fcmp une double %a, %b
2325   %cmp1 = fcmp ord double %a, %b
2326   %retval = select i1 %cmp, i1 %cmp1, i1 false
2327   ret i1 %retval
2330 define i1 @auto_gen_99(double %a, double %b) {
2331 ; CHECK-LABEL: @auto_gen_99(
2332 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2333 ; CHECK-NEXT:    ret i1 [[TMP1]]
2335   %cmp = fcmp une double %a, %b
2336   %cmp1 = fcmp ueq double %a, %b
2337   %retval = and i1 %cmp, %cmp1
2338   ret i1 %retval
2341 define i1 @auto_gen_99_logical(double %a, double %b) {
2342 ; CHECK-LABEL: @auto_gen_99_logical(
2343 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2344 ; CHECK-NEXT:    ret i1 [[TMP1]]
2346   %cmp = fcmp une double %a, %b
2347   %cmp1 = fcmp ueq double %a, %b
2348   %retval = select i1 %cmp, i1 %cmp1, i1 false
2349   ret i1 %retval
2352 define i1 @auto_gen_100(double %a, double %b) {
2353 ; CHECK-LABEL: @auto_gen_100(
2354 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2355 ; CHECK-NEXT:    ret i1 [[TMP1]]
2357   %cmp = fcmp une double %a, %b
2358   %cmp1 = fcmp ugt double %a, %b
2359   %retval = and i1 %cmp, %cmp1
2360   ret i1 %retval
2363 define i1 @auto_gen_100_logical(double %a, double %b) {
2364 ; CHECK-LABEL: @auto_gen_100_logical(
2365 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2366 ; CHECK-NEXT:    ret i1 [[TMP1]]
2368   %cmp = fcmp une double %a, %b
2369   %cmp1 = fcmp ugt double %a, %b
2370   %retval = select i1 %cmp, i1 %cmp1, i1 false
2371   ret i1 %retval
2374 define i1 @auto_gen_101(double %a, double %b) {
2375 ; CHECK-LABEL: @auto_gen_101(
2376 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2377 ; CHECK-NEXT:    ret i1 [[TMP1]]
2379   %cmp = fcmp une double %a, %b
2380   %cmp1 = fcmp uge double %a, %b
2381   %retval = and i1 %cmp, %cmp1
2382   ret i1 %retval
2385 define i1 @auto_gen_101_logical(double %a, double %b) {
2386 ; CHECK-LABEL: @auto_gen_101_logical(
2387 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2388 ; CHECK-NEXT:    ret i1 [[TMP1]]
2390   %cmp = fcmp une double %a, %b
2391   %cmp1 = fcmp uge double %a, %b
2392   %retval = select i1 %cmp, i1 %cmp1, i1 false
2393   ret i1 %retval
2396 define i1 @auto_gen_102(double %a, double %b) {
2397 ; CHECK-LABEL: @auto_gen_102(
2398 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2399 ; CHECK-NEXT:    ret i1 [[TMP1]]
2401   %cmp = fcmp une double %a, %b
2402   %cmp1 = fcmp ult double %a, %b
2403   %retval = and i1 %cmp, %cmp1
2404   ret i1 %retval
2407 define i1 @auto_gen_102_logical(double %a, double %b) {
2408 ; CHECK-LABEL: @auto_gen_102_logical(
2409 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2410 ; CHECK-NEXT:    ret i1 [[TMP1]]
2412   %cmp = fcmp une double %a, %b
2413   %cmp1 = fcmp ult double %a, %b
2414   %retval = select i1 %cmp, i1 %cmp1, i1 false
2415   ret i1 %retval
2418 define i1 @auto_gen_103(double %a, double %b) {
2419 ; CHECK-LABEL: @auto_gen_103(
2420 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2421 ; CHECK-NEXT:    ret i1 [[TMP1]]
2423   %cmp = fcmp une double %a, %b
2424   %cmp1 = fcmp ule double %a, %b
2425   %retval = and i1 %cmp, %cmp1
2426   ret i1 %retval
2429 define i1 @auto_gen_103_logical(double %a, double %b) {
2430 ; CHECK-LABEL: @auto_gen_103_logical(
2431 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2432 ; CHECK-NEXT:    ret i1 [[TMP1]]
2434   %cmp = fcmp une double %a, %b
2435   %cmp1 = fcmp ule double %a, %b
2436   %retval = select i1 %cmp, i1 %cmp1, i1 false
2437   ret i1 %retval
2440 define i1 @auto_gen_104(double %a, double %b) {
2441 ; CHECK-LABEL: @auto_gen_104(
2442 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2443 ; CHECK-NEXT:    ret i1 [[TMP1]]
2445   %cmp = fcmp une double %a, %b
2446   %cmp1 = fcmp une double %a, %b
2447   %retval = and i1 %cmp, %cmp1
2448   ret i1 %retval
2451 define i1 @auto_gen_104_logical(double %a, double %b) {
2452 ; CHECK-LABEL: @auto_gen_104_logical(
2453 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2454 ; CHECK-NEXT:    ret i1 [[TMP1]]
2456   %cmp = fcmp une double %a, %b
2457   %cmp1 = fcmp une double %a, %b
2458   %retval = select i1 %cmp, i1 %cmp1, i1 false
2459   ret i1 %retval
2462 define i1 @auto_gen_105(double %a, double %b) {
2463 ; CHECK-LABEL: @auto_gen_105(
2464 ; CHECK-NEXT:    ret i1 false
2466   %cmp = fcmp uno double %a, %b
2467   %cmp1 = fcmp false double %a, %b
2468   %retval = and i1 %cmp, %cmp1
2469   ret i1 %retval
2472 define i1 @auto_gen_105_logical(double %a, double %b) {
2473 ; CHECK-LABEL: @auto_gen_105_logical(
2474 ; CHECK-NEXT:    ret i1 false
2476   %cmp = fcmp uno double %a, %b
2477   %cmp1 = fcmp false double %a, %b
2478   %retval = select i1 %cmp, i1 %cmp1, i1 false
2479   ret i1 %retval
2482 define i1 @auto_gen_106(double %a, double %b) {
2483 ; CHECK-LABEL: @auto_gen_106(
2484 ; CHECK-NEXT:    ret i1 false
2486   %cmp = fcmp uno double %a, %b
2487   %cmp1 = fcmp oeq double %a, %b
2488   %retval = and i1 %cmp, %cmp1
2489   ret i1 %retval
2492 define i1 @auto_gen_106_logical(double %a, double %b) {
2493 ; CHECK-LABEL: @auto_gen_106_logical(
2494 ; CHECK-NEXT:    ret i1 false
2496   %cmp = fcmp uno double %a, %b
2497   %cmp1 = fcmp oeq double %a, %b
2498   %retval = select i1 %cmp, i1 %cmp1, i1 false
2499   ret i1 %retval
2502 define i1 @auto_gen_107(double %a, double %b) {
2503 ; CHECK-LABEL: @auto_gen_107(
2504 ; CHECK-NEXT:    ret i1 false
2506   %cmp = fcmp uno double %a, %b
2507   %cmp1 = fcmp ogt double %a, %b
2508   %retval = and i1 %cmp, %cmp1
2509   ret i1 %retval
2512 define i1 @auto_gen_107_logical(double %a, double %b) {
2513 ; CHECK-LABEL: @auto_gen_107_logical(
2514 ; CHECK-NEXT:    ret i1 false
2516   %cmp = fcmp uno double %a, %b
2517   %cmp1 = fcmp ogt double %a, %b
2518   %retval = select i1 %cmp, i1 %cmp1, i1 false
2519   ret i1 %retval
2522 define i1 @auto_gen_108(double %a, double %b) {
2523 ; CHECK-LABEL: @auto_gen_108(
2524 ; CHECK-NEXT:    ret i1 false
2526   %cmp = fcmp uno double %a, %b
2527   %cmp1 = fcmp oge double %a, %b
2528   %retval = and i1 %cmp, %cmp1
2529   ret i1 %retval
2532 define i1 @auto_gen_108_logical(double %a, double %b) {
2533 ; CHECK-LABEL: @auto_gen_108_logical(
2534 ; CHECK-NEXT:    ret i1 false
2536   %cmp = fcmp uno double %a, %b
2537   %cmp1 = fcmp oge double %a, %b
2538   %retval = select i1 %cmp, i1 %cmp1, i1 false
2539   ret i1 %retval
2542 define i1 @auto_gen_109(double %a, double %b) {
2543 ; CHECK-LABEL: @auto_gen_109(
2544 ; CHECK-NEXT:    ret i1 false
2546   %cmp = fcmp uno double %a, %b
2547   %cmp1 = fcmp olt double %a, %b
2548   %retval = and i1 %cmp, %cmp1
2549   ret i1 %retval
2552 define i1 @auto_gen_109_logical(double %a, double %b) {
2553 ; CHECK-LABEL: @auto_gen_109_logical(
2554 ; CHECK-NEXT:    ret i1 false
2556   %cmp = fcmp uno double %a, %b
2557   %cmp1 = fcmp olt double %a, %b
2558   %retval = select i1 %cmp, i1 %cmp1, i1 false
2559   ret i1 %retval
2562 define i1 @auto_gen_110(double %a, double %b) {
2563 ; CHECK-LABEL: @auto_gen_110(
2564 ; CHECK-NEXT:    ret i1 false
2566   %cmp = fcmp uno double %a, %b
2567   %cmp1 = fcmp ole double %a, %b
2568   %retval = and i1 %cmp, %cmp1
2569   ret i1 %retval
2572 define i1 @auto_gen_110_logical(double %a, double %b) {
2573 ; CHECK-LABEL: @auto_gen_110_logical(
2574 ; CHECK-NEXT:    ret i1 false
2576   %cmp = fcmp uno double %a, %b
2577   %cmp1 = fcmp ole double %a, %b
2578   %retval = select i1 %cmp, i1 %cmp1, i1 false
2579   ret i1 %retval
2582 define i1 @auto_gen_111(double %a, double %b) {
2583 ; CHECK-LABEL: @auto_gen_111(
2584 ; CHECK-NEXT:    ret i1 false
2586   %cmp = fcmp uno double %a, %b
2587   %cmp1 = fcmp one double %a, %b
2588   %retval = and i1 %cmp, %cmp1
2589   ret i1 %retval
2592 define i1 @auto_gen_111_logical(double %a, double %b) {
2593 ; CHECK-LABEL: @auto_gen_111_logical(
2594 ; CHECK-NEXT:    ret i1 false
2596   %cmp = fcmp uno double %a, %b
2597   %cmp1 = fcmp one double %a, %b
2598   %retval = select i1 %cmp, i1 %cmp1, i1 false
2599   ret i1 %retval
2602 define i1 @auto_gen_112(double %a, double %b) {
2603 ; CHECK-LABEL: @auto_gen_112(
2604 ; CHECK-NEXT:    ret i1 false
2606   %cmp = fcmp uno double %a, %b
2607   %cmp1 = fcmp ord double %a, %b
2608   %retval = and i1 %cmp, %cmp1
2609   ret i1 %retval
2612 define i1 @auto_gen_112_logical(double %a, double %b) {
2613 ; CHECK-LABEL: @auto_gen_112_logical(
2614 ; CHECK-NEXT:    ret i1 false
2616   %cmp = fcmp uno double %a, %b
2617   %cmp1 = fcmp ord double %a, %b
2618   %retval = select i1 %cmp, i1 %cmp1, i1 false
2619   ret i1 %retval
2622 define i1 @auto_gen_113(double %a, double %b) {
2623 ; CHECK-LABEL: @auto_gen_113(
2624 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2625 ; CHECK-NEXT:    ret i1 [[TMP1]]
2627   %cmp = fcmp uno double %a, %b
2628   %cmp1 = fcmp ueq double %a, %b
2629   %retval = and i1 %cmp, %cmp1
2630   ret i1 %retval
2633 define i1 @auto_gen_113_logical(double %a, double %b) {
2634 ; CHECK-LABEL: @auto_gen_113_logical(
2635 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2636 ; CHECK-NEXT:    ret i1 [[TMP1]]
2638   %cmp = fcmp uno double %a, %b
2639   %cmp1 = fcmp ueq double %a, %b
2640   %retval = select i1 %cmp, i1 %cmp1, i1 false
2641   ret i1 %retval
2644 define i1 @auto_gen_114(double %a, double %b) {
2645 ; CHECK-LABEL: @auto_gen_114(
2646 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2647 ; CHECK-NEXT:    ret i1 [[TMP1]]
2649   %cmp = fcmp uno double %a, %b
2650   %cmp1 = fcmp ugt double %a, %b
2651   %retval = and i1 %cmp, %cmp1
2652   ret i1 %retval
2655 define i1 @auto_gen_114_logical(double %a, double %b) {
2656 ; CHECK-LABEL: @auto_gen_114_logical(
2657 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2658 ; CHECK-NEXT:    ret i1 [[TMP1]]
2660   %cmp = fcmp uno double %a, %b
2661   %cmp1 = fcmp ugt double %a, %b
2662   %retval = select i1 %cmp, i1 %cmp1, i1 false
2663   ret i1 %retval
2666 define i1 @auto_gen_115(double %a, double %b) {
2667 ; CHECK-LABEL: @auto_gen_115(
2668 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2669 ; CHECK-NEXT:    ret i1 [[TMP1]]
2671   %cmp = fcmp uno double %a, %b
2672   %cmp1 = fcmp uge double %a, %b
2673   %retval = and i1 %cmp, %cmp1
2674   ret i1 %retval
2677 define i1 @auto_gen_115_logical(double %a, double %b) {
2678 ; CHECK-LABEL: @auto_gen_115_logical(
2679 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2680 ; CHECK-NEXT:    ret i1 [[TMP1]]
2682   %cmp = fcmp uno double %a, %b
2683   %cmp1 = fcmp uge double %a, %b
2684   %retval = select i1 %cmp, i1 %cmp1, i1 false
2685   ret i1 %retval
2688 define i1 @auto_gen_116(double %a, double %b) {
2689 ; CHECK-LABEL: @auto_gen_116(
2690 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2691 ; CHECK-NEXT:    ret i1 [[TMP1]]
2693   %cmp = fcmp uno double %a, %b
2694   %cmp1 = fcmp ult double %a, %b
2695   %retval = and i1 %cmp, %cmp1
2696   ret i1 %retval
2699 define i1 @auto_gen_116_logical(double %a, double %b) {
2700 ; CHECK-LABEL: @auto_gen_116_logical(
2701 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2702 ; CHECK-NEXT:    ret i1 [[TMP1]]
2704   %cmp = fcmp uno double %a, %b
2705   %cmp1 = fcmp ult double %a, %b
2706   %retval = select i1 %cmp, i1 %cmp1, i1 false
2707   ret i1 %retval
2710 define i1 @auto_gen_117(double %a, double %b) {
2711 ; CHECK-LABEL: @auto_gen_117(
2712 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2713 ; CHECK-NEXT:    ret i1 [[TMP1]]
2715   %cmp = fcmp uno double %a, %b
2716   %cmp1 = fcmp ule double %a, %b
2717   %retval = and i1 %cmp, %cmp1
2718   ret i1 %retval
2721 define i1 @auto_gen_117_logical(double %a, double %b) {
2722 ; CHECK-LABEL: @auto_gen_117_logical(
2723 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2724 ; CHECK-NEXT:    ret i1 [[TMP1]]
2726   %cmp = fcmp uno double %a, %b
2727   %cmp1 = fcmp ule double %a, %b
2728   %retval = select i1 %cmp, i1 %cmp1, i1 false
2729   ret i1 %retval
2732 define i1 @auto_gen_118(double %a, double %b) {
2733 ; CHECK-LABEL: @auto_gen_118(
2734 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2735 ; CHECK-NEXT:    ret i1 [[TMP1]]
2737   %cmp = fcmp uno double %a, %b
2738   %cmp1 = fcmp une double %a, %b
2739   %retval = and i1 %cmp, %cmp1
2740   ret i1 %retval
2743 define i1 @auto_gen_118_logical(double %a, double %b) {
2744 ; CHECK-LABEL: @auto_gen_118_logical(
2745 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2746 ; CHECK-NEXT:    ret i1 [[TMP1]]
2748   %cmp = fcmp uno double %a, %b
2749   %cmp1 = fcmp une double %a, %b
2750   %retval = select i1 %cmp, i1 %cmp1, i1 false
2751   ret i1 %retval
2754 define i1 @auto_gen_119(double %a, double %b) {
2755 ; CHECK-LABEL: @auto_gen_119(
2756 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2757 ; CHECK-NEXT:    ret i1 [[TMP1]]
2759   %cmp = fcmp uno double %a, %b
2760   %cmp1 = fcmp uno double %a, %b
2761   %retval = and i1 %cmp, %cmp1
2762   ret i1 %retval
2765 define i1 @auto_gen_119_logical(double %a, double %b) {
2766 ; CHECK-LABEL: @auto_gen_119_logical(
2767 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2768 ; CHECK-NEXT:    ret i1 [[TMP1]]
2770   %cmp = fcmp uno double %a, %b
2771   %cmp1 = fcmp uno double %a, %b
2772   %retval = select i1 %cmp, i1 %cmp1, i1 false
2773   ret i1 %retval
2776 define i1 @auto_gen_120(double %a, double %b) {
2777 ; CHECK-LABEL: @auto_gen_120(
2778 ; CHECK-NEXT:    ret i1 false
2780   %cmp = fcmp true double %a, %b
2781   %cmp1 = fcmp false double %a, %b
2782   %retval = and i1 %cmp, %cmp1
2783   ret i1 %retval
2786 define i1 @auto_gen_120_logical(double %a, double %b) {
2787 ; CHECK-LABEL: @auto_gen_120_logical(
2788 ; CHECK-NEXT:    ret i1 false
2790   %cmp = fcmp true double %a, %b
2791   %cmp1 = fcmp false double %a, %b
2792   %retval = select i1 %cmp, i1 %cmp1, i1 false
2793   ret i1 %retval
2796 define i1 @auto_gen_121(double %a, double %b) {
2797 ; CHECK-LABEL: @auto_gen_121(
2798 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2799 ; CHECK-NEXT:    ret i1 [[CMP1]]
2801   %cmp = fcmp true double %a, %b
2802   %cmp1 = fcmp oeq double %a, %b
2803   %retval = and i1 %cmp, %cmp1
2804   ret i1 %retval
2807 define i1 @auto_gen_121_logical(double %a, double %b) {
2808 ; CHECK-LABEL: @auto_gen_121_logical(
2809 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2810 ; CHECK-NEXT:    ret i1 [[CMP1]]
2812   %cmp = fcmp true double %a, %b
2813   %cmp1 = fcmp oeq double %a, %b
2814   %retval = select i1 %cmp, i1 %cmp1, i1 false
2815   ret i1 %retval
2818 define i1 @auto_gen_122(double %a, double %b) {
2819 ; CHECK-LABEL: @auto_gen_122(
2820 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2821 ; CHECK-NEXT:    ret i1 [[CMP1]]
2823   %cmp = fcmp true double %a, %b
2824   %cmp1 = fcmp ogt double %a, %b
2825   %retval = and i1 %cmp, %cmp1
2826   ret i1 %retval
2829 define i1 @auto_gen_122_logical(double %a, double %b) {
2830 ; CHECK-LABEL: @auto_gen_122_logical(
2831 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2832 ; CHECK-NEXT:    ret i1 [[CMP1]]
2834   %cmp = fcmp true double %a, %b
2835   %cmp1 = fcmp ogt double %a, %b
2836   %retval = select i1 %cmp, i1 %cmp1, i1 false
2837   ret i1 %retval
2840 define i1 @auto_gen_123(double %a, double %b) {
2841 ; CHECK-LABEL: @auto_gen_123(
2842 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
2843 ; CHECK-NEXT:    ret i1 [[CMP1]]
2845   %cmp = fcmp true double %a, %b
2846   %cmp1 = fcmp oge double %a, %b
2847   %retval = and i1 %cmp, %cmp1
2848   ret i1 %retval
2851 define i1 @auto_gen_123_logical(double %a, double %b) {
2852 ; CHECK-LABEL: @auto_gen_123_logical(
2853 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
2854 ; CHECK-NEXT:    ret i1 [[CMP1]]
2856   %cmp = fcmp true double %a, %b
2857   %cmp1 = fcmp oge double %a, %b
2858   %retval = select i1 %cmp, i1 %cmp1, i1 false
2859   ret i1 %retval
2862 define i1 @auto_gen_124(double %a, double %b) {
2863 ; CHECK-LABEL: @auto_gen_124(
2864 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2865 ; CHECK-NEXT:    ret i1 [[CMP1]]
2867   %cmp = fcmp true double %a, %b
2868   %cmp1 = fcmp olt double %a, %b
2869   %retval = and i1 %cmp, %cmp1
2870   ret i1 %retval
2873 define i1 @auto_gen_124_logical(double %a, double %b) {
2874 ; CHECK-LABEL: @auto_gen_124_logical(
2875 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2876 ; CHECK-NEXT:    ret i1 [[CMP1]]
2878   %cmp = fcmp true double %a, %b
2879   %cmp1 = fcmp olt double %a, %b
2880   %retval = select i1 %cmp, i1 %cmp1, i1 false
2881   ret i1 %retval
2884 define i1 @auto_gen_125(double %a, double %b) {
2885 ; CHECK-LABEL: @auto_gen_125(
2886 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2887 ; CHECK-NEXT:    ret i1 [[CMP1]]
2889   %cmp = fcmp true double %a, %b
2890   %cmp1 = fcmp ole double %a, %b
2891   %retval = and i1 %cmp, %cmp1
2892   ret i1 %retval
2895 define i1 @auto_gen_125_logical(double %a, double %b) {
2896 ; CHECK-LABEL: @auto_gen_125_logical(
2897 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2898 ; CHECK-NEXT:    ret i1 [[CMP1]]
2900   %cmp = fcmp true double %a, %b
2901   %cmp1 = fcmp ole double %a, %b
2902   %retval = select i1 %cmp, i1 %cmp1, i1 false
2903   ret i1 %retval
2906 define i1 @auto_gen_126(double %a, double %b) {
2907 ; CHECK-LABEL: @auto_gen_126(
2908 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
2909 ; CHECK-NEXT:    ret i1 [[CMP1]]
2911   %cmp = fcmp true double %a, %b
2912   %cmp1 = fcmp one double %a, %b
2913   %retval = and i1 %cmp, %cmp1
2914   ret i1 %retval
2917 define i1 @auto_gen_126_logical(double %a, double %b) {
2918 ; CHECK-LABEL: @auto_gen_126_logical(
2919 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
2920 ; CHECK-NEXT:    ret i1 [[CMP1]]
2922   %cmp = fcmp true double %a, %b
2923   %cmp1 = fcmp one double %a, %b
2924   %retval = select i1 %cmp, i1 %cmp1, i1 false
2925   ret i1 %retval
2928 define i1 @auto_gen_127(double %a, double %b) {
2929 ; CHECK-LABEL: @auto_gen_127(
2930 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
2931 ; CHECK-NEXT:    ret i1 [[CMP1]]
2933   %cmp = fcmp true double %a, %b
2934   %cmp1 = fcmp ord double %a, %b
2935   %retval = and i1 %cmp, %cmp1
2936   ret i1 %retval
2939 define i1 @auto_gen_127_logical(double %a, double %b) {
2940 ; CHECK-LABEL: @auto_gen_127_logical(
2941 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
2942 ; CHECK-NEXT:    ret i1 [[CMP1]]
2944   %cmp = fcmp true double %a, %b
2945   %cmp1 = fcmp ord double %a, %b
2946   %retval = select i1 %cmp, i1 %cmp1, i1 false
2947   ret i1 %retval
2950 define i1 @auto_gen_128(double %a, double %b) {
2951 ; CHECK-LABEL: @auto_gen_128(
2952 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2953 ; CHECK-NEXT:    ret i1 [[CMP1]]
2955   %cmp = fcmp true double %a, %b
2956   %cmp1 = fcmp ueq double %a, %b
2957   %retval = and i1 %cmp, %cmp1
2958   ret i1 %retval
2961 define i1 @auto_gen_128_logical(double %a, double %b) {
2962 ; CHECK-LABEL: @auto_gen_128_logical(
2963 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2964 ; CHECK-NEXT:    ret i1 [[CMP1]]
2966   %cmp = fcmp true double %a, %b
2967   %cmp1 = fcmp ueq double %a, %b
2968   %retval = select i1 %cmp, i1 %cmp1, i1 false
2969   ret i1 %retval
2972 define i1 @auto_gen_129(double %a, double %b) {
2973 ; CHECK-LABEL: @auto_gen_129(
2974 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2975 ; CHECK-NEXT:    ret i1 [[CMP1]]
2977   %cmp = fcmp true double %a, %b
2978   %cmp1 = fcmp ugt double %a, %b
2979   %retval = and i1 %cmp, %cmp1
2980   ret i1 %retval
2983 define i1 @auto_gen_129_logical(double %a, double %b) {
2984 ; CHECK-LABEL: @auto_gen_129_logical(
2985 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2986 ; CHECK-NEXT:    ret i1 [[CMP1]]
2988   %cmp = fcmp true double %a, %b
2989   %cmp1 = fcmp ugt double %a, %b
2990   %retval = select i1 %cmp, i1 %cmp1, i1 false
2991   ret i1 %retval
2994 define i1 @auto_gen_130(double %a, double %b) {
2995 ; CHECK-LABEL: @auto_gen_130(
2996 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2997 ; CHECK-NEXT:    ret i1 [[CMP1]]
2999   %cmp = fcmp true double %a, %b
3000   %cmp1 = fcmp uge double %a, %b
3001   %retval = and i1 %cmp, %cmp1
3002   ret i1 %retval
3005 define i1 @auto_gen_130_logical(double %a, double %b) {
3006 ; CHECK-LABEL: @auto_gen_130_logical(
3007 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
3008 ; CHECK-NEXT:    ret i1 [[CMP1]]
3010   %cmp = fcmp true double %a, %b
3011   %cmp1 = fcmp uge double %a, %b
3012   %retval = select i1 %cmp, i1 %cmp1, i1 false
3013   ret i1 %retval
3016 define i1 @auto_gen_131(double %a, double %b) {
3017 ; CHECK-LABEL: @auto_gen_131(
3018 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3019 ; CHECK-NEXT:    ret i1 [[CMP1]]
3021   %cmp = fcmp true double %a, %b
3022   %cmp1 = fcmp ult double %a, %b
3023   %retval = and i1 %cmp, %cmp1
3024   ret i1 %retval
3027 define i1 @auto_gen_131_logical(double %a, double %b) {
3028 ; CHECK-LABEL: @auto_gen_131_logical(
3029 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3030 ; CHECK-NEXT:    ret i1 [[CMP1]]
3032   %cmp = fcmp true double %a, %b
3033   %cmp1 = fcmp ult double %a, %b
3034   %retval = select i1 %cmp, i1 %cmp1, i1 false
3035   ret i1 %retval
3038 define i1 @auto_gen_132(double %a, double %b) {
3039 ; CHECK-LABEL: @auto_gen_132(
3040 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3041 ; CHECK-NEXT:    ret i1 [[CMP1]]
3043   %cmp = fcmp true double %a, %b
3044   %cmp1 = fcmp ule double %a, %b
3045   %retval = and i1 %cmp, %cmp1
3046   ret i1 %retval
3049 define i1 @auto_gen_132_logical(double %a, double %b) {
3050 ; CHECK-LABEL: @auto_gen_132_logical(
3051 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3052 ; CHECK-NEXT:    ret i1 [[CMP1]]
3054   %cmp = fcmp true double %a, %b
3055   %cmp1 = fcmp ule double %a, %b
3056   %retval = select i1 %cmp, i1 %cmp1, i1 false
3057   ret i1 %retval
3060 define i1 @auto_gen_133(double %a, double %b) {
3061 ; CHECK-LABEL: @auto_gen_133(
3062 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3063 ; CHECK-NEXT:    ret i1 [[CMP1]]
3065   %cmp = fcmp true double %a, %b
3066   %cmp1 = fcmp une double %a, %b
3067   %retval = and i1 %cmp, %cmp1
3068   ret i1 %retval
3071 define i1 @auto_gen_133_logical(double %a, double %b) {
3072 ; CHECK-LABEL: @auto_gen_133_logical(
3073 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3074 ; CHECK-NEXT:    ret i1 [[CMP1]]
3076   %cmp = fcmp true double %a, %b
3077   %cmp1 = fcmp une double %a, %b
3078   %retval = select i1 %cmp, i1 %cmp1, i1 false
3079   ret i1 %retval
3082 define i1 @auto_gen_134(double %a, double %b) {
3083 ; CHECK-LABEL: @auto_gen_134(
3084 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3085 ; CHECK-NEXT:    ret i1 [[CMP1]]
3087   %cmp = fcmp true double %a, %b
3088   %cmp1 = fcmp uno double %a, %b
3089   %retval = and i1 %cmp, %cmp1
3090   ret i1 %retval
3093 define i1 @auto_gen_134_logical(double %a, double %b) {
3094 ; CHECK-LABEL: @auto_gen_134_logical(
3095 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3096 ; CHECK-NEXT:    ret i1 [[CMP1]]
3098   %cmp = fcmp true double %a, %b
3099   %cmp1 = fcmp uno double %a, %b
3100   %retval = select i1 %cmp, i1 %cmp1, i1 false
3101   ret i1 %retval
3104 define i1 @auto_gen_135(double %a, double %b) {
3105 ; CHECK-LABEL: @auto_gen_135(
3106 ; CHECK-NEXT:    ret i1 true
3108   %cmp = fcmp true double %a, %b
3109   %cmp1 = fcmp true double %a, %b
3110   %retval = and i1 %cmp, %cmp1
3111   ret i1 %retval
3114 define i1 @auto_gen_135_logical(double %a, double %b) {
3115 ; CHECK-LABEL: @auto_gen_135_logical(
3116 ; CHECK-NEXT:    ret i1 true
3118   %cmp = fcmp true double %a, %b
3119   %cmp1 = fcmp true double %a, %b
3120   %retval = select i1 %cmp, i1 %cmp1, i1 false
3121   ret i1 %retval