[ARM] Better OR's for MVE compares
[llvm-core.git] / test / Transforms / InstCombine / or-fcmp.ll
blob10ac51ae32bc3f9056f913c283f83a82141818c0
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 uno double [[X:%.*]], [[Y:%.*]]
7 ; CHECK-NEXT:    ret i1 [[TMP1]]
9   %cmp1 = fcmp uno double %x, 0.0
10   %cmp2 = fcmp uno double %y, 0.0
11   %or = or i1 %cmp1, %cmp2
12   ret i1 %or
15 define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) {
16 ; CHECK-LABEL: @PR1738_vec_undef(
17 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno <2 x double> [[X:%.*]], [[Y:%.*]]
18 ; CHECK-NEXT:    ret <2 x i1> [[TMP1]]
20   %cmp1 = fcmp uno <2 x double> %x, <double 0.0, double undef>
21   %cmp2 = fcmp uno <2 x double> %y, <double undef, double 0.0>
22   %or = or <2 x i1> %cmp1, %cmp2
23   ret <2 x i1> %or
26 define i1 @PR41069(double %a, double %b, double %c, double %d) {
27 ; CHECK-LABEL: @PR41069(
28 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
29 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[D:%.*]], [[C:%.*]]
30 ; CHECK-NEXT:    [[R:%.*]] = or i1 [[TMP1]], [[UNO1]]
31 ; CHECK-NEXT:    ret i1 [[R]]
33   %uno1 = fcmp uno double %a, %b
34   %uno2 = fcmp uno double %c, 0.0
35   %or = or i1 %uno1, %uno2
36   %uno3 = fcmp uno double %d, 0.0
37   %r = or i1 %or, %uno3
38   ret i1 %r
41 define i1 @PR41069_commute(double %a, double %b, double %c, double %d) {
42 ; CHECK-LABEL: @PR41069_commute(
43 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
44 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[D:%.*]], [[C:%.*]]
45 ; CHECK-NEXT:    [[R:%.*]] = or i1 [[TMP1]], [[UNO1]]
46 ; CHECK-NEXT:    ret i1 [[R]]
48   %uno1 = fcmp uno double %a, %b
49   %uno2 = fcmp uno double %c, 0.0
50   %or = or i1 %uno1, %uno2
51   %uno3 = fcmp uno double %d, 0.0
52   %r = or i1 %uno3, %or
53   ret i1 %r
56 define <2 x i1> @PR41069_vec(<2 x i1> %z, <2 x float> %c, <2 x float> %d) {
57 ; CHECK-LABEL: @PR41069_vec(
58 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno <2 x float> [[D:%.*]], [[C:%.*]]
59 ; CHECK-NEXT:    [[R:%.*]] = or <2 x i1> [[TMP1]], [[Z:%.*]]
60 ; CHECK-NEXT:    ret <2 x i1> [[R]]
62   %uno1 = fcmp uno <2 x float> %c, zeroinitializer
63   %or = or <2 x i1> %uno1, %z
64   %uno2 = fcmp uno <2 x float> %d, <float 0.0, float undef>
65   %r = or <2 x i1> %or, %uno2
66   ret <2 x i1> %r
69 define <2 x i1> @PR41069_vec_commute(<2 x i1> %z, <2 x float> %c, <2 x float> %d) {
70 ; CHECK-LABEL: @PR41069_vec_commute(
71 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno <2 x float> [[D:%.*]], [[C:%.*]]
72 ; CHECK-NEXT:    [[R:%.*]] = or <2 x i1> [[TMP1]], [[Z:%.*]]
73 ; CHECK-NEXT:    ret <2 x i1> [[R]]
75   %uno1 = fcmp uno <2 x float> %c, zeroinitializer
76   %or = or <2 x i1> %uno1, %z
77   %uno2 = fcmp uno <2 x float> %d, <float 0.0, float undef>
78   %r = or <2 x i1> %uno2, %or
79   ret <2 x i1> %r
82 define i1 @fcmp_uno_nonzero(float %x, float %y) {
83 ; CHECK-LABEL: @fcmp_uno_nonzero(
84 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno float [[X:%.*]], [[Y:%.*]]
85 ; CHECK-NEXT:    ret i1 [[TMP1]]
87   %cmp1 = fcmp uno float %x, 1.0
88   %cmp2 = fcmp uno float %y, 2.0
89   %or = or i1 %cmp1, %cmp2
90   ret i1 %or
93 define <3 x i1> @fcmp_uno_nonzero_vec(<3 x float> %x, <3 x float> %y) {
94 ; CHECK-LABEL: @fcmp_uno_nonzero_vec(
95 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno <3 x float> [[X:%.*]], [[Y:%.*]]
96 ; CHECK-NEXT:    ret <3 x i1> [[TMP1]]
98   %cmp1 = fcmp uno <3 x float> %x, <float 1.0, float 2.0, float 3.0>
99   %cmp2 = fcmp uno <3 x float> %y, <float 3.0, float 2.0, float 1.0>
100   %or = or <3 x i1> %cmp1, %cmp2
101   ret <3 x i1> %or
104 define i1 @auto_gen_0(double %a, double %b) {
105 ; CHECK-LABEL: @auto_gen_0(
106 ; CHECK-NEXT:    ret i1 false
108   %cmp = fcmp false double %a, %b
109   %cmp1 = fcmp false double %a, %b
110   %retval = or i1 %cmp, %cmp1
111   ret i1 %retval
114 define i1 @auto_gen_1(double %a, double %b) {
115 ; CHECK-LABEL: @auto_gen_1(
116 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
117 ; CHECK-NEXT:    ret i1 [[CMP]]
119   %cmp = fcmp oeq double %a, %b
120   %cmp1 = fcmp false double %a, %b
121   %retval = or i1 %cmp, %cmp1
122   ret i1 %retval
125 define i1 @auto_gen_2(double %a, double %b) {
126 ; CHECK-LABEL: @auto_gen_2(
127 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
128 ; CHECK-NEXT:    ret i1 [[TMP1]]
130   %cmp = fcmp oeq double %a, %b
131   %cmp1 = fcmp oeq double %a, %b
132   %retval = or i1 %cmp, %cmp1
133   ret i1 %retval
136 define i1 @auto_gen_3(double %a, double %b) {
137 ; CHECK-LABEL: @auto_gen_3(
138 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
139 ; CHECK-NEXT:    ret i1 [[CMP]]
141   %cmp = fcmp ogt double %a, %b
142   %cmp1 = fcmp false double %a, %b
143   %retval = or i1 %cmp, %cmp1
144   ret i1 %retval
147 define i1 @auto_gen_4(double %a, double %b) {
148 ; CHECK-LABEL: @auto_gen_4(
149 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
150 ; CHECK-NEXT:    ret i1 [[TMP1]]
152   %cmp = fcmp ogt double %a, %b
153   %cmp1 = fcmp oeq double %a, %b
154   %retval = or i1 %cmp, %cmp1
155   ret i1 %retval
158 define i1 @auto_gen_5(double %a, double %b) {
159 ; CHECK-LABEL: @auto_gen_5(
160 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
161 ; CHECK-NEXT:    ret i1 [[TMP1]]
163   %cmp = fcmp ogt double %a, %b
164   %cmp1 = fcmp ogt double %a, %b
165   %retval = or i1 %cmp, %cmp1
166   ret i1 %retval
169 define i1 @auto_gen_6(double %a, double %b) {
170 ; CHECK-LABEL: @auto_gen_6(
171 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
172 ; CHECK-NEXT:    ret i1 [[CMP]]
174   %cmp = fcmp oge double %a, %b
175   %cmp1 = fcmp false double %a, %b
176   %retval = or i1 %cmp, %cmp1
177   ret i1 %retval
180 define i1 @auto_gen_7(double %a, double %b) {
181 ; CHECK-LABEL: @auto_gen_7(
182 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
183 ; CHECK-NEXT:    ret i1 [[TMP1]]
185   %cmp = fcmp oge double %a, %b
186   %cmp1 = fcmp oeq double %a, %b
187   %retval = or i1 %cmp, %cmp1
188   ret i1 %retval
191 define i1 @auto_gen_8(double %a, double %b) {
192 ; CHECK-LABEL: @auto_gen_8(
193 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
194 ; CHECK-NEXT:    ret i1 [[TMP1]]
196   %cmp = fcmp oge double %a, %b
197   %cmp1 = fcmp ogt double %a, %b
198   %retval = or i1 %cmp, %cmp1
199   ret i1 %retval
202 define i1 @auto_gen_9(double %a, double %b) {
203 ; CHECK-LABEL: @auto_gen_9(
204 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
205 ; CHECK-NEXT:    ret i1 [[TMP1]]
207   %cmp = fcmp oge double %a, %b
208   %cmp1 = fcmp oge double %a, %b
209   %retval = or i1 %cmp, %cmp1
210   ret i1 %retval
213 define i1 @auto_gen_10(double %a, double %b) {
214 ; CHECK-LABEL: @auto_gen_10(
215 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
216 ; CHECK-NEXT:    ret i1 [[CMP]]
218   %cmp = fcmp olt double %a, %b
219   %cmp1 = fcmp false double %a, %b
220   %retval = or i1 %cmp, %cmp1
221   ret i1 %retval
224 define i1 @auto_gen_11(double %a, double %b) {
225 ; CHECK-LABEL: @auto_gen_11(
226 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
227 ; CHECK-NEXT:    ret i1 [[TMP1]]
229   %cmp = fcmp olt double %a, %b
230   %cmp1 = fcmp oeq double %a, %b
231   %retval = or i1 %cmp, %cmp1
232   ret i1 %retval
235 define i1 @auto_gen_12(double %a, double %b) {
236 ; CHECK-LABEL: @auto_gen_12(
237 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
238 ; CHECK-NEXT:    ret i1 [[TMP1]]
240   %cmp = fcmp olt double %a, %b
241   %cmp1 = fcmp ogt double %a, %b
242   %retval = or i1 %cmp, %cmp1
243   ret i1 %retval
246 define i1 @auto_gen_13(double %a, double %b) {
247 ; CHECK-LABEL: @auto_gen_13(
248 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
249 ; CHECK-NEXT:    ret i1 [[TMP1]]
251   %cmp = fcmp olt double %a, %b
252   %cmp1 = fcmp oge double %a, %b
253   %retval = or i1 %cmp, %cmp1
254   ret i1 %retval
257 define i1 @auto_gen_14(double %a, double %b) {
258 ; CHECK-LABEL: @auto_gen_14(
259 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
260 ; CHECK-NEXT:    ret i1 [[TMP1]]
262   %cmp = fcmp olt double %a, %b
263   %cmp1 = fcmp olt double %a, %b
264   %retval = or i1 %cmp, %cmp1
265   ret i1 %retval
268 define i1 @auto_gen_15(double %a, double %b) {
269 ; CHECK-LABEL: @auto_gen_15(
270 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
271 ; CHECK-NEXT:    ret i1 [[CMP]]
273   %cmp = fcmp ole double %a, %b
274   %cmp1 = fcmp false double %a, %b
275   %retval = or i1 %cmp, %cmp1
276   ret i1 %retval
279 define i1 @auto_gen_16(double %a, double %b) {
280 ; CHECK-LABEL: @auto_gen_16(
281 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
282 ; CHECK-NEXT:    ret i1 [[TMP1]]
284   %cmp = fcmp ole double %a, %b
285   %cmp1 = fcmp oeq double %a, %b
286   %retval = or i1 %cmp, %cmp1
287   ret i1 %retval
290 define i1 @auto_gen_17(double %a, double %b) {
291 ; CHECK-LABEL: @auto_gen_17(
292 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
293 ; CHECK-NEXT:    ret i1 [[TMP1]]
295   %cmp = fcmp ole double %a, %b
296   %cmp1 = fcmp ogt double %a, %b
297   %retval = or i1 %cmp, %cmp1
298   ret i1 %retval
301 define i1 @auto_gen_18(double %a, double %b) {
302 ; CHECK-LABEL: @auto_gen_18(
303 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
304 ; CHECK-NEXT:    ret i1 [[TMP1]]
306   %cmp = fcmp ole double %a, %b
307   %cmp1 = fcmp oge double %a, %b
308   %retval = or i1 %cmp, %cmp1
309   ret i1 %retval
312 define i1 @auto_gen_19(double %a, double %b) {
313 ; CHECK-LABEL: @auto_gen_19(
314 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
315 ; CHECK-NEXT:    ret i1 [[TMP1]]
317   %cmp = fcmp ole double %a, %b
318   %cmp1 = fcmp olt double %a, %b
319   %retval = or i1 %cmp, %cmp1
320   ret i1 %retval
323 define i1 @auto_gen_20(double %a, double %b) {
324 ; CHECK-LABEL: @auto_gen_20(
325 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
326 ; CHECK-NEXT:    ret i1 [[TMP1]]
328   %cmp = fcmp ole double %a, %b
329   %cmp1 = fcmp ole double %a, %b
330   %retval = or i1 %cmp, %cmp1
331   ret i1 %retval
334 define i1 @auto_gen_21(double %a, double %b) {
335 ; CHECK-LABEL: @auto_gen_21(
336 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
337 ; CHECK-NEXT:    ret i1 [[CMP]]
339   %cmp = fcmp one double %a, %b
340   %cmp1 = fcmp false double %a, %b
341   %retval = or i1 %cmp, %cmp1
342   ret i1 %retval
345 define i1 @auto_gen_22(double %a, double %b) {
346 ; CHECK-LABEL: @auto_gen_22(
347 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
348 ; CHECK-NEXT:    ret i1 [[TMP1]]
350   %cmp = fcmp one double %a, %b
351   %cmp1 = fcmp oeq double %a, %b
352   %retval = or i1 %cmp, %cmp1
353   ret i1 %retval
356 define i1 @auto_gen_23(double %a, double %b) {
357 ; CHECK-LABEL: @auto_gen_23(
358 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
359 ; CHECK-NEXT:    ret i1 [[TMP1]]
361   %cmp = fcmp one double %a, %b
362   %cmp1 = fcmp ogt double %a, %b
363   %retval = or i1 %cmp, %cmp1
364   ret i1 %retval
367 define i1 @auto_gen_24(double %a, double %b) {
368 ; CHECK-LABEL: @auto_gen_24(
369 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
370 ; CHECK-NEXT:    ret i1 [[TMP1]]
372   %cmp = fcmp one double %a, %b
373   %cmp1 = fcmp oge double %a, %b
374   %retval = or i1 %cmp, %cmp1
375   ret i1 %retval
378 define i1 @auto_gen_25(double %a, double %b) {
379 ; CHECK-LABEL: @auto_gen_25(
380 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
381 ; CHECK-NEXT:    ret i1 [[TMP1]]
383   %cmp = fcmp one double %a, %b
384   %cmp1 = fcmp olt double %a, %b
385   %retval = or i1 %cmp, %cmp1
386   ret i1 %retval
389 define i1 @auto_gen_26(double %a, double %b) {
390 ; CHECK-LABEL: @auto_gen_26(
391 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
392 ; CHECK-NEXT:    ret i1 [[TMP1]]
394   %cmp = fcmp one double %a, %b
395   %cmp1 = fcmp ole double %a, %b
396   %retval = or i1 %cmp, %cmp1
397   ret i1 %retval
400 define i1 @auto_gen_27(double %a, double %b) {
401 ; CHECK-LABEL: @auto_gen_27(
402 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
403 ; CHECK-NEXT:    ret i1 [[TMP1]]
405   %cmp = fcmp one double %a, %b
406   %cmp1 = fcmp one double %a, %b
407   %retval = or i1 %cmp, %cmp1
408   ret i1 %retval
411 define i1 @auto_gen_28(double %a, double %b) {
412 ; CHECK-LABEL: @auto_gen_28(
413 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
414 ; CHECK-NEXT:    ret i1 [[CMP]]
416   %cmp = fcmp ord double %a, %b
417   %cmp1 = fcmp false double %a, %b
418   %retval = or i1 %cmp, %cmp1
419   ret i1 %retval
422 define i1 @auto_gen_29(double %a, double %b) {
423 ; CHECK-LABEL: @auto_gen_29(
424 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
425 ; CHECK-NEXT:    ret i1 [[TMP1]]
427   %cmp = fcmp ord double %a, %b
428   %cmp1 = fcmp oeq double %a, %b
429   %retval = or i1 %cmp, %cmp1
430   ret i1 %retval
433 define i1 @auto_gen_30(double %a, double %b) {
434 ; CHECK-LABEL: @auto_gen_30(
435 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
436 ; CHECK-NEXT:    ret i1 [[TMP1]]
438   %cmp = fcmp ord double %a, %b
439   %cmp1 = fcmp ogt double %a, %b
440   %retval = or i1 %cmp, %cmp1
441   ret i1 %retval
444 define i1 @auto_gen_31(double %a, double %b) {
445 ; CHECK-LABEL: @auto_gen_31(
446 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
447 ; CHECK-NEXT:    ret i1 [[TMP1]]
449   %cmp = fcmp ord double %a, %b
450   %cmp1 = fcmp oge double %a, %b
451   %retval = or i1 %cmp, %cmp1
452   ret i1 %retval
455 define i1 @auto_gen_32(double %a, double %b) {
456 ; CHECK-LABEL: @auto_gen_32(
457 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
458 ; CHECK-NEXT:    ret i1 [[TMP1]]
460   %cmp = fcmp ord double %a, %b
461   %cmp1 = fcmp olt double %a, %b
462   %retval = or i1 %cmp, %cmp1
463   ret i1 %retval
466 define i1 @auto_gen_33(double %a, double %b) {
467 ; CHECK-LABEL: @auto_gen_33(
468 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
469 ; CHECK-NEXT:    ret i1 [[TMP1]]
471   %cmp = fcmp ord double %a, %b
472   %cmp1 = fcmp ole double %a, %b
473   %retval = or i1 %cmp, %cmp1
474   ret i1 %retval
477 define i1 @auto_gen_34(double %a, double %b) {
478 ; CHECK-LABEL: @auto_gen_34(
479 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
480 ; CHECK-NEXT:    ret i1 [[TMP1]]
482   %cmp = fcmp ord double %a, %b
483   %cmp1 = fcmp one double %a, %b
484   %retval = or i1 %cmp, %cmp1
485   ret i1 %retval
488 define i1 @auto_gen_35(double %a, double %b) {
489 ; CHECK-LABEL: @auto_gen_35(
490 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
491 ; CHECK-NEXT:    ret i1 [[TMP1]]
493   %cmp = fcmp ord double %a, %b
494   %cmp1 = fcmp ord double %a, %b
495   %retval = or i1 %cmp, %cmp1
496   ret i1 %retval
499 define i1 @auto_gen_36(double %a, double %b) {
500 ; CHECK-LABEL: @auto_gen_36(
501 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
502 ; CHECK-NEXT:    ret i1 [[CMP]]
504   %cmp = fcmp ueq double %a, %b
505   %cmp1 = fcmp false double %a, %b
506   %retval = or i1 %cmp, %cmp1
507   ret i1 %retval
510 define i1 @auto_gen_37(double %a, double %b) {
511 ; CHECK-LABEL: @auto_gen_37(
512 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
513 ; CHECK-NEXT:    ret i1 [[TMP1]]
515   %cmp = fcmp ueq double %a, %b
516   %cmp1 = fcmp oeq double %a, %b
517   %retval = or i1 %cmp, %cmp1
518   ret i1 %retval
521 define i1 @auto_gen_38(double %a, double %b) {
522 ; CHECK-LABEL: @auto_gen_38(
523 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
524 ; CHECK-NEXT:    ret i1 [[TMP1]]
526   %cmp = fcmp ueq double %a, %b
527   %cmp1 = fcmp ogt double %a, %b
528   %retval = or i1 %cmp, %cmp1
529   ret i1 %retval
532 define i1 @auto_gen_39(double %a, double %b) {
533 ; CHECK-LABEL: @auto_gen_39(
534 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
535 ; CHECK-NEXT:    ret i1 [[TMP1]]
537   %cmp = fcmp ueq double %a, %b
538   %cmp1 = fcmp oge double %a, %b
539   %retval = or i1 %cmp, %cmp1
540   ret i1 %retval
543 define i1 @auto_gen_40(double %a, double %b) {
544 ; CHECK-LABEL: @auto_gen_40(
545 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
546 ; CHECK-NEXT:    ret i1 [[TMP1]]
548   %cmp = fcmp ueq double %a, %b
549   %cmp1 = fcmp olt double %a, %b
550   %retval = or i1 %cmp, %cmp1
551   ret i1 %retval
554 define i1 @auto_gen_41(double %a, double %b) {
555 ; CHECK-LABEL: @auto_gen_41(
556 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
557 ; CHECK-NEXT:    ret i1 [[TMP1]]
559   %cmp = fcmp ueq double %a, %b
560   %cmp1 = fcmp ole double %a, %b
561   %retval = or i1 %cmp, %cmp1
562   ret i1 %retval
565 define i1 @auto_gen_42(double %a, double %b) {
566 ; CHECK-LABEL: @auto_gen_42(
567 ; CHECK-NEXT:    ret i1 true
569   %cmp = fcmp ueq double %a, %b
570   %cmp1 = fcmp one double %a, %b
571   %retval = or i1 %cmp, %cmp1
572   ret i1 %retval
575 define i1 @auto_gen_43(double %a, double %b) {
576 ; CHECK-LABEL: @auto_gen_43(
577 ; CHECK-NEXT:    ret i1 true
579   %cmp = fcmp ueq double %a, %b
580   %cmp1 = fcmp ord double %a, %b
581   %retval = or i1 %cmp, %cmp1
582   ret i1 %retval
585 define i1 @auto_gen_44(double %a, double %b) {
586 ; CHECK-LABEL: @auto_gen_44(
587 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
588 ; CHECK-NEXT:    ret i1 [[TMP1]]
590   %cmp = fcmp ueq double %a, %b
591   %cmp1 = fcmp ueq double %a, %b
592   %retval = or i1 %cmp, %cmp1
593   ret i1 %retval
596 define i1 @auto_gen_45(double %a, double %b) {
597 ; CHECK-LABEL: @auto_gen_45(
598 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
599 ; CHECK-NEXT:    ret i1 [[CMP]]
601   %cmp = fcmp ugt double %a, %b
602   %cmp1 = fcmp false double %a, %b
603   %retval = or i1 %cmp, %cmp1
604   ret i1 %retval
607 define i1 @auto_gen_46(double %a, double %b) {
608 ; CHECK-LABEL: @auto_gen_46(
609 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
610 ; CHECK-NEXT:    ret i1 [[TMP1]]
612   %cmp = fcmp ugt double %a, %b
613   %cmp1 = fcmp oeq double %a, %b
614   %retval = or i1 %cmp, %cmp1
615   ret i1 %retval
618 define i1 @auto_gen_47(double %a, double %b) {
619 ; CHECK-LABEL: @auto_gen_47(
620 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
621 ; CHECK-NEXT:    ret i1 [[TMP1]]
623   %cmp = fcmp ugt double %a, %b
624   %cmp1 = fcmp ogt double %a, %b
625   %retval = or i1 %cmp, %cmp1
626   ret i1 %retval
629 define i1 @auto_gen_48(double %a, double %b) {
630 ; CHECK-LABEL: @auto_gen_48(
631 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
632 ; CHECK-NEXT:    ret i1 [[TMP1]]
634   %cmp = fcmp ugt double %a, %b
635   %cmp1 = fcmp oge double %a, %b
636   %retval = or i1 %cmp, %cmp1
637   ret i1 %retval
640 define i1 @auto_gen_49(double %a, double %b) {
641 ; CHECK-LABEL: @auto_gen_49(
642 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
643 ; CHECK-NEXT:    ret i1 [[TMP1]]
645   %cmp = fcmp ugt double %a, %b
646   %cmp1 = fcmp olt double %a, %b
647   %retval = or i1 %cmp, %cmp1
648   ret i1 %retval
651 define i1 @auto_gen_50(double %a, double %b) {
652 ; CHECK-LABEL: @auto_gen_50(
653 ; CHECK-NEXT:    ret i1 true
655   %cmp = fcmp ugt double %a, %b
656   %cmp1 = fcmp ole double %a, %b
657   %retval = or i1 %cmp, %cmp1
658   ret i1 %retval
661 define i1 @auto_gen_51(double %a, double %b) {
662 ; CHECK-LABEL: @auto_gen_51(
663 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
664 ; CHECK-NEXT:    ret i1 [[TMP1]]
666   %cmp = fcmp ugt double %a, %b
667   %cmp1 = fcmp one double %a, %b
668   %retval = or i1 %cmp, %cmp1
669   ret i1 %retval
672 define i1 @auto_gen_52(double %a, double %b) {
673 ; CHECK-LABEL: @auto_gen_52(
674 ; CHECK-NEXT:    ret i1 true
676   %cmp = fcmp ugt double %a, %b
677   %cmp1 = fcmp ord double %a, %b
678   %retval = or i1 %cmp, %cmp1
679   ret i1 %retval
682 define i1 @auto_gen_53(double %a, double %b) {
683 ; CHECK-LABEL: @auto_gen_53(
684 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
685 ; CHECK-NEXT:    ret i1 [[TMP1]]
687   %cmp = fcmp ugt double %a, %b
688   %cmp1 = fcmp ueq double %a, %b
689   %retval = or i1 %cmp, %cmp1
690   ret i1 %retval
693 define i1 @auto_gen_54(double %a, double %b) {
694 ; CHECK-LABEL: @auto_gen_54(
695 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
696 ; CHECK-NEXT:    ret i1 [[TMP1]]
698   %cmp = fcmp ugt double %a, %b
699   %cmp1 = fcmp ugt double %a, %b
700   %retval = or i1 %cmp, %cmp1
701   ret i1 %retval
704 define i1 @auto_gen_55(double %a, double %b) {
705 ; CHECK-LABEL: @auto_gen_55(
706 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
707 ; CHECK-NEXT:    ret i1 [[CMP]]
709   %cmp = fcmp uge double %a, %b
710   %cmp1 = fcmp false double %a, %b
711   %retval = or i1 %cmp, %cmp1
712   ret i1 %retval
715 define i1 @auto_gen_56(double %a, double %b) {
716 ; CHECK-LABEL: @auto_gen_56(
717 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
718 ; CHECK-NEXT:    ret i1 [[TMP1]]
720   %cmp = fcmp uge double %a, %b
721   %cmp1 = fcmp oeq double %a, %b
722   %retval = or i1 %cmp, %cmp1
723   ret i1 %retval
726 define i1 @auto_gen_57(double %a, double %b) {
727 ; CHECK-LABEL: @auto_gen_57(
728 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
729 ; CHECK-NEXT:    ret i1 [[TMP1]]
731   %cmp = fcmp uge double %a, %b
732   %cmp1 = fcmp ogt double %a, %b
733   %retval = or i1 %cmp, %cmp1
734   ret i1 %retval
737 define i1 @auto_gen_58(double %a, double %b) {
738 ; CHECK-LABEL: @auto_gen_58(
739 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
740 ; CHECK-NEXT:    ret i1 [[TMP1]]
742   %cmp = fcmp uge double %a, %b
743   %cmp1 = fcmp oge double %a, %b
744   %retval = or i1 %cmp, %cmp1
745   ret i1 %retval
748 define i1 @auto_gen_59(double %a, double %b) {
749 ; CHECK-LABEL: @auto_gen_59(
750 ; CHECK-NEXT:    ret i1 true
752   %cmp = fcmp uge double %a, %b
753   %cmp1 = fcmp olt double %a, %b
754   %retval = or i1 %cmp, %cmp1
755   ret i1 %retval
758 define i1 @auto_gen_60(double %a, double %b) {
759 ; CHECK-LABEL: @auto_gen_60(
760 ; CHECK-NEXT:    ret i1 true
762   %cmp = fcmp uge double %a, %b
763   %cmp1 = fcmp ole double %a, %b
764   %retval = or i1 %cmp, %cmp1
765   ret i1 %retval
768 define i1 @auto_gen_61(double %a, double %b) {
769 ; CHECK-LABEL: @auto_gen_61(
770 ; CHECK-NEXT:    ret i1 true
772   %cmp = fcmp uge double %a, %b
773   %cmp1 = fcmp one double %a, %b
774   %retval = or i1 %cmp, %cmp1
775   ret i1 %retval
778 define i1 @auto_gen_62(double %a, double %b) {
779 ; CHECK-LABEL: @auto_gen_62(
780 ; CHECK-NEXT:    ret i1 true
782   %cmp = fcmp uge double %a, %b
783   %cmp1 = fcmp ord double %a, %b
784   %retval = or i1 %cmp, %cmp1
785   ret i1 %retval
788 define i1 @auto_gen_63(double %a, double %b) {
789 ; CHECK-LABEL: @auto_gen_63(
790 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
791 ; CHECK-NEXT:    ret i1 [[TMP1]]
793   %cmp = fcmp uge double %a, %b
794   %cmp1 = fcmp ueq double %a, %b
795   %retval = or i1 %cmp, %cmp1
796   ret i1 %retval
799 define i1 @auto_gen_64(double %a, double %b) {
800 ; CHECK-LABEL: @auto_gen_64(
801 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
802 ; CHECK-NEXT:    ret i1 [[TMP1]]
804   %cmp = fcmp uge double %a, %b
805   %cmp1 = fcmp ugt double %a, %b
806   %retval = or i1 %cmp, %cmp1
807   ret i1 %retval
810 define i1 @auto_gen_65(double %a, double %b) {
811 ; CHECK-LABEL: @auto_gen_65(
812 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
813 ; CHECK-NEXT:    ret i1 [[TMP1]]
815   %cmp = fcmp uge double %a, %b
816   %cmp1 = fcmp uge double %a, %b
817   %retval = or i1 %cmp, %cmp1
818   ret i1 %retval
821 define i1 @auto_gen_66(double %a, double %b) {
822 ; CHECK-LABEL: @auto_gen_66(
823 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
824 ; CHECK-NEXT:    ret i1 [[CMP]]
826   %cmp = fcmp ult double %a, %b
827   %cmp1 = fcmp false double %a, %b
828   %retval = or i1 %cmp, %cmp1
829   ret i1 %retval
832 define i1 @auto_gen_67(double %a, double %b) {
833 ; CHECK-LABEL: @auto_gen_67(
834 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
835 ; CHECK-NEXT:    ret i1 [[TMP1]]
837   %cmp = fcmp ult double %a, %b
838   %cmp1 = fcmp oeq double %a, %b
839   %retval = or i1 %cmp, %cmp1
840   ret i1 %retval
843 define i1 @auto_gen_68(double %a, double %b) {
844 ; CHECK-LABEL: @auto_gen_68(
845 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
846 ; CHECK-NEXT:    ret i1 [[TMP1]]
848   %cmp = fcmp ult double %a, %b
849   %cmp1 = fcmp ogt double %a, %b
850   %retval = or i1 %cmp, %cmp1
851   ret i1 %retval
854 define i1 @auto_gen_69(double %a, double %b) {
855 ; CHECK-LABEL: @auto_gen_69(
856 ; CHECK-NEXT:    ret i1 true
858   %cmp = fcmp ult double %a, %b
859   %cmp1 = fcmp oge double %a, %b
860   %retval = or i1 %cmp, %cmp1
861   ret i1 %retval
864 define i1 @auto_gen_70(double %a, double %b) {
865 ; CHECK-LABEL: @auto_gen_70(
866 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
867 ; CHECK-NEXT:    ret i1 [[TMP1]]
869   %cmp = fcmp ult double %a, %b
870   %cmp1 = fcmp olt double %a, %b
871   %retval = or i1 %cmp, %cmp1
872   ret i1 %retval
875 define i1 @auto_gen_71(double %a, double %b) {
876 ; CHECK-LABEL: @auto_gen_71(
877 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
878 ; CHECK-NEXT:    ret i1 [[TMP1]]
880   %cmp = fcmp ult double %a, %b
881   %cmp1 = fcmp ole double %a, %b
882   %retval = or i1 %cmp, %cmp1
883   ret i1 %retval
886 define i1 @auto_gen_72(double %a, double %b) {
887 ; CHECK-LABEL: @auto_gen_72(
888 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
889 ; CHECK-NEXT:    ret i1 [[TMP1]]
891   %cmp = fcmp ult double %a, %b
892   %cmp1 = fcmp one double %a, %b
893   %retval = or i1 %cmp, %cmp1
894   ret i1 %retval
897 define i1 @auto_gen_73(double %a, double %b) {
898 ; CHECK-LABEL: @auto_gen_73(
899 ; CHECK-NEXT:    ret i1 true
901   %cmp = fcmp ult double %a, %b
902   %cmp1 = fcmp ord double %a, %b
903   %retval = or i1 %cmp, %cmp1
904   ret i1 %retval
907 define i1 @auto_gen_74(double %a, double %b) {
908 ; CHECK-LABEL: @auto_gen_74(
909 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
910 ; CHECK-NEXT:    ret i1 [[TMP1]]
912   %cmp = fcmp ult double %a, %b
913   %cmp1 = fcmp ueq double %a, %b
914   %retval = or i1 %cmp, %cmp1
915   ret i1 %retval
918 define i1 @auto_gen_75(double %a, double %b) {
919 ; CHECK-LABEL: @auto_gen_75(
920 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
921 ; CHECK-NEXT:    ret i1 [[TMP1]]
923   %cmp = fcmp ult double %a, %b
924   %cmp1 = fcmp ugt double %a, %b
925   %retval = or i1 %cmp, %cmp1
926   ret i1 %retval
929 define i1 @auto_gen_76(double %a, double %b) {
930 ; CHECK-LABEL: @auto_gen_76(
931 ; CHECK-NEXT:    ret i1 true
933   %cmp = fcmp ult double %a, %b
934   %cmp1 = fcmp uge double %a, %b
935   %retval = or i1 %cmp, %cmp1
936   ret i1 %retval
939 define i1 @auto_gen_77(double %a, double %b) {
940 ; CHECK-LABEL: @auto_gen_77(
941 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
942 ; CHECK-NEXT:    ret i1 [[TMP1]]
944   %cmp = fcmp ult double %a, %b
945   %cmp1 = fcmp ult double %a, %b
946   %retval = or i1 %cmp, %cmp1
947   ret i1 %retval
950 define i1 @auto_gen_78(double %a, double %b) {
951 ; CHECK-LABEL: @auto_gen_78(
952 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
953 ; CHECK-NEXT:    ret i1 [[CMP]]
955   %cmp = fcmp ule double %a, %b
956   %cmp1 = fcmp false double %a, %b
957   %retval = or i1 %cmp, %cmp1
958   ret i1 %retval
961 define i1 @auto_gen_79(double %a, double %b) {
962 ; CHECK-LABEL: @auto_gen_79(
963 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
964 ; CHECK-NEXT:    ret i1 [[TMP1]]
966   %cmp = fcmp ule double %a, %b
967   %cmp1 = fcmp oeq double %a, %b
968   %retval = or i1 %cmp, %cmp1
969   ret i1 %retval
972 define i1 @auto_gen_80(double %a, double %b) {
973 ; CHECK-LABEL: @auto_gen_80(
974 ; CHECK-NEXT:    ret i1 true
976   %cmp = fcmp ule double %a, %b
977   %cmp1 = fcmp ogt double %a, %b
978   %retval = or i1 %cmp, %cmp1
979   ret i1 %retval
982 define i1 @auto_gen_81(double %a, double %b) {
983 ; CHECK-LABEL: @auto_gen_81(
984 ; CHECK-NEXT:    ret i1 true
986   %cmp = fcmp ule double %a, %b
987   %cmp1 = fcmp oge double %a, %b
988   %retval = or i1 %cmp, %cmp1
989   ret i1 %retval
992 define i1 @auto_gen_82(double %a, double %b) {
993 ; CHECK-LABEL: @auto_gen_82(
994 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
995 ; CHECK-NEXT:    ret i1 [[TMP1]]
997   %cmp = fcmp ule double %a, %b
998   %cmp1 = fcmp olt double %a, %b
999   %retval = or i1 %cmp, %cmp1
1000   ret i1 %retval
1003 define i1 @auto_gen_83(double %a, double %b) {
1004 ; CHECK-LABEL: @auto_gen_83(
1005 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1006 ; CHECK-NEXT:    ret i1 [[TMP1]]
1008   %cmp = fcmp ule double %a, %b
1009   %cmp1 = fcmp ole double %a, %b
1010   %retval = or i1 %cmp, %cmp1
1011   ret i1 %retval
1014 define i1 @auto_gen_84(double %a, double %b) {
1015 ; CHECK-LABEL: @auto_gen_84(
1016 ; CHECK-NEXT:    ret i1 true
1018   %cmp = fcmp ule double %a, %b
1019   %cmp1 = fcmp one double %a, %b
1020   %retval = or i1 %cmp, %cmp1
1021   ret i1 %retval
1024 define i1 @auto_gen_85(double %a, double %b) {
1025 ; CHECK-LABEL: @auto_gen_85(
1026 ; CHECK-NEXT:    ret i1 true
1028   %cmp = fcmp ule double %a, %b
1029   %cmp1 = fcmp ord double %a, %b
1030   %retval = or i1 %cmp, %cmp1
1031   ret i1 %retval
1034 define i1 @auto_gen_86(double %a, double %b) {
1035 ; CHECK-LABEL: @auto_gen_86(
1036 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1037 ; CHECK-NEXT:    ret i1 [[TMP1]]
1039   %cmp = fcmp ule double %a, %b
1040   %cmp1 = fcmp ueq double %a, %b
1041   %retval = or i1 %cmp, %cmp1
1042   ret i1 %retval
1045 define i1 @auto_gen_87(double %a, double %b) {
1046 ; CHECK-LABEL: @auto_gen_87(
1047 ; CHECK-NEXT:    ret i1 true
1049   %cmp = fcmp ule double %a, %b
1050   %cmp1 = fcmp ugt double %a, %b
1051   %retval = or i1 %cmp, %cmp1
1052   ret i1 %retval
1055 define i1 @auto_gen_88(double %a, double %b) {
1056 ; CHECK-LABEL: @auto_gen_88(
1057 ; CHECK-NEXT:    ret i1 true
1059   %cmp = fcmp ule double %a, %b
1060   %cmp1 = fcmp uge double %a, %b
1061   %retval = or i1 %cmp, %cmp1
1062   ret i1 %retval
1065 define i1 @auto_gen_89(double %a, double %b) {
1066 ; CHECK-LABEL: @auto_gen_89(
1067 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1068 ; CHECK-NEXT:    ret i1 [[TMP1]]
1070   %cmp = fcmp ule double %a, %b
1071   %cmp1 = fcmp ult double %a, %b
1072   %retval = or i1 %cmp, %cmp1
1073   ret i1 %retval
1076 define i1 @auto_gen_90(double %a, double %b) {
1077 ; CHECK-LABEL: @auto_gen_90(
1078 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1079 ; CHECK-NEXT:    ret i1 [[TMP1]]
1081   %cmp = fcmp ule double %a, %b
1082   %cmp1 = fcmp ule double %a, %b
1083   %retval = or i1 %cmp, %cmp1
1084   ret i1 %retval
1087 define i1 @auto_gen_91(double %a, double %b) {
1088 ; CHECK-LABEL: @auto_gen_91(
1089 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1090 ; CHECK-NEXT:    ret i1 [[CMP]]
1092   %cmp = fcmp une double %a, %b
1093   %cmp1 = fcmp false double %a, %b
1094   %retval = or i1 %cmp, %cmp1
1095   ret i1 %retval
1098 define i1 @auto_gen_92(double %a, double %b) {
1099 ; CHECK-LABEL: @auto_gen_92(
1100 ; CHECK-NEXT:    ret i1 true
1102   %cmp = fcmp une double %a, %b
1103   %cmp1 = fcmp oeq double %a, %b
1104   %retval = or i1 %cmp, %cmp1
1105   ret i1 %retval
1108 define i1 @auto_gen_93(double %a, double %b) {
1109 ; CHECK-LABEL: @auto_gen_93(
1110 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1111 ; CHECK-NEXT:    ret i1 [[TMP1]]
1113   %cmp = fcmp une double %a, %b
1114   %cmp1 = fcmp ogt double %a, %b
1115   %retval = or i1 %cmp, %cmp1
1116   ret i1 %retval
1119 define i1 @auto_gen_94(double %a, double %b) {
1120 ; CHECK-LABEL: @auto_gen_94(
1121 ; CHECK-NEXT:    ret i1 true
1123   %cmp = fcmp une double %a, %b
1124   %cmp1 = fcmp oge double %a, %b
1125   %retval = or i1 %cmp, %cmp1
1126   ret i1 %retval
1129 define i1 @auto_gen_95(double %a, double %b) {
1130 ; CHECK-LABEL: @auto_gen_95(
1131 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1132 ; CHECK-NEXT:    ret i1 [[TMP1]]
1134   %cmp = fcmp une double %a, %b
1135   %cmp1 = fcmp olt double %a, %b
1136   %retval = or i1 %cmp, %cmp1
1137   ret i1 %retval
1140 define i1 @auto_gen_96(double %a, double %b) {
1141 ; CHECK-LABEL: @auto_gen_96(
1142 ; CHECK-NEXT:    ret i1 true
1144   %cmp = fcmp une double %a, %b
1145   %cmp1 = fcmp ole double %a, %b
1146   %retval = or i1 %cmp, %cmp1
1147   ret i1 %retval
1150 define i1 @auto_gen_97(double %a, double %b) {
1151 ; CHECK-LABEL: @auto_gen_97(
1152 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1153 ; CHECK-NEXT:    ret i1 [[TMP1]]
1155   %cmp = fcmp une double %a, %b
1156   %cmp1 = fcmp one double %a, %b
1157   %retval = or i1 %cmp, %cmp1
1158   ret i1 %retval
1161 define i1 @auto_gen_98(double %a, double %b) {
1162 ; CHECK-LABEL: @auto_gen_98(
1163 ; CHECK-NEXT:    ret i1 true
1165   %cmp = fcmp une double %a, %b
1166   %cmp1 = fcmp ord double %a, %b
1167   %retval = or i1 %cmp, %cmp1
1168   ret i1 %retval
1171 define i1 @auto_gen_99(double %a, double %b) {
1172 ; CHECK-LABEL: @auto_gen_99(
1173 ; CHECK-NEXT:    ret i1 true
1175   %cmp = fcmp une double %a, %b
1176   %cmp1 = fcmp ueq double %a, %b
1177   %retval = or i1 %cmp, %cmp1
1178   ret i1 %retval
1181 define i1 @auto_gen_100(double %a, double %b) {
1182 ; CHECK-LABEL: @auto_gen_100(
1183 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1184 ; CHECK-NEXT:    ret i1 [[TMP1]]
1186   %cmp = fcmp une double %a, %b
1187   %cmp1 = fcmp ugt double %a, %b
1188   %retval = or i1 %cmp, %cmp1
1189   ret i1 %retval
1192 define i1 @auto_gen_101(double %a, double %b) {
1193 ; CHECK-LABEL: @auto_gen_101(
1194 ; CHECK-NEXT:    ret i1 true
1196   %cmp = fcmp une double %a, %b
1197   %cmp1 = fcmp uge double %a, %b
1198   %retval = or i1 %cmp, %cmp1
1199   ret i1 %retval
1202 define i1 @auto_gen_102(double %a, double %b) {
1203 ; CHECK-LABEL: @auto_gen_102(
1204 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1205 ; CHECK-NEXT:    ret i1 [[TMP1]]
1207   %cmp = fcmp une double %a, %b
1208   %cmp1 = fcmp ult double %a, %b
1209   %retval = or i1 %cmp, %cmp1
1210   ret i1 %retval
1213 define i1 @auto_gen_103(double %a, double %b) {
1214 ; CHECK-LABEL: @auto_gen_103(
1215 ; CHECK-NEXT:    ret i1 true
1217   %cmp = fcmp une double %a, %b
1218   %cmp1 = fcmp ule double %a, %b
1219   %retval = or i1 %cmp, %cmp1
1220   ret i1 %retval
1223 define i1 @auto_gen_104(double %a, double %b) {
1224 ; CHECK-LABEL: @auto_gen_104(
1225 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1226 ; CHECK-NEXT:    ret i1 [[TMP1]]
1228   %cmp = fcmp une double %a, %b
1229   %cmp1 = fcmp une double %a, %b
1230   %retval = or i1 %cmp, %cmp1
1231   ret i1 %retval
1234 define i1 @auto_gen_105(double %a, double %b) {
1235 ; CHECK-LABEL: @auto_gen_105(
1236 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1237 ; CHECK-NEXT:    ret i1 [[CMP]]
1239   %cmp = fcmp uno double %a, %b
1240   %cmp1 = fcmp false double %a, %b
1241   %retval = or i1 %cmp, %cmp1
1242   ret i1 %retval
1245 define i1 @auto_gen_106(double %a, double %b) {
1246 ; CHECK-LABEL: @auto_gen_106(
1247 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1248 ; CHECK-NEXT:    ret i1 [[TMP1]]
1250   %cmp = fcmp uno double %a, %b
1251   %cmp1 = fcmp oeq double %a, %b
1252   %retval = or i1 %cmp, %cmp1
1253   ret i1 %retval
1256 define i1 @auto_gen_107(double %a, double %b) {
1257 ; CHECK-LABEL: @auto_gen_107(
1258 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1259 ; CHECK-NEXT:    ret i1 [[TMP1]]
1261   %cmp = fcmp uno double %a, %b
1262   %cmp1 = fcmp ogt double %a, %b
1263   %retval = or i1 %cmp, %cmp1
1264   ret i1 %retval
1267 define i1 @auto_gen_108(double %a, double %b) {
1268 ; CHECK-LABEL: @auto_gen_108(
1269 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1270 ; CHECK-NEXT:    ret i1 [[TMP1]]
1272   %cmp = fcmp uno double %a, %b
1273   %cmp1 = fcmp oge double %a, %b
1274   %retval = or i1 %cmp, %cmp1
1275   ret i1 %retval
1278 define i1 @auto_gen_109(double %a, double %b) {
1279 ; CHECK-LABEL: @auto_gen_109(
1280 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1281 ; CHECK-NEXT:    ret i1 [[TMP1]]
1283   %cmp = fcmp uno double %a, %b
1284   %cmp1 = fcmp olt double %a, %b
1285   %retval = or i1 %cmp, %cmp1
1286   ret i1 %retval
1289 define i1 @auto_gen_110(double %a, double %b) {
1290 ; CHECK-LABEL: @auto_gen_110(
1291 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1292 ; CHECK-NEXT:    ret i1 [[TMP1]]
1294   %cmp = fcmp uno double %a, %b
1295   %cmp1 = fcmp ole double %a, %b
1296   %retval = or i1 %cmp, %cmp1
1297   ret i1 %retval
1300 define i1 @auto_gen_111(double %a, double %b) {
1301 ; CHECK-LABEL: @auto_gen_111(
1302 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1303 ; CHECK-NEXT:    ret i1 [[TMP1]]
1305   %cmp = fcmp uno double %a, %b
1306   %cmp1 = fcmp one double %a, %b
1307   %retval = or i1 %cmp, %cmp1
1308   ret i1 %retval
1311 define i1 @auto_gen_112(double %a, double %b) {
1312 ; CHECK-LABEL: @auto_gen_112(
1313 ; CHECK-NEXT:    ret i1 true
1315   %cmp = fcmp uno double %a, %b
1316   %cmp1 = fcmp ord double %a, %b
1317   %retval = or i1 %cmp, %cmp1
1318   ret i1 %retval
1321 define i1 @auto_gen_113(double %a, double %b) {
1322 ; CHECK-LABEL: @auto_gen_113(
1323 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1324 ; CHECK-NEXT:    ret i1 [[TMP1]]
1326   %cmp = fcmp uno double %a, %b
1327   %cmp1 = fcmp ueq double %a, %b
1328   %retval = or i1 %cmp, %cmp1
1329   ret i1 %retval
1332 define i1 @auto_gen_114(double %a, double %b) {
1333 ; CHECK-LABEL: @auto_gen_114(
1334 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1335 ; CHECK-NEXT:    ret i1 [[TMP1]]
1337   %cmp = fcmp uno double %a, %b
1338   %cmp1 = fcmp ugt double %a, %b
1339   %retval = or i1 %cmp, %cmp1
1340   ret i1 %retval
1343 define i1 @auto_gen_115(double %a, double %b) {
1344 ; CHECK-LABEL: @auto_gen_115(
1345 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1346 ; CHECK-NEXT:    ret i1 [[TMP1]]
1348   %cmp = fcmp uno double %a, %b
1349   %cmp1 = fcmp uge double %a, %b
1350   %retval = or i1 %cmp, %cmp1
1351   ret i1 %retval
1354 define i1 @auto_gen_116(double %a, double %b) {
1355 ; CHECK-LABEL: @auto_gen_116(
1356 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1357 ; CHECK-NEXT:    ret i1 [[TMP1]]
1359   %cmp = fcmp uno double %a, %b
1360   %cmp1 = fcmp ult double %a, %b
1361   %retval = or i1 %cmp, %cmp1
1362   ret i1 %retval
1365 define i1 @auto_gen_117(double %a, double %b) {
1366 ; CHECK-LABEL: @auto_gen_117(
1367 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1368 ; CHECK-NEXT:    ret i1 [[TMP1]]
1370   %cmp = fcmp uno double %a, %b
1371   %cmp1 = fcmp ule double %a, %b
1372   %retval = or i1 %cmp, %cmp1
1373   ret i1 %retval
1376 define i1 @auto_gen_118(double %a, double %b) {
1377 ; CHECK-LABEL: @auto_gen_118(
1378 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1379 ; CHECK-NEXT:    ret i1 [[TMP1]]
1381   %cmp = fcmp uno double %a, %b
1382   %cmp1 = fcmp une double %a, %b
1383   %retval = or i1 %cmp, %cmp1
1384   ret i1 %retval
1387 define i1 @auto_gen_119(double %a, double %b) {
1388 ; CHECK-LABEL: @auto_gen_119(
1389 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1390 ; CHECK-NEXT:    ret i1 [[TMP1]]
1392   %cmp = fcmp uno double %a, %b
1393   %cmp1 = fcmp uno double %a, %b
1394   %retval = or i1 %cmp, %cmp1
1395   ret i1 %retval
1398 define i1 @auto_gen_120(double %a, double %b) {
1399 ; CHECK-LABEL: @auto_gen_120(
1400 ; CHECK-NEXT:    ret i1 true
1402   %cmp = fcmp true double %a, %b
1403   %cmp1 = fcmp false double %a, %b
1404   %retval = or i1 %cmp, %cmp1
1405   ret i1 %retval
1408 define i1 @auto_gen_121(double %a, double %b) {
1409 ; CHECK-LABEL: @auto_gen_121(
1410 ; CHECK-NEXT:    ret i1 true
1412   %cmp = fcmp true double %a, %b
1413   %cmp1 = fcmp oeq double %a, %b
1414   %retval = or i1 %cmp, %cmp1
1415   ret i1 %retval
1418 define i1 @auto_gen_122(double %a, double %b) {
1419 ; CHECK-LABEL: @auto_gen_122(
1420 ; CHECK-NEXT:    ret i1 true
1422   %cmp = fcmp true double %a, %b
1423   %cmp1 = fcmp ogt double %a, %b
1424   %retval = or i1 %cmp, %cmp1
1425   ret i1 %retval
1428 define i1 @auto_gen_123(double %a, double %b) {
1429 ; CHECK-LABEL: @auto_gen_123(
1430 ; CHECK-NEXT:    ret i1 true
1432   %cmp = fcmp true double %a, %b
1433   %cmp1 = fcmp oge double %a, %b
1434   %retval = or i1 %cmp, %cmp1
1435   ret i1 %retval
1438 define i1 @auto_gen_124(double %a, double %b) {
1439 ; CHECK-LABEL: @auto_gen_124(
1440 ; CHECK-NEXT:    ret i1 true
1442   %cmp = fcmp true double %a, %b
1443   %cmp1 = fcmp olt double %a, %b
1444   %retval = or i1 %cmp, %cmp1
1445   ret i1 %retval
1448 define i1 @auto_gen_125(double %a, double %b) {
1449 ; CHECK-LABEL: @auto_gen_125(
1450 ; CHECK-NEXT:    ret i1 true
1452   %cmp = fcmp true double %a, %b
1453   %cmp1 = fcmp ole double %a, %b
1454   %retval = or i1 %cmp, %cmp1
1455   ret i1 %retval
1458 define i1 @auto_gen_126(double %a, double %b) {
1459 ; CHECK-LABEL: @auto_gen_126(
1460 ; CHECK-NEXT:    ret i1 true
1462   %cmp = fcmp true double %a, %b
1463   %cmp1 = fcmp one double %a, %b
1464   %retval = or i1 %cmp, %cmp1
1465   ret i1 %retval
1468 define i1 @auto_gen_127(double %a, double %b) {
1469 ; CHECK-LABEL: @auto_gen_127(
1470 ; CHECK-NEXT:    ret i1 true
1472   %cmp = fcmp true double %a, %b
1473   %cmp1 = fcmp ord double %a, %b
1474   %retval = or i1 %cmp, %cmp1
1475   ret i1 %retval
1478 define i1 @auto_gen_128(double %a, double %b) {
1479 ; CHECK-LABEL: @auto_gen_128(
1480 ; CHECK-NEXT:    ret i1 true
1482   %cmp = fcmp true double %a, %b
1483   %cmp1 = fcmp ueq double %a, %b
1484   %retval = or i1 %cmp, %cmp1
1485   ret i1 %retval
1488 define i1 @auto_gen_129(double %a, double %b) {
1489 ; CHECK-LABEL: @auto_gen_129(
1490 ; CHECK-NEXT:    ret i1 true
1492   %cmp = fcmp true double %a, %b
1493   %cmp1 = fcmp ugt double %a, %b
1494   %retval = or i1 %cmp, %cmp1
1495   ret i1 %retval
1498 define i1 @auto_gen_130(double %a, double %b) {
1499 ; CHECK-LABEL: @auto_gen_130(
1500 ; CHECK-NEXT:    ret i1 true
1502   %cmp = fcmp true double %a, %b
1503   %cmp1 = fcmp uge double %a, %b
1504   %retval = or i1 %cmp, %cmp1
1505   ret i1 %retval
1508 define i1 @auto_gen_131(double %a, double %b) {
1509 ; CHECK-LABEL: @auto_gen_131(
1510 ; CHECK-NEXT:    ret i1 true
1512   %cmp = fcmp true double %a, %b
1513   %cmp1 = fcmp ult double %a, %b
1514   %retval = or i1 %cmp, %cmp1
1515   ret i1 %retval
1518 define i1 @auto_gen_132(double %a, double %b) {
1519 ; CHECK-LABEL: @auto_gen_132(
1520 ; CHECK-NEXT:    ret i1 true
1522   %cmp = fcmp true double %a, %b
1523   %cmp1 = fcmp ule double %a, %b
1524   %retval = or i1 %cmp, %cmp1
1525   ret i1 %retval
1528 define i1 @auto_gen_133(double %a, double %b) {
1529 ; CHECK-LABEL: @auto_gen_133(
1530 ; CHECK-NEXT:    ret i1 true
1532   %cmp = fcmp true double %a, %b
1533   %cmp1 = fcmp une double %a, %b
1534   %retval = or i1 %cmp, %cmp1
1535   ret i1 %retval
1538 define i1 @auto_gen_134(double %a, double %b) {
1539 ; CHECK-LABEL: @auto_gen_134(
1540 ; CHECK-NEXT:    ret i1 true
1542   %cmp = fcmp true double %a, %b
1543   %cmp1 = fcmp uno double %a, %b
1544   %retval = or i1 %cmp, %cmp1
1545   ret i1 %retval
1548 define i1 @auto_gen_135(double %a, double %b) {
1549 ; CHECK-LABEL: @auto_gen_135(
1550 ; CHECK-NEXT:    ret i1 true
1552   %cmp = fcmp true double %a, %b
1553   %cmp1 = fcmp true double %a, %b
1554   %retval = or i1 %cmp, %cmp1
1555   ret i1 %retval