[AArch64][NFC] NFC for const vector as Instruction operand (#116790)
[llvm-project.git] / llvm / test / Transforms / InstCombine / or-fcmp.ll
bloba2842f7a45f597951f00da67da8301005197c1b4
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=instcombine -S | FileCheck %s
4 define i1 @PR1738(double %x, double %y) {
5 ; CHECK-LABEL: @PR1738(
6 ; CHECK-NEXT:    [[OR:%.*]] = fcmp uno double [[X:%.*]], [[Y:%.*]]
7 ; CHECK-NEXT:    ret i1 [[OR]]
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 ; TODO: this can be fixed by freezing %y
16 define i1 @PR1738_logical(double %x, double %y) {
17 ; CHECK-LABEL: @PR1738_logical(
18 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uno double [[X:%.*]], 0.000000e+00
19 ; CHECK-NEXT:    [[CMP2:%.*]] = fcmp uno double [[Y:%.*]], 0.000000e+00
20 ; CHECK-NEXT:    [[OR:%.*]] = select i1 [[CMP1]], i1 true, i1 [[CMP2]]
21 ; CHECK-NEXT:    ret i1 [[OR]]
23   %cmp1 = fcmp uno double %x, 0.0
24   %cmp2 = fcmp uno double %y, 0.0
25   %or = select i1 %cmp1, i1 true, i1 %cmp2
26   ret i1 %or
29 define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) {
30 ; CHECK-LABEL: @PR1738_vec_undef(
31 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uno <2 x double> [[X:%.*]], <double 0.000000e+00, double undef>
32 ; CHECK-NEXT:    [[CMP2:%.*]] = fcmp uno <2 x double> [[Y:%.*]], <double undef, double 0.000000e+00>
33 ; CHECK-NEXT:    [[OR:%.*]] = or <2 x i1> [[CMP1]], [[CMP2]]
34 ; CHECK-NEXT:    ret <2 x i1> [[OR]]
36   %cmp1 = fcmp uno <2 x double> %x, <double 0.0, double undef>
37   %cmp2 = fcmp uno <2 x double> %y, <double undef, double 0.0>
38   %or = or <2 x i1> %cmp1, %cmp2
39   ret <2 x i1> %or
42 define <2 x i1> @PR1738_vec_poison(<2 x double> %x, <2 x double> %y) {
43 ; CHECK-LABEL: @PR1738_vec_poison(
44 ; CHECK-NEXT:    [[OR:%.*]] = fcmp uno <2 x double> [[X:%.*]], [[Y:%.*]]
45 ; CHECK-NEXT:    ret <2 x i1> [[OR]]
47   %cmp1 = fcmp uno <2 x double> %x, <double 0.0, double poison>
48   %cmp2 = fcmp uno <2 x double> %y, <double poison, double 0.0>
49   %or = or <2 x i1> %cmp1, %cmp2
50   ret <2 x i1> %or
53 define i1 @PR41069(double %a, double %b, double %c, double %d) {
54 ; CHECK-LABEL: @PR41069(
55 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
56 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[D:%.*]], [[C:%.*]]
57 ; CHECK-NEXT:    [[R:%.*]] = or i1 [[TMP1]], [[UNO1]]
58 ; CHECK-NEXT:    ret i1 [[R]]
60   %uno1 = fcmp uno double %a, %b
61   %uno2 = fcmp uno double %c, 0.0
62   %or = or i1 %uno1, %uno2
63   %uno3 = fcmp uno double %d, 0.0
64   %r = or i1 %or, %uno3
65   ret i1 %r
68 ; TODO: this can be fixed by freezing %c and %d
69 define i1 @PR41069_logical(double %a, double %b, double %c, double %d) {
70 ; CHECK-LABEL: @PR41069_logical(
71 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
72 ; CHECK-NEXT:    [[UNO2:%.*]] = fcmp uno double [[C:%.*]], 0.000000e+00
73 ; CHECK-NEXT:    [[OR:%.*]] = select i1 [[UNO1]], i1 true, i1 [[UNO2]]
74 ; CHECK-NEXT:    [[UNO3:%.*]] = fcmp uno double [[D:%.*]], 0.000000e+00
75 ; CHECK-NEXT:    [[R:%.*]] = select i1 [[OR]], i1 true, i1 [[UNO3]]
76 ; CHECK-NEXT:    ret i1 [[R]]
78   %uno1 = fcmp uno double %a, %b
79   %uno2 = fcmp uno double %c, 0.0
80   %or = select i1 %uno1, i1 true, i1 %uno2
81   %uno3 = fcmp uno double %d, 0.0
82   %r = select i1 %or, i1 true, i1 %uno3
83   ret i1 %r
86 define i1 @PR41069_commute(double %a, double %b, double %c, double %d) {
87 ; CHECK-LABEL: @PR41069_commute(
88 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
89 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double [[D:%.*]], [[C:%.*]]
90 ; CHECK-NEXT:    [[R:%.*]] = or i1 [[TMP1]], [[UNO1]]
91 ; CHECK-NEXT:    ret i1 [[R]]
93   %uno1 = fcmp uno double %a, %b
94   %uno2 = fcmp uno double %c, 0.0
95   %or = or i1 %uno1, %uno2
96   %uno3 = fcmp uno double %d, 0.0
97   %r = or i1 %uno3, %or
98   ret i1 %r
101 ; TODO: this can be fixed by freezing %c and %d
102 define i1 @PR41069_commute_logical(double %a, double %b, double %c, double %d) {
103 ; CHECK-LABEL: @PR41069_commute_logical(
104 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
105 ; CHECK-NEXT:    [[UNO2:%.*]] = fcmp uno double [[C:%.*]], 0.000000e+00
106 ; CHECK-NEXT:    [[UNO3:%.*]] = fcmp uno double [[D:%.*]], 0.000000e+00
107 ; CHECK-NEXT:    [[TMP1:%.*]] = select i1 [[UNO3]], i1 true, i1 [[UNO1]]
108 ; CHECK-NEXT:    [[R:%.*]] = select i1 [[TMP1]], i1 true, i1 [[UNO2]]
109 ; CHECK-NEXT:    ret i1 [[R]]
111   %uno1 = fcmp uno double %a, %b
112   %uno2 = fcmp uno double %c, 0.0
113   %or = select i1 %uno1, i1 true, i1 %uno2
114   %uno3 = fcmp uno double %d, 0.0
115   %r = select i1 %uno3, i1 true, i1 %or
116   ret i1 %r
119 define <2 x i1> @PR41069_vec(<2 x i1> %z, <2 x float> %c, <2 x float> %d) {
120 ; CHECK-LABEL: @PR41069_vec(
121 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno <2 x float> [[C:%.*]], zeroinitializer
122 ; CHECK-NEXT:    [[OR:%.*]] = or <2 x i1> [[UNO1]], [[Z:%.*]]
123 ; CHECK-NEXT:    [[UNO2:%.*]] = fcmp uno <2 x float> [[D:%.*]], <float 0.000000e+00, float undef>
124 ; CHECK-NEXT:    [[R:%.*]] = or <2 x i1> [[OR]], [[UNO2]]
125 ; CHECK-NEXT:    ret <2 x i1> [[R]]
127   %uno1 = fcmp uno <2 x float> %c, zeroinitializer
128   %or = or <2 x i1> %uno1, %z
129   %uno2 = fcmp uno <2 x float> %d, <float 0.0, float undef>
130   %r = or <2 x i1> %or, %uno2
131   ret <2 x i1> %r
134 define <2 x i1> @PR41069_vec_poison(<2 x i1> %z, <2 x float> %c, <2 x float> %d) {
135 ; CHECK-LABEL: @PR41069_vec_poison(
136 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno <2 x float> [[D:%.*]], [[C:%.*]]
137 ; CHECK-NEXT:    [[R:%.*]] = or <2 x i1> [[TMP1]], [[Z:%.*]]
138 ; CHECK-NEXT:    ret <2 x i1> [[R]]
140   %uno1 = fcmp uno <2 x float> %c, zeroinitializer
141   %or = or <2 x i1> %uno1, %z
142   %uno2 = fcmp uno <2 x float> %d, <float 0.0, float poison>
143   %r = or <2 x i1> %or, %uno2
144   ret <2 x i1> %r
147 define <2 x i1> @PR41069_vec_commute(<2 x i1> %z, <2 x float> %c, <2 x float> %d) {
148 ; CHECK-LABEL: @PR41069_vec_commute(
149 ; CHECK-NEXT:    [[UNO1:%.*]] = fcmp uno <2 x float> [[C:%.*]], zeroinitializer
150 ; CHECK-NEXT:    [[OR:%.*]] = or <2 x i1> [[UNO1]], [[Z:%.*]]
151 ; CHECK-NEXT:    [[UNO2:%.*]] = fcmp uno <2 x float> [[D:%.*]], <float 0.000000e+00, float undef>
152 ; CHECK-NEXT:    [[R:%.*]] = or <2 x i1> [[UNO2]], [[OR]]
153 ; CHECK-NEXT:    ret <2 x i1> [[R]]
155   %uno1 = fcmp uno <2 x float> %c, zeroinitializer
156   %or = or <2 x i1> %uno1, %z
157   %uno2 = fcmp uno <2 x float> %d, <float 0.0, float undef>
158   %r = or <2 x i1> %uno2, %or
159   ret <2 x i1> %r
162 define <2 x i1> @PR41069_vec_commute_poison(<2 x i1> %z, <2 x float> %c, <2 x float> %d) {
163 ; CHECK-LABEL: @PR41069_vec_commute_poison(
164 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno <2 x float> [[D:%.*]], [[C:%.*]]
165 ; CHECK-NEXT:    [[R:%.*]] = or <2 x i1> [[TMP1]], [[Z:%.*]]
166 ; CHECK-NEXT:    ret <2 x i1> [[R]]
168   %uno1 = fcmp uno <2 x float> %c, zeroinitializer
169   %or = or <2 x i1> %uno1, %z
170   %uno2 = fcmp uno <2 x float> %d, <float 0.0, float poison>
171   %r = or <2 x i1> %uno2, %or
172   ret <2 x i1> %r
175 define i1 @fcmp_uno_nonzero(float %x, float %y) {
176 ; CHECK-LABEL: @fcmp_uno_nonzero(
177 ; CHECK-NEXT:    [[OR:%.*]] = fcmp uno float [[X:%.*]], [[Y:%.*]]
178 ; CHECK-NEXT:    ret i1 [[OR]]
180   %cmp1 = fcmp uno float %x, 1.0
181   %cmp2 = fcmp uno float %y, 2.0
182   %or = or i1 %cmp1, %cmp2
183   ret i1 %or
186 ; TODO: this can be fixed by freezing %y
187 define i1 @fcmp_uno_nonzero_logical(float %x, float %y) {
188 ; CHECK-LABEL: @fcmp_uno_nonzero_logical(
189 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
190 ; CHECK-NEXT:    [[CMP2:%.*]] = fcmp uno float [[Y:%.*]], 0.000000e+00
191 ; CHECK-NEXT:    [[OR:%.*]] = select i1 [[CMP1]], i1 true, i1 [[CMP2]]
192 ; CHECK-NEXT:    ret i1 [[OR]]
194   %cmp1 = fcmp uno float %x, 1.0
195   %cmp2 = fcmp uno float %y, 2.0
196   %or = select i1 %cmp1, i1 true, i1 %cmp2
197   ret i1 %or
200 define <3 x i1> @fcmp_uno_nonzero_vec(<3 x float> %x, <3 x float> %y) {
201 ; CHECK-LABEL: @fcmp_uno_nonzero_vec(
202 ; CHECK-NEXT:    [[OR:%.*]] = fcmp uno <3 x float> [[X:%.*]], [[Y:%.*]]
203 ; CHECK-NEXT:    ret <3 x i1> [[OR]]
205   %cmp1 = fcmp uno <3 x float> %x, <float 1.0, float 2.0, float 3.0>
206   %cmp2 = fcmp uno <3 x float> %y, <float 3.0, float 2.0, float 1.0>
207   %or = or <3 x i1> %cmp1, %cmp2
208   ret <3 x i1> %or
211 define i1 @auto_gen_0(double %a, double %b) {
212 ; CHECK-LABEL: @auto_gen_0(
213 ; CHECK-NEXT:    ret i1 false
215   %cmp = fcmp false double %a, %b
216   %cmp1 = fcmp false double %a, %b
217   %retval = or i1 %cmp, %cmp1
218   ret i1 %retval
221 define i1 @auto_gen_0_logical(double %a, double %b) {
222 ; CHECK-LABEL: @auto_gen_0_logical(
223 ; CHECK-NEXT:    ret i1 false
225   %cmp = fcmp false double %a, %b
226   %cmp1 = fcmp false double %a, %b
227   %retval = select i1 %cmp, i1 true, i1 %cmp1
228   ret i1 %retval
231 define i1 @auto_gen_0_logical_fmf(double %a, double %b) {
232 ; CHECK-LABEL: @auto_gen_0_logical_fmf(
233 ; CHECK-NEXT:    ret i1 false
235   %cmp = fcmp false double %a, %b
236   %cmp1 = fcmp fast false double %a, %b
237   %retval = select i1 %cmp, i1 true, i1 %cmp1
238   ret i1 %retval
241 define i1 @auto_gen_1(double %a, double %b) {
242 ; CHECK-LABEL: @auto_gen_1(
243 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
244 ; CHECK-NEXT:    ret i1 [[CMP]]
246   %cmp = fcmp oeq double %a, %b
247   %cmp1 = fcmp false double %a, %b
248   %retval = or i1 %cmp, %cmp1
249   ret i1 %retval
252 define i1 @auto_gen_1_logical(double %a, double %b) {
253 ; CHECK-LABEL: @auto_gen_1_logical(
254 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
255 ; CHECK-NEXT:    ret i1 [[CMP]]
257   %cmp = fcmp oeq double %a, %b
258   %cmp1 = fcmp false double %a, %b
259   %retval = select i1 %cmp, i1 true, i1 %cmp1
260   ret i1 %retval
263 define i1 @auto_gen_1_logical_fmf(double %a, double %b) {
264 ; CHECK-LABEL: @auto_gen_1_logical_fmf(
265 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
266 ; CHECK-NEXT:    ret i1 [[CMP]]
268   %cmp = fcmp fast oeq double %a, %b
269   %cmp1 = fcmp fast false double %a, %b
270   %retval = select i1 %cmp, i1 true, i1 %cmp1
271   ret i1 %retval
274 define i1 @auto_gen_2(double %a, double %b) {
275 ; CHECK-LABEL: @auto_gen_2(
276 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
277 ; CHECK-NEXT:    ret i1 [[RETVAL]]
279   %cmp = fcmp oeq double %a, %b
280   %cmp1 = fcmp oeq double %a, %b
281   %retval = or i1 %cmp, %cmp1
282   ret i1 %retval
285 define i1 @auto_gen_2_logical(double %a, double %b) {
286 ; CHECK-LABEL: @auto_gen_2_logical(
287 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
288 ; CHECK-NEXT:    ret i1 [[RETVAL]]
290   %cmp = fcmp oeq double %a, %b
291   %cmp1 = fcmp oeq double %a, %b
292   %retval = select i1 %cmp, i1 true, i1 %cmp1
293   ret i1 %retval
296 define i1 @auto_gen_2_logical_fmf(double %a, double %b) {
297 ; CHECK-LABEL: @auto_gen_2_logical_fmf(
298 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
299 ; CHECK-NEXT:    ret i1 [[RETVAL]]
301   %cmp = fcmp oeq double %a, %b
302   %cmp1 = fcmp fast oeq double %a, %b
303   %retval = select i1 %cmp, i1 true, i1 %cmp1
304   ret i1 %retval
307 define i1 @auto_gen_3(double %a, double %b) {
308 ; CHECK-LABEL: @auto_gen_3(
309 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
310 ; CHECK-NEXT:    ret i1 [[CMP]]
312   %cmp = fcmp ogt double %a, %b
313   %cmp1 = fcmp false double %a, %b
314   %retval = or i1 %cmp, %cmp1
315   ret i1 %retval
318 define i1 @auto_gen_3_logical(double %a, double %b) {
319 ; CHECK-LABEL: @auto_gen_3_logical(
320 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
321 ; CHECK-NEXT:    ret i1 [[CMP]]
323   %cmp = fcmp ogt double %a, %b
324   %cmp1 = fcmp false double %a, %b
325   %retval = select i1 %cmp, i1 true, i1 %cmp1
326   ret i1 %retval
329 define i1 @auto_gen_3_logical_fmf(double %a, double %b) {
330 ; CHECK-LABEL: @auto_gen_3_logical_fmf(
331 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
332 ; CHECK-NEXT:    ret i1 [[CMP]]
334   %cmp = fcmp fast ogt double %a, %b
335   %cmp1 = fcmp fast false double %a, %b
336   %retval = select i1 %cmp, i1 true, i1 %cmp1
337   ret i1 %retval
340 define i1 @auto_gen_4(double %a, double %b) {
341 ; CHECK-LABEL: @auto_gen_4(
342 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
343 ; CHECK-NEXT:    ret i1 [[RETVAL]]
345   %cmp = fcmp ogt double %a, %b
346   %cmp1 = fcmp oeq double %a, %b
347   %retval = or i1 %cmp, %cmp1
348   ret i1 %retval
351 define i1 @auto_gen_4_logical(double %a, double %b) {
352 ; CHECK-LABEL: @auto_gen_4_logical(
353 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
354 ; CHECK-NEXT:    ret i1 [[RETVAL]]
356   %cmp = fcmp ogt double %a, %b
357   %cmp1 = fcmp oeq double %a, %b
358   %retval = select i1 %cmp, i1 true, i1 %cmp1
359   ret i1 %retval
362 define i1 @auto_gen_4_logical_fmf(double %a, double %b) {
363 ; CHECK-LABEL: @auto_gen_4_logical_fmf(
364 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
365 ; CHECK-NEXT:    ret i1 [[RETVAL]]
367   %cmp = fcmp ogt double %a, %b
368   %cmp1 = fcmp fast oeq double %a, %b
369   %retval = select i1 %cmp, i1 true, i1 %cmp1
370   ret i1 %retval
373 define i1 @auto_gen_5(double %a, double %b) {
374 ; CHECK-LABEL: @auto_gen_5(
375 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
376 ; CHECK-NEXT:    ret i1 [[RETVAL]]
378   %cmp = fcmp ogt double %a, %b
379   %cmp1 = fcmp ogt double %a, %b
380   %retval = or i1 %cmp, %cmp1
381   ret i1 %retval
384 define i1 @auto_gen_5_logical(double %a, double %b) {
385 ; CHECK-LABEL: @auto_gen_5_logical(
386 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
387 ; CHECK-NEXT:    ret i1 [[RETVAL]]
389   %cmp = fcmp ogt double %a, %b
390   %cmp1 = fcmp ogt double %a, %b
391   %retval = select i1 %cmp, i1 true, i1 %cmp1
392   ret i1 %retval
395 define i1 @auto_gen_5_logical_fmf(double %a, double %b) {
396 ; CHECK-LABEL: @auto_gen_5_logical_fmf(
397 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
398 ; CHECK-NEXT:    ret i1 [[RETVAL]]
400   %cmp = fcmp fast ogt double %a, %b
401   %cmp1 = fcmp fast ogt double %a, %b
402   %retval = select i1 %cmp, i1 true, i1 %cmp1
403   ret i1 %retval
406 define i1 @auto_gen_6(double %a, double %b) {
407 ; CHECK-LABEL: @auto_gen_6(
408 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
409 ; CHECK-NEXT:    ret i1 [[CMP]]
411   %cmp = fcmp oge double %a, %b
412   %cmp1 = fcmp false double %a, %b
413   %retval = or i1 %cmp, %cmp1
414   ret i1 %retval
417 define i1 @auto_gen_6_logical(double %a, double %b) {
418 ; CHECK-LABEL: @auto_gen_6_logical(
419 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
420 ; CHECK-NEXT:    ret i1 [[CMP]]
422   %cmp = fcmp oge double %a, %b
423   %cmp1 = fcmp false double %a, %b
424   %retval = select i1 %cmp, i1 true, i1 %cmp1
425   ret i1 %retval
428 define i1 @auto_gen_6_logical_fmf(double %a, double %b) {
429 ; CHECK-LABEL: @auto_gen_6_logical_fmf(
430 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
431 ; CHECK-NEXT:    ret i1 [[CMP]]
433   %cmp = fcmp oge double %a, %b
434   %cmp1 = fcmp fast false double %a, %b
435   %retval = select i1 %cmp, i1 true, i1 %cmp1
436   ret i1 %retval
439 define i1 @auto_gen_7(double %a, double %b) {
440 ; CHECK-LABEL: @auto_gen_7(
441 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
442 ; CHECK-NEXT:    ret i1 [[RETVAL]]
444   %cmp = fcmp oge double %a, %b
445   %cmp1 = fcmp oeq double %a, %b
446   %retval = or i1 %cmp, %cmp1
447   ret i1 %retval
450 define i1 @auto_gen_7_logical(double %a, double %b) {
451 ; CHECK-LABEL: @auto_gen_7_logical(
452 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
453 ; CHECK-NEXT:    ret i1 [[RETVAL]]
455   %cmp = fcmp oge double %a, %b
456   %cmp1 = fcmp oeq double %a, %b
457   %retval = select i1 %cmp, i1 true, i1 %cmp1
458   ret i1 %retval
461 define i1 @auto_gen_7_logical_fmf(double %a, double %b) {
462 ; CHECK-LABEL: @auto_gen_7_logical_fmf(
463 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]
464 ; CHECK-NEXT:    ret i1 [[RETVAL]]
466   %cmp = fcmp fast oge double %a, %b
467   %cmp1 = fcmp fast oeq double %a, %b
468   %retval = select i1 %cmp, i1 true, i1 %cmp1
469   ret i1 %retval
472 define i1 @auto_gen_8(double %a, double %b) {
473 ; CHECK-LABEL: @auto_gen_8(
474 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
475 ; CHECK-NEXT:    ret i1 [[RETVAL]]
477   %cmp = fcmp oge double %a, %b
478   %cmp1 = fcmp ogt double %a, %b
479   %retval = or i1 %cmp, %cmp1
480   ret i1 %retval
483 define i1 @auto_gen_8_logical(double %a, double %b) {
484 ; CHECK-LABEL: @auto_gen_8_logical(
485 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
486 ; CHECK-NEXT:    ret i1 [[RETVAL]]
488   %cmp = fcmp oge double %a, %b
489   %cmp1 = fcmp ogt double %a, %b
490   %retval = select i1 %cmp, i1 true, i1 %cmp1
491   ret i1 %retval
494 define i1 @auto_gen_8_logical_fmf(double %a, double %b) {
495 ; CHECK-LABEL: @auto_gen_8_logical_fmf(
496 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
497 ; CHECK-NEXT:    ret i1 [[RETVAL]]
499   %cmp = fcmp oge double %a, %b
500   %cmp1 = fcmp fast ogt double %a, %b
501   %retval = select i1 %cmp, i1 true, i1 %cmp1
502   ret i1 %retval
505 define i1 @auto_gen_9(double %a, double %b) {
506 ; CHECK-LABEL: @auto_gen_9(
507 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
508 ; CHECK-NEXT:    ret i1 [[RETVAL]]
510   %cmp = fcmp oge double %a, %b
511   %cmp1 = fcmp oge double %a, %b
512   %retval = or i1 %cmp, %cmp1
513   ret i1 %retval
516 define i1 @auto_gen_9_logical(double %a, double %b) {
517 ; CHECK-LABEL: @auto_gen_9_logical(
518 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
519 ; CHECK-NEXT:    ret i1 [[RETVAL]]
521   %cmp = fcmp oge double %a, %b
522   %cmp1 = fcmp oge double %a, %b
523   %retval = select i1 %cmp, i1 true, i1 %cmp1
524   ret i1 %retval
527 define i1 @auto_gen_9_logical_fmf(double %a, double %b) {
528 ; CHECK-LABEL: @auto_gen_9_logical_fmf(
529 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]
530 ; CHECK-NEXT:    ret i1 [[RETVAL]]
532   %cmp = fcmp fast oge double %a, %b
533   %cmp1 = fcmp fast oge double %a, %b
534   %retval = select i1 %cmp, i1 true, i1 %cmp1
535   ret i1 %retval
538 define i1 @auto_gen_10(double %a, double %b) {
539 ; CHECK-LABEL: @auto_gen_10(
540 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
541 ; CHECK-NEXT:    ret i1 [[CMP]]
543   %cmp = fcmp olt double %a, %b
544   %cmp1 = fcmp false double %a, %b
545   %retval = or i1 %cmp, %cmp1
546   ret i1 %retval
549 define i1 @auto_gen_10_logical(double %a, double %b) {
550 ; CHECK-LABEL: @auto_gen_10_logical(
551 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
552 ; CHECK-NEXT:    ret i1 [[CMP]]
554   %cmp = fcmp olt double %a, %b
555   %cmp1 = fcmp false double %a, %b
556   %retval = select i1 %cmp, i1 true, i1 %cmp1
557   ret i1 %retval
560 define i1 @auto_gen_10_logical_fmf(double %a, double %b) {
561 ; CHECK-LABEL: @auto_gen_10_logical_fmf(
562 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
563 ; CHECK-NEXT:    ret i1 [[CMP]]
565   %cmp = fcmp olt double %a, %b
566   %cmp1 = fcmp fast false double %a, %b
567   %retval = select i1 %cmp, i1 true, i1 %cmp1
568   ret i1 %retval
571 define i1 @auto_gen_11(double %a, double %b) {
572 ; CHECK-LABEL: @auto_gen_11(
573 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
574 ; CHECK-NEXT:    ret i1 [[RETVAL]]
576   %cmp = fcmp olt double %a, %b
577   %cmp1 = fcmp oeq double %a, %b
578   %retval = or i1 %cmp, %cmp1
579   ret i1 %retval
582 define i1 @auto_gen_11_logical(double %a, double %b) {
583 ; CHECK-LABEL: @auto_gen_11_logical(
584 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
585 ; CHECK-NEXT:    ret i1 [[RETVAL]]
587   %cmp = fcmp olt double %a, %b
588   %cmp1 = fcmp oeq double %a, %b
589   %retval = select i1 %cmp, i1 true, i1 %cmp1
590   ret i1 %retval
593 define i1 @auto_gen_11_logical_fmf(double %a, double %b) {
594 ; CHECK-LABEL: @auto_gen_11_logical_fmf(
595 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]
596 ; CHECK-NEXT:    ret i1 [[RETVAL]]
598   %cmp = fcmp fast olt double %a, %b
599   %cmp1 = fcmp fast oeq double %a, %b
600   %retval = select i1 %cmp, i1 true, i1 %cmp1
601   ret i1 %retval
604 define i1 @auto_gen_12(double %a, double %b) {
605 ; CHECK-LABEL: @auto_gen_12(
606 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
607 ; CHECK-NEXT:    ret i1 [[RETVAL]]
609   %cmp = fcmp olt double %a, %b
610   %cmp1 = fcmp ogt double %a, %b
611   %retval = or i1 %cmp, %cmp1
612   ret i1 %retval
615 define i1 @auto_gen_12_logical(double %a, double %b) {
616 ; CHECK-LABEL: @auto_gen_12_logical(
617 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
618 ; CHECK-NEXT:    ret i1 [[RETVAL]]
620   %cmp = fcmp olt double %a, %b
621   %cmp1 = fcmp ogt double %a, %b
622   %retval = select i1 %cmp, i1 true, i1 %cmp1
623   ret i1 %retval
626 define i1 @auto_gen_12_logical_fmf(double %a, double %b) {
627 ; CHECK-LABEL: @auto_gen_12_logical_fmf(
628 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
629 ; CHECK-NEXT:    ret i1 [[RETVAL]]
631   %cmp = fcmp olt double %a, %b
632   %cmp1 = fcmp fast ogt double %a, %b
633   %retval = select i1 %cmp, i1 true, i1 %cmp1
634   ret i1 %retval
637 define i1 @auto_gen_13(double %a, double %b) {
638 ; CHECK-LABEL: @auto_gen_13(
639 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
640 ; CHECK-NEXT:    ret i1 [[RETVAL]]
642   %cmp = fcmp olt double %a, %b
643   %cmp1 = fcmp oge double %a, %b
644   %retval = or i1 %cmp, %cmp1
645   ret i1 %retval
648 define i1 @auto_gen_13_logical(double %a, double %b) {
649 ; CHECK-LABEL: @auto_gen_13_logical(
650 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
651 ; CHECK-NEXT:    ret i1 [[RETVAL]]
653   %cmp = fcmp olt double %a, %b
654   %cmp1 = fcmp oge double %a, %b
655   %retval = select i1 %cmp, i1 true, i1 %cmp1
656   ret i1 %retval
659 define i1 @auto_gen_13_logical_fmf(double %a, double %b) {
660 ; CHECK-LABEL: @auto_gen_13_logical_fmf(
661 ; CHECK-NEXT:    ret i1 true
663   %cmp = fcmp fast olt double %a, %b
664   %cmp1 = fcmp fast oge double %a, %b
665   %retval = select i1 %cmp, i1 true, i1 %cmp1
666   ret i1 %retval
669 define i1 @auto_gen_14(double %a, double %b) {
670 ; CHECK-LABEL: @auto_gen_14(
671 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
672 ; CHECK-NEXT:    ret i1 [[RETVAL]]
674   %cmp = fcmp olt double %a, %b
675   %cmp1 = fcmp olt double %a, %b
676   %retval = or i1 %cmp, %cmp1
677   ret i1 %retval
680 define i1 @auto_gen_14_logical(double %a, double %b) {
681 ; CHECK-LABEL: @auto_gen_14_logical(
682 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
683 ; CHECK-NEXT:    ret i1 [[RETVAL]]
685   %cmp = fcmp olt double %a, %b
686   %cmp1 = fcmp olt double %a, %b
687   %retval = select i1 %cmp, i1 true, i1 %cmp1
688   ret i1 %retval
691 define i1 @auto_gen_14_logical_fmf(double %a, double %b) {
692 ; CHECK-LABEL: @auto_gen_14_logical_fmf(
693 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
694 ; CHECK-NEXT:    ret i1 [[RETVAL]]
696   %cmp = fcmp olt double %a, %b
697   %cmp1 = fcmp fast olt double %a, %b
698   %retval = select i1 %cmp, i1 true, i1 %cmp1
699   ret i1 %retval
702 define i1 @auto_gen_15(double %a, double %b) {
703 ; CHECK-LABEL: @auto_gen_15(
704 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
705 ; CHECK-NEXT:    ret i1 [[CMP]]
707   %cmp = fcmp ole double %a, %b
708   %cmp1 = fcmp false double %a, %b
709   %retval = or i1 %cmp, %cmp1
710   ret i1 %retval
713 define i1 @auto_gen_15_logical(double %a, double %b) {
714 ; CHECK-LABEL: @auto_gen_15_logical(
715 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
716 ; CHECK-NEXT:    ret i1 [[CMP]]
718   %cmp = fcmp ole double %a, %b
719   %cmp1 = fcmp false double %a, %b
720   %retval = select i1 %cmp, i1 true, i1 %cmp1
721   ret i1 %retval
724 define i1 @auto_gen_15_logical_fmf(double %a, double %b) {
725 ; CHECK-LABEL: @auto_gen_15_logical_fmf(
726 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]
727 ; CHECK-NEXT:    ret i1 [[CMP]]
729   %cmp = fcmp fast ole double %a, %b
730   %cmp1 = fcmp fast false double %a, %b
731   %retval = select i1 %cmp, i1 true, i1 %cmp1
732   ret i1 %retval
735 define i1 @auto_gen_16(double %a, double %b) {
736 ; CHECK-LABEL: @auto_gen_16(
737 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
738 ; CHECK-NEXT:    ret i1 [[RETVAL]]
740   %cmp = fcmp ole double %a, %b
741   %cmp1 = fcmp oeq double %a, %b
742   %retval = or i1 %cmp, %cmp1
743   ret i1 %retval
746 define i1 @auto_gen_16_logical(double %a, double %b) {
747 ; CHECK-LABEL: @auto_gen_16_logical(
748 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
749 ; CHECK-NEXT:    ret i1 [[RETVAL]]
751   %cmp = fcmp ole double %a, %b
752   %cmp1 = fcmp oeq double %a, %b
753   %retval = select i1 %cmp, i1 true, i1 %cmp1
754   ret i1 %retval
757 define i1 @auto_gen_16_logical_fmf(double %a, double %b) {
758 ; CHECK-LABEL: @auto_gen_16_logical_fmf(
759 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
760 ; CHECK-NEXT:    ret i1 [[RETVAL]]
762   %cmp = fcmp ole double %a, %b
763   %cmp1 = fcmp fast oeq double %a, %b
764   %retval = select i1 %cmp, i1 true, i1 %cmp1
765   ret i1 %retval
768 define i1 @auto_gen_17(double %a, double %b) {
769 ; CHECK-LABEL: @auto_gen_17(
770 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
771 ; CHECK-NEXT:    ret i1 [[RETVAL]]
773   %cmp = fcmp ole double %a, %b
774   %cmp1 = fcmp ogt double %a, %b
775   %retval = or i1 %cmp, %cmp1
776   ret i1 %retval
779 define i1 @auto_gen_17_logical(double %a, double %b) {
780 ; CHECK-LABEL: @auto_gen_17_logical(
781 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
782 ; CHECK-NEXT:    ret i1 [[RETVAL]]
784   %cmp = fcmp ole double %a, %b
785   %cmp1 = fcmp ogt double %a, %b
786   %retval = select i1 %cmp, i1 true, i1 %cmp1
787   ret i1 %retval
790 define i1 @auto_gen_17_logical_fmf(double %a, double %b) {
791 ; CHECK-LABEL: @auto_gen_17_logical_fmf(
792 ; CHECK-NEXT:    ret i1 true
794   %cmp = fcmp fast ole double %a, %b
795   %cmp1 = fcmp fast ogt double %a, %b
796   %retval = select i1 %cmp, i1 true, i1 %cmp1
797   ret i1 %retval
800 define i1 @auto_gen_18(double %a, double %b) {
801 ; CHECK-LABEL: @auto_gen_18(
802 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
803 ; CHECK-NEXT:    ret i1 [[RETVAL]]
805   %cmp = fcmp ole double %a, %b
806   %cmp1 = fcmp oge double %a, %b
807   %retval = or i1 %cmp, %cmp1
808   ret i1 %retval
811 define i1 @auto_gen_18_logical(double %a, double %b) {
812 ; CHECK-LABEL: @auto_gen_18_logical(
813 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
814 ; CHECK-NEXT:    ret i1 [[RETVAL]]
816   %cmp = fcmp ole double %a, %b
817   %cmp1 = fcmp oge double %a, %b
818   %retval = select i1 %cmp, i1 true, i1 %cmp1
819   ret i1 %retval
822 define i1 @auto_gen_18_logical_fmf(double %a, double %b) {
823 ; CHECK-LABEL: @auto_gen_18_logical_fmf(
824 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
825 ; CHECK-NEXT:    ret i1 [[RETVAL]]
827   %cmp = fcmp ole double %a, %b
828   %cmp1 = fcmp fast oge double %a, %b
829   %retval = select i1 %cmp, i1 true, i1 %cmp1
830   ret i1 %retval
833 define i1 @auto_gen_19(double %a, double %b) {
834 ; CHECK-LABEL: @auto_gen_19(
835 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
836 ; CHECK-NEXT:    ret i1 [[RETVAL]]
838   %cmp = fcmp ole double %a, %b
839   %cmp1 = fcmp olt double %a, %b
840   %retval = or i1 %cmp, %cmp1
841   ret i1 %retval
844 define i1 @auto_gen_19_logical(double %a, double %b) {
845 ; CHECK-LABEL: @auto_gen_19_logical(
846 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
847 ; CHECK-NEXT:    ret i1 [[RETVAL]]
849   %cmp = fcmp ole double %a, %b
850   %cmp1 = fcmp olt double %a, %b
851   %retval = select i1 %cmp, i1 true, i1 %cmp1
852   ret i1 %retval
855 define i1 @auto_gen_19_logical_fmf(double %a, double %b) {
856 ; CHECK-LABEL: @auto_gen_19_logical_fmf(
857 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]
858 ; CHECK-NEXT:    ret i1 [[RETVAL]]
860   %cmp = fcmp fast ole double %a, %b
861   %cmp1 = fcmp fast olt double %a, %b
862   %retval = select i1 %cmp, i1 true, i1 %cmp1
863   ret i1 %retval
866 define i1 @auto_gen_20(double %a, double %b) {
867 ; CHECK-LABEL: @auto_gen_20(
868 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
869 ; CHECK-NEXT:    ret i1 [[RETVAL]]
871   %cmp = fcmp ole double %a, %b
872   %cmp1 = fcmp ole double %a, %b
873   %retval = or i1 %cmp, %cmp1
874   ret i1 %retval
877 define i1 @auto_gen_20_logical(double %a, double %b) {
878 ; CHECK-LABEL: @auto_gen_20_logical(
879 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
880 ; CHECK-NEXT:    ret i1 [[RETVAL]]
882   %cmp = fcmp ole double %a, %b
883   %cmp1 = fcmp ole double %a, %b
884   %retval = select i1 %cmp, i1 true, i1 %cmp1
885   ret i1 %retval
888 define i1 @auto_gen_20_logical_fmf(double %a, double %b) {
889 ; CHECK-LABEL: @auto_gen_20_logical_fmf(
890 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
891 ; CHECK-NEXT:    ret i1 [[RETVAL]]
893   %cmp = fcmp ole double %a, %b
894   %cmp1 = fcmp fast ole double %a, %b
895   %retval = select i1 %cmp, i1 true, i1 %cmp1
896   ret i1 %retval
899 define i1 @auto_gen_21(double %a, double %b) {
900 ; CHECK-LABEL: @auto_gen_21(
901 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
902 ; CHECK-NEXT:    ret i1 [[CMP]]
904   %cmp = fcmp one double %a, %b
905   %cmp1 = fcmp false double %a, %b
906   %retval = or i1 %cmp, %cmp1
907   ret i1 %retval
910 define i1 @auto_gen_21_logical(double %a, double %b) {
911 ; CHECK-LABEL: @auto_gen_21_logical(
912 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
913 ; CHECK-NEXT:    ret i1 [[CMP]]
915   %cmp = fcmp one double %a, %b
916   %cmp1 = fcmp false double %a, %b
917   %retval = select i1 %cmp, i1 true, i1 %cmp1
918   ret i1 %retval
921 define i1 @auto_gen_21_logical_fmf(double %a, double %b) {
922 ; CHECK-LABEL: @auto_gen_21_logical_fmf(
923 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
924 ; CHECK-NEXT:    ret i1 [[CMP]]
926   %cmp = fcmp fast one double %a, %b
927   %cmp1 = fcmp fast false double %a, %b
928   %retval = select i1 %cmp, i1 true, i1 %cmp1
929   ret i1 %retval
932 define i1 @auto_gen_22(double %a, double %b) {
933 ; CHECK-LABEL: @auto_gen_22(
934 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
935 ; CHECK-NEXT:    ret i1 [[RETVAL]]
937   %cmp = fcmp one double %a, %b
938   %cmp1 = fcmp oeq double %a, %b
939   %retval = or i1 %cmp, %cmp1
940   ret i1 %retval
943 define i1 @auto_gen_22_logical(double %a, double %b) {
944 ; CHECK-LABEL: @auto_gen_22_logical(
945 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
946 ; CHECK-NEXT:    ret i1 [[RETVAL]]
948   %cmp = fcmp one double %a, %b
949   %cmp1 = fcmp oeq double %a, %b
950   %retval = select i1 %cmp, i1 true, i1 %cmp1
951   ret i1 %retval
954 define i1 @auto_gen_22_logical_fmf(double %a, double %b) {
955 ; CHECK-LABEL: @auto_gen_22_logical_fmf(
956 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
957 ; CHECK-NEXT:    ret i1 [[RETVAL]]
959   %cmp = fcmp one double %a, %b
960   %cmp1 = fcmp fast oeq double %a, %b
961   %retval = select i1 %cmp, i1 true, i1 %cmp1
962   ret i1 %retval
965 define i1 @auto_gen_23(double %a, double %b) {
966 ; CHECK-LABEL: @auto_gen_23(
967 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
968 ; CHECK-NEXT:    ret i1 [[RETVAL]]
970   %cmp = fcmp one double %a, %b
971   %cmp1 = fcmp ogt double %a, %b
972   %retval = or i1 %cmp, %cmp1
973   ret i1 %retval
976 define i1 @auto_gen_23_logical(double %a, double %b) {
977 ; CHECK-LABEL: @auto_gen_23_logical(
978 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
979 ; CHECK-NEXT:    ret i1 [[RETVAL]]
981   %cmp = fcmp one double %a, %b
982   %cmp1 = fcmp ogt double %a, %b
983   %retval = select i1 %cmp, i1 true, i1 %cmp1
984   ret i1 %retval
987 define i1 @auto_gen_23_logical_fmf(double %a, double %b) {
988 ; CHECK-LABEL: @auto_gen_23_logical_fmf(
989 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
990 ; CHECK-NEXT:    ret i1 [[RETVAL]]
992   %cmp = fcmp fast one double %a, %b
993   %cmp1 = fcmp fast ogt double %a, %b
994   %retval = select i1 %cmp, i1 true, i1 %cmp1
995   ret i1 %retval
998 define i1 @auto_gen_24(double %a, double %b) {
999 ; CHECK-LABEL: @auto_gen_24(
1000 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1001 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1003   %cmp = fcmp one double %a, %b
1004   %cmp1 = fcmp oge double %a, %b
1005   %retval = or i1 %cmp, %cmp1
1006   ret i1 %retval
1009 define i1 @auto_gen_24_logical(double %a, double %b) {
1010 ; CHECK-LABEL: @auto_gen_24_logical(
1011 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1012 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1014   %cmp = fcmp one double %a, %b
1015   %cmp1 = fcmp oge double %a, %b
1016   %retval = select i1 %cmp, i1 true, i1 %cmp1
1017   ret i1 %retval
1020 define i1 @auto_gen_24_logical_fmf(double %a, double %b) {
1021 ; CHECK-LABEL: @auto_gen_24_logical_fmf(
1022 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1023 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1025   %cmp = fcmp one double %a, %b
1026   %cmp1 = fcmp fast oge double %a, %b
1027   %retval = select i1 %cmp, i1 true, i1 %cmp1
1028   ret i1 %retval
1031 define i1 @auto_gen_25(double %a, double %b) {
1032 ; CHECK-LABEL: @auto_gen_25(
1033 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1034 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1036   %cmp = fcmp one double %a, %b
1037   %cmp1 = fcmp olt double %a, %b
1038   %retval = or i1 %cmp, %cmp1
1039   ret i1 %retval
1042 define i1 @auto_gen_25_logical(double %a, double %b) {
1043 ; CHECK-LABEL: @auto_gen_25_logical(
1044 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1045 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1047   %cmp = fcmp one double %a, %b
1048   %cmp1 = fcmp olt double %a, %b
1049   %retval = select i1 %cmp, i1 true, i1 %cmp1
1050   ret i1 %retval
1053 define i1 @auto_gen_25_logical_fmf(double %a, double %b) {
1054 ; CHECK-LABEL: @auto_gen_25_logical_fmf(
1055 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
1056 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1058   %cmp = fcmp fast one double %a, %b
1059   %cmp1 = fcmp fast olt double %a, %b
1060   %retval = select i1 %cmp, i1 true, i1 %cmp1
1061   ret i1 %retval
1064 define i1 @auto_gen_26(double %a, double %b) {
1065 ; CHECK-LABEL: @auto_gen_26(
1066 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1067 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1069   %cmp = fcmp one double %a, %b
1070   %cmp1 = fcmp ole double %a, %b
1071   %retval = or i1 %cmp, %cmp1
1072   ret i1 %retval
1075 define i1 @auto_gen_26_logical(double %a, double %b) {
1076 ; CHECK-LABEL: @auto_gen_26_logical(
1077 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1078 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1080   %cmp = fcmp one double %a, %b
1081   %cmp1 = fcmp ole double %a, %b
1082   %retval = select i1 %cmp, i1 true, i1 %cmp1
1083   ret i1 %retval
1086 define i1 @auto_gen_26_logical_fmf(double %a, double %b) {
1087 ; CHECK-LABEL: @auto_gen_26_logical_fmf(
1088 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1089 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1091   %cmp = fcmp one double %a, %b
1092   %cmp1 = fcmp fast ole double %a, %b
1093   %retval = select i1 %cmp, i1 true, i1 %cmp1
1094   ret i1 %retval
1097 define i1 @auto_gen_27(double %a, double %b) {
1098 ; CHECK-LABEL: @auto_gen_27(
1099 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1100 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1102   %cmp = fcmp one double %a, %b
1103   %cmp1 = fcmp one double %a, %b
1104   %retval = or i1 %cmp, %cmp1
1105   ret i1 %retval
1108 define i1 @auto_gen_27_logical(double %a, double %b) {
1109 ; CHECK-LABEL: @auto_gen_27_logical(
1110 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1111 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1113   %cmp = fcmp one double %a, %b
1114   %cmp1 = fcmp one double %a, %b
1115   %retval = select i1 %cmp, i1 true, i1 %cmp1
1116   ret i1 %retval
1119 define i1 @auto_gen_27_logical_fmf(double %a, double %b) {
1120 ; CHECK-LABEL: @auto_gen_27_logical_fmf(
1121 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
1122 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1124   %cmp = fcmp fast one double %a, %b
1125   %cmp1 = fcmp fast one double %a, %b
1126   %retval = select i1 %cmp, i1 true, i1 %cmp1
1127   ret i1 %retval
1130 define i1 @auto_gen_28(double %a, double %b) {
1131 ; CHECK-LABEL: @auto_gen_28(
1132 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1133 ; CHECK-NEXT:    ret i1 [[CMP]]
1135   %cmp = fcmp ord double %a, %b
1136   %cmp1 = fcmp false double %a, %b
1137   %retval = or i1 %cmp, %cmp1
1138   ret i1 %retval
1141 define i1 @auto_gen_28_logical(double %a, double %b) {
1142 ; CHECK-LABEL: @auto_gen_28_logical(
1143 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1144 ; CHECK-NEXT:    ret i1 [[CMP]]
1146   %cmp = fcmp ord double %a, %b
1147   %cmp1 = fcmp false double %a, %b
1148   %retval = select i1 %cmp, i1 true, i1 %cmp1
1149   ret i1 %retval
1152 define i1 @auto_gen_28_logical_fmf(double %a, double %b) {
1153 ; CHECK-LABEL: @auto_gen_28_logical_fmf(
1154 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1155 ; CHECK-NEXT:    ret i1 [[CMP]]
1157   %cmp = fcmp ord double %a, %b
1158   %cmp1 = fcmp fast false double %a, %b
1159   %retval = select i1 %cmp, i1 true, i1 %cmp1
1160   ret i1 %retval
1163 define i1 @auto_gen_29(double %a, double %b) {
1164 ; CHECK-LABEL: @auto_gen_29(
1165 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1166 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1168   %cmp = fcmp ord double %a, %b
1169   %cmp1 = fcmp oeq double %a, %b
1170   %retval = or i1 %cmp, %cmp1
1171   ret i1 %retval
1174 define i1 @auto_gen_29_logical(double %a, double %b) {
1175 ; CHECK-LABEL: @auto_gen_29_logical(
1176 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1177 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1179   %cmp = fcmp ord double %a, %b
1180   %cmp1 = fcmp oeq double %a, %b
1181   %retval = select i1 %cmp, i1 true, i1 %cmp1
1182   ret i1 %retval
1185 define i1 @auto_gen_29_logical_fmf(double %a, double %b) {
1186 ; CHECK-LABEL: @auto_gen_29_logical_fmf(
1187 ; CHECK-NEXT:    ret i1 true
1189   %cmp = fcmp fast ord double %a, %b
1190   %cmp1 = fcmp fast oeq double %a, %b
1191   %retval = select i1 %cmp, i1 true, i1 %cmp1
1192   ret i1 %retval
1195 define i1 @auto_gen_30(double %a, double %b) {
1196 ; CHECK-LABEL: @auto_gen_30(
1197 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1198 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1200   %cmp = fcmp ord double %a, %b
1201   %cmp1 = fcmp ogt double %a, %b
1202   %retval = or i1 %cmp, %cmp1
1203   ret i1 %retval
1206 define i1 @auto_gen_30_logical(double %a, double %b) {
1207 ; CHECK-LABEL: @auto_gen_30_logical(
1208 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1209 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1211   %cmp = fcmp ord double %a, %b
1212   %cmp1 = fcmp ogt double %a, %b
1213   %retval = select i1 %cmp, i1 true, i1 %cmp1
1214   ret i1 %retval
1217 define i1 @auto_gen_30_logical_fmf(double %a, double %b) {
1218 ; CHECK-LABEL: @auto_gen_30_logical_fmf(
1219 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1220 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1222   %cmp = fcmp ord double %a, %b
1223   %cmp1 = fcmp fast ogt double %a, %b
1224   %retval = select i1 %cmp, i1 true, i1 %cmp1
1225   ret i1 %retval
1228 define i1 @auto_gen_31(double %a, double %b) {
1229 ; CHECK-LABEL: @auto_gen_31(
1230 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1231 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1233   %cmp = fcmp ord double %a, %b
1234   %cmp1 = fcmp oge double %a, %b
1235   %retval = or i1 %cmp, %cmp1
1236   ret i1 %retval
1239 define i1 @auto_gen_31_logical(double %a, double %b) {
1240 ; CHECK-LABEL: @auto_gen_31_logical(
1241 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1242 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1244   %cmp = fcmp ord double %a, %b
1245   %cmp1 = fcmp oge double %a, %b
1246   %retval = select i1 %cmp, i1 true, i1 %cmp1
1247   ret i1 %retval
1250 define i1 @auto_gen_31_logical_fmf(double %a, double %b) {
1251 ; CHECK-LABEL: @auto_gen_31_logical_fmf(
1252 ; CHECK-NEXT:    ret i1 true
1254   %cmp = fcmp fast ord double %a, %b
1255   %cmp1 = fcmp fast oge double %a, %b
1256   %retval = select i1 %cmp, i1 true, i1 %cmp1
1257   ret i1 %retval
1260 define i1 @auto_gen_32(double %a, double %b) {
1261 ; CHECK-LABEL: @auto_gen_32(
1262 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1263 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1265   %cmp = fcmp ord double %a, %b
1266   %cmp1 = fcmp olt double %a, %b
1267   %retval = or i1 %cmp, %cmp1
1268   ret i1 %retval
1271 define i1 @auto_gen_32_logical(double %a, double %b) {
1272 ; CHECK-LABEL: @auto_gen_32_logical(
1273 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1274 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1276   %cmp = fcmp ord double %a, %b
1277   %cmp1 = fcmp olt double %a, %b
1278   %retval = select i1 %cmp, i1 true, i1 %cmp1
1279   ret i1 %retval
1282 define i1 @auto_gen_32_logical_fmf(double %a, double %b) {
1283 ; CHECK-LABEL: @auto_gen_32_logical_fmf(
1284 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1285 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1287   %cmp = fcmp ord double %a, %b
1288   %cmp1 = fcmp fast olt double %a, %b
1289   %retval = select i1 %cmp, i1 true, i1 %cmp1
1290   ret i1 %retval
1293 define i1 @auto_gen_33(double %a, double %b) {
1294 ; CHECK-LABEL: @auto_gen_33(
1295 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1296 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1298   %cmp = fcmp ord double %a, %b
1299   %cmp1 = fcmp ole double %a, %b
1300   %retval = or i1 %cmp, %cmp1
1301   ret i1 %retval
1304 define i1 @auto_gen_33_logical(double %a, double %b) {
1305 ; CHECK-LABEL: @auto_gen_33_logical(
1306 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1307 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1309   %cmp = fcmp ord double %a, %b
1310   %cmp1 = fcmp ole double %a, %b
1311   %retval = select i1 %cmp, i1 true, i1 %cmp1
1312   ret i1 %retval
1315 define i1 @auto_gen_33_logical_fmf(double %a, double %b) {
1316 ; CHECK-LABEL: @auto_gen_33_logical_fmf(
1317 ; CHECK-NEXT:    ret i1 true
1319   %cmp = fcmp fast ord double %a, %b
1320   %cmp1 = fcmp fast ole double %a, %b
1321   %retval = select i1 %cmp, i1 true, i1 %cmp1
1322   ret i1 %retval
1325 define i1 @auto_gen_34(double %a, double %b) {
1326 ; CHECK-LABEL: @auto_gen_34(
1327 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1328 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1330   %cmp = fcmp ord double %a, %b
1331   %cmp1 = fcmp one double %a, %b
1332   %retval = or i1 %cmp, %cmp1
1333   ret i1 %retval
1336 define i1 @auto_gen_34_logical(double %a, double %b) {
1337 ; CHECK-LABEL: @auto_gen_34_logical(
1338 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1339 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1341   %cmp = fcmp ord double %a, %b
1342   %cmp1 = fcmp one double %a, %b
1343   %retval = select i1 %cmp, i1 true, i1 %cmp1
1344   ret i1 %retval
1347 define i1 @auto_gen_34_logical_fmf(double %a, double %b) {
1348 ; CHECK-LABEL: @auto_gen_34_logical_fmf(
1349 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1350 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1352   %cmp = fcmp ord double %a, %b
1353   %cmp1 = fcmp fast one double %a, %b
1354   %retval = select i1 %cmp, i1 true, i1 %cmp1
1355   ret i1 %retval
1358 define i1 @auto_gen_35(double %a, double %b) {
1359 ; CHECK-LABEL: @auto_gen_35(
1360 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1361 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1363   %cmp = fcmp ord double %a, %b
1364   %cmp1 = fcmp ord double %a, %b
1365   %retval = or i1 %cmp, %cmp1
1366   ret i1 %retval
1369 define i1 @auto_gen_35_logical(double %a, double %b) {
1370 ; CHECK-LABEL: @auto_gen_35_logical(
1371 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1372 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1374   %cmp = fcmp ord double %a, %b
1375   %cmp1 = fcmp ord double %a, %b
1376   %retval = select i1 %cmp, i1 true, i1 %cmp1
1377   ret i1 %retval
1380 define i1 @auto_gen_35_logical_fmf(double %a, double %b) {
1381 ; CHECK-LABEL: @auto_gen_35_logical_fmf(
1382 ; CHECK-NEXT:    ret i1 true
1384   %cmp = fcmp fast ord double %a, %b
1385   %cmp1 = fcmp fast ord double %a, %b
1386   %retval = select i1 %cmp, i1 true, i1 %cmp1
1387   ret i1 %retval
1390 define i1 @auto_gen_36(double %a, double %b) {
1391 ; CHECK-LABEL: @auto_gen_36(
1392 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1393 ; CHECK-NEXT:    ret i1 [[CMP]]
1395   %cmp = fcmp ueq double %a, %b
1396   %cmp1 = fcmp false double %a, %b
1397   %retval = or i1 %cmp, %cmp1
1398   ret i1 %retval
1401 define i1 @auto_gen_36_logical(double %a, double %b) {
1402 ; CHECK-LABEL: @auto_gen_36_logical(
1403 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1404 ; CHECK-NEXT:    ret i1 [[CMP]]
1406   %cmp = fcmp ueq double %a, %b
1407   %cmp1 = fcmp false double %a, %b
1408   %retval = select i1 %cmp, i1 true, i1 %cmp1
1409   ret i1 %retval
1412 define i1 @auto_gen_36_logical_fmf(double %a, double %b) {
1413 ; CHECK-LABEL: @auto_gen_36_logical_fmf(
1414 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1415 ; CHECK-NEXT:    ret i1 [[CMP]]
1417   %cmp = fcmp ueq double %a, %b
1418   %cmp1 = fcmp fast false double %a, %b
1419   %retval = select i1 %cmp, i1 true, i1 %cmp1
1420   ret i1 %retval
1423 define i1 @auto_gen_37(double %a, double %b) {
1424 ; CHECK-LABEL: @auto_gen_37(
1425 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1426 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1428   %cmp = fcmp ueq double %a, %b
1429   %cmp1 = fcmp oeq double %a, %b
1430   %retval = or i1 %cmp, %cmp1
1431   ret i1 %retval
1434 define i1 @auto_gen_37_logical(double %a, double %b) {
1435 ; CHECK-LABEL: @auto_gen_37_logical(
1436 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1437 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1439   %cmp = fcmp ueq double %a, %b
1440   %cmp1 = fcmp oeq double %a, %b
1441   %retval = select i1 %cmp, i1 true, i1 %cmp1
1442   ret i1 %retval
1445 define i1 @auto_gen_37_logical_fmf(double %a, double %b) {
1446 ; CHECK-LABEL: @auto_gen_37_logical_fmf(
1447 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]
1448 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1450   %cmp = fcmp fast ueq double %a, %b
1451   %cmp1 = fcmp fast oeq double %a, %b
1452   %retval = select i1 %cmp, i1 true, i1 %cmp1
1453   ret i1 %retval
1456 define i1 @auto_gen_38(double %a, double %b) {
1457 ; CHECK-LABEL: @auto_gen_38(
1458 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1459 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1461   %cmp = fcmp ueq double %a, %b
1462   %cmp1 = fcmp ogt double %a, %b
1463   %retval = or i1 %cmp, %cmp1
1464   ret i1 %retval
1467 define i1 @auto_gen_38_logical(double %a, double %b) {
1468 ; CHECK-LABEL: @auto_gen_38_logical(
1469 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1470 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1472   %cmp = fcmp ueq double %a, %b
1473   %cmp1 = fcmp ogt double %a, %b
1474   %retval = select i1 %cmp, i1 true, i1 %cmp1
1475   ret i1 %retval
1478 define i1 @auto_gen_38_logical_fmf(double %a, double %b) {
1479 ; CHECK-LABEL: @auto_gen_38_logical_fmf(
1480 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1481 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1483   %cmp = fcmp ueq double %a, %b
1484   %cmp1 = fcmp fast ogt double %a, %b
1485   %retval = select i1 %cmp, i1 true, i1 %cmp1
1486   ret i1 %retval
1489 define i1 @auto_gen_39(double %a, double %b) {
1490 ; CHECK-LABEL: @auto_gen_39(
1491 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1492 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1494   %cmp = fcmp ueq double %a, %b
1495   %cmp1 = fcmp oge double %a, %b
1496   %retval = or i1 %cmp, %cmp1
1497   ret i1 %retval
1500 define i1 @auto_gen_39_logical(double %a, double %b) {
1501 ; CHECK-LABEL: @auto_gen_39_logical(
1502 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1503 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1505   %cmp = fcmp ueq double %a, %b
1506   %cmp1 = fcmp oge double %a, %b
1507   %retval = select i1 %cmp, i1 true, i1 %cmp1
1508   ret i1 %retval
1511 define i1 @auto_gen_39_logical_fmf(double %a, double %b) {
1512 ; CHECK-LABEL: @auto_gen_39_logical_fmf(
1513 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
1514 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1516   %cmp = fcmp fast ueq double %a, %b
1517   %cmp1 = fcmp fast oge double %a, %b
1518   %retval = select i1 %cmp, i1 true, i1 %cmp1
1519   ret i1 %retval
1522 define i1 @auto_gen_40(double %a, double %b) {
1523 ; CHECK-LABEL: @auto_gen_40(
1524 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1525 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1527   %cmp = fcmp ueq double %a, %b
1528   %cmp1 = fcmp olt double %a, %b
1529   %retval = or i1 %cmp, %cmp1
1530   ret i1 %retval
1533 define i1 @auto_gen_40_logical(double %a, double %b) {
1534 ; CHECK-LABEL: @auto_gen_40_logical(
1535 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1536 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1538   %cmp = fcmp ueq double %a, %b
1539   %cmp1 = fcmp olt double %a, %b
1540   %retval = select i1 %cmp, i1 true, i1 %cmp1
1541   ret i1 %retval
1544 define i1 @auto_gen_40_logical_fmf(double %a, double %b) {
1545 ; CHECK-LABEL: @auto_gen_40_logical_fmf(
1546 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1547 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1549   %cmp = fcmp ueq double %a, %b
1550   %cmp1 = fcmp fast olt double %a, %b
1551   %retval = select i1 %cmp, i1 true, i1 %cmp1
1552   ret i1 %retval
1555 define i1 @auto_gen_41(double %a, double %b) {
1556 ; CHECK-LABEL: @auto_gen_41(
1557 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1558 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1560   %cmp = fcmp ueq double %a, %b
1561   %cmp1 = fcmp ole double %a, %b
1562   %retval = or i1 %cmp, %cmp1
1563   ret i1 %retval
1566 define i1 @auto_gen_41_logical(double %a, double %b) {
1567 ; CHECK-LABEL: @auto_gen_41_logical(
1568 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1569 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1571   %cmp = fcmp ueq double %a, %b
1572   %cmp1 = fcmp ole double %a, %b
1573   %retval = select i1 %cmp, i1 true, i1 %cmp1
1574   ret i1 %retval
1577 define i1 @auto_gen_41_logical_fmf(double %a, double %b) {
1578 ; CHECK-LABEL: @auto_gen_41_logical_fmf(
1579 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
1580 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1582   %cmp = fcmp fast ueq double %a, %b
1583   %cmp1 = fcmp fast ole double %a, %b
1584   %retval = select i1 %cmp, i1 true, i1 %cmp1
1585   ret i1 %retval
1588 define i1 @auto_gen_42(double %a, double %b) {
1589 ; CHECK-LABEL: @auto_gen_42(
1590 ; CHECK-NEXT:    ret i1 true
1592   %cmp = fcmp ueq double %a, %b
1593   %cmp1 = fcmp one double %a, %b
1594   %retval = or i1 %cmp, %cmp1
1595   ret i1 %retval
1598 define i1 @auto_gen_42_logical(double %a, double %b) {
1599 ; CHECK-LABEL: @auto_gen_42_logical(
1600 ; CHECK-NEXT:    ret i1 true
1602   %cmp = fcmp ueq double %a, %b
1603   %cmp1 = fcmp one double %a, %b
1604   %retval = select i1 %cmp, i1 true, i1 %cmp1
1605   ret i1 %retval
1608 define i1 @auto_gen_42_logical_fmf(double %a, double %b) {
1609 ; CHECK-LABEL: @auto_gen_42_logical_fmf(
1610 ; CHECK-NEXT:    ret i1 true
1612   %cmp = fcmp ueq double %a, %b
1613   %cmp1 = fcmp fast one double %a, %b
1614   %retval = select i1 %cmp, i1 true, i1 %cmp1
1615   ret i1 %retval
1618 define i1 @auto_gen_43(double %a, double %b) {
1619 ; CHECK-LABEL: @auto_gen_43(
1620 ; CHECK-NEXT:    ret i1 true
1622   %cmp = fcmp ueq double %a, %b
1623   %cmp1 = fcmp ord double %a, %b
1624   %retval = or i1 %cmp, %cmp1
1625   ret i1 %retval
1628 define i1 @auto_gen_43_logical(double %a, double %b) {
1629 ; CHECK-LABEL: @auto_gen_43_logical(
1630 ; CHECK-NEXT:    ret i1 true
1632   %cmp = fcmp ueq double %a, %b
1633   %cmp1 = fcmp ord double %a, %b
1634   %retval = select i1 %cmp, i1 true, i1 %cmp1
1635   ret i1 %retval
1638 define i1 @auto_gen_43_logical_fmf(double %a, double %b) {
1639 ; CHECK-LABEL: @auto_gen_43_logical_fmf(
1640 ; CHECK-NEXT:    ret i1 true
1642   %cmp = fcmp fast ueq double %a, %b
1643   %cmp1 = fcmp fast ord double %a, %b
1644   %retval = select i1 %cmp, i1 true, i1 %cmp1
1645   ret i1 %retval
1648 define i1 @auto_gen_44(double %a, double %b) {
1649 ; CHECK-LABEL: @auto_gen_44(
1650 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1651 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1653   %cmp = fcmp ueq double %a, %b
1654   %cmp1 = fcmp ueq double %a, %b
1655   %retval = or i1 %cmp, %cmp1
1656   ret i1 %retval
1659 define i1 @auto_gen_44_logical(double %a, double %b) {
1660 ; CHECK-LABEL: @auto_gen_44_logical(
1661 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1662 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1664   %cmp = fcmp ueq double %a, %b
1665   %cmp1 = fcmp ueq double %a, %b
1666   %retval = select i1 %cmp, i1 true, i1 %cmp1
1667   ret i1 %retval
1670 define i1 @auto_gen_44_logical_fmf(double %a, double %b) {
1671 ; CHECK-LABEL: @auto_gen_44_logical_fmf(
1672 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1673 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1675   %cmp = fcmp ueq double %a, %b
1676   %cmp1 = fcmp fast ueq double %a, %b
1677   %retval = select i1 %cmp, i1 true, i1 %cmp1
1678   ret i1 %retval
1681 define i1 @auto_gen_45(double %a, double %b) {
1682 ; CHECK-LABEL: @auto_gen_45(
1683 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1684 ; CHECK-NEXT:    ret i1 [[CMP]]
1686   %cmp = fcmp ugt double %a, %b
1687   %cmp1 = fcmp false double %a, %b
1688   %retval = or i1 %cmp, %cmp1
1689   ret i1 %retval
1692 define i1 @auto_gen_45_logical(double %a, double %b) {
1693 ; CHECK-LABEL: @auto_gen_45_logical(
1694 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1695 ; CHECK-NEXT:    ret i1 [[CMP]]
1697   %cmp = fcmp ugt double %a, %b
1698   %cmp1 = fcmp false double %a, %b
1699   %retval = select i1 %cmp, i1 true, i1 %cmp1
1700   ret i1 %retval
1703 define i1 @auto_gen_45_logical_fmf(double %a, double %b) {
1704 ; CHECK-LABEL: @auto_gen_45_logical_fmf(
1705 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]]
1706 ; CHECK-NEXT:    ret i1 [[CMP]]
1708   %cmp = fcmp fast ugt double %a, %b
1709   %cmp1 = fcmp fast false double %a, %b
1710   %retval = select i1 %cmp, i1 true, i1 %cmp1
1711   ret i1 %retval
1714 define i1 @auto_gen_46(double %a, double %b) {
1715 ; CHECK-LABEL: @auto_gen_46(
1716 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1717 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1719   %cmp = fcmp ugt double %a, %b
1720   %cmp1 = fcmp oeq double %a, %b
1721   %retval = or i1 %cmp, %cmp1
1722   ret i1 %retval
1725 define i1 @auto_gen_46_logical(double %a, double %b) {
1726 ; CHECK-LABEL: @auto_gen_46_logical(
1727 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1728 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1730   %cmp = fcmp ugt double %a, %b
1731   %cmp1 = fcmp oeq double %a, %b
1732   %retval = select i1 %cmp, i1 true, i1 %cmp1
1733   ret i1 %retval
1736 define i1 @auto_gen_46_logical_fmf(double %a, double %b) {
1737 ; CHECK-LABEL: @auto_gen_46_logical_fmf(
1738 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1739 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1741   %cmp = fcmp ugt double %a, %b
1742   %cmp1 = fcmp fast oeq double %a, %b
1743   %retval = select i1 %cmp, i1 true, i1 %cmp1
1744   ret i1 %retval
1747 define i1 @auto_gen_47(double %a, double %b) {
1748 ; CHECK-LABEL: @auto_gen_47(
1749 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1750 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1752   %cmp = fcmp ugt double %a, %b
1753   %cmp1 = fcmp ogt double %a, %b
1754   %retval = or i1 %cmp, %cmp1
1755   ret i1 %retval
1758 define i1 @auto_gen_47_logical(double %a, double %b) {
1759 ; CHECK-LABEL: @auto_gen_47_logical(
1760 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1761 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1763   %cmp = fcmp ugt double %a, %b
1764   %cmp1 = fcmp ogt double %a, %b
1765   %retval = select i1 %cmp, i1 true, i1 %cmp1
1766   ret i1 %retval
1769 define i1 @auto_gen_47_logical_fmf(double %a, double %b) {
1770 ; CHECK-LABEL: @auto_gen_47_logical_fmf(
1771 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]]
1772 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1774   %cmp = fcmp fast ugt double %a, %b
1775   %cmp1 = fcmp fast ogt double %a, %b
1776   %retval = select i1 %cmp, i1 true, i1 %cmp1
1777   ret i1 %retval
1780 define i1 @auto_gen_48(double %a, double %b) {
1781 ; CHECK-LABEL: @auto_gen_48(
1782 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1783 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1785   %cmp = fcmp ugt double %a, %b
1786   %cmp1 = fcmp oge double %a, %b
1787   %retval = or i1 %cmp, %cmp1
1788   ret i1 %retval
1791 define i1 @auto_gen_48_logical(double %a, double %b) {
1792 ; CHECK-LABEL: @auto_gen_48_logical(
1793 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1794 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1796   %cmp = fcmp ugt double %a, %b
1797   %cmp1 = fcmp oge double %a, %b
1798   %retval = select i1 %cmp, i1 true, i1 %cmp1
1799   ret i1 %retval
1802 define i1 @auto_gen_48_logical_fmf(double %a, double %b) {
1803 ; CHECK-LABEL: @auto_gen_48_logical_fmf(
1804 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1805 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1807   %cmp = fcmp ugt double %a, %b
1808   %cmp1 = fcmp fast oge double %a, %b
1809   %retval = select i1 %cmp, i1 true, i1 %cmp1
1810   ret i1 %retval
1813 define i1 @auto_gen_49(double %a, double %b) {
1814 ; CHECK-LABEL: @auto_gen_49(
1815 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1816 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1818   %cmp = fcmp ugt double %a, %b
1819   %cmp1 = fcmp olt double %a, %b
1820   %retval = or i1 %cmp, %cmp1
1821   ret i1 %retval
1824 define i1 @auto_gen_49_logical(double %a, double %b) {
1825 ; CHECK-LABEL: @auto_gen_49_logical(
1826 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1827 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1829   %cmp = fcmp ugt double %a, %b
1830   %cmp1 = fcmp olt double %a, %b
1831   %retval = select i1 %cmp, i1 true, i1 %cmp1
1832   ret i1 %retval
1835 define i1 @auto_gen_49_logical_fmf(double %a, double %b) {
1836 ; CHECK-LABEL: @auto_gen_49_logical_fmf(
1837 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
1838 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1840   %cmp = fcmp fast ugt double %a, %b
1841   %cmp1 = fcmp fast olt double %a, %b
1842   %retval = select i1 %cmp, i1 true, i1 %cmp1
1843   ret i1 %retval
1846 define i1 @auto_gen_50(double %a, double %b) {
1847 ; CHECK-LABEL: @auto_gen_50(
1848 ; CHECK-NEXT:    ret i1 true
1850   %cmp = fcmp ugt double %a, %b
1851   %cmp1 = fcmp ole double %a, %b
1852   %retval = or i1 %cmp, %cmp1
1853   ret i1 %retval
1856 define i1 @auto_gen_50_logical(double %a, double %b) {
1857 ; CHECK-LABEL: @auto_gen_50_logical(
1858 ; CHECK-NEXT:    ret i1 true
1860   %cmp = fcmp ugt double %a, %b
1861   %cmp1 = fcmp ole double %a, %b
1862   %retval = select i1 %cmp, i1 true, i1 %cmp1
1863   ret i1 %retval
1866 define i1 @auto_gen_50_logical_fmf(double %a, double %b) {
1867 ; CHECK-LABEL: @auto_gen_50_logical_fmf(
1868 ; CHECK-NEXT:    ret i1 true
1870   %cmp = fcmp ugt double %a, %b
1871   %cmp1 = fcmp fast ole double %a, %b
1872   %retval = select i1 %cmp, i1 true, i1 %cmp1
1873   ret i1 %retval
1876 define i1 @auto_gen_51(double %a, double %b) {
1877 ; CHECK-LABEL: @auto_gen_51(
1878 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1879 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1881   %cmp = fcmp ugt double %a, %b
1882   %cmp1 = fcmp one double %a, %b
1883   %retval = or i1 %cmp, %cmp1
1884   ret i1 %retval
1887 define i1 @auto_gen_51_logical(double %a, double %b) {
1888 ; CHECK-LABEL: @auto_gen_51_logical(
1889 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1890 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1892   %cmp = fcmp ugt double %a, %b
1893   %cmp1 = fcmp one double %a, %b
1894   %retval = select i1 %cmp, i1 true, i1 %cmp1
1895   ret i1 %retval
1898 define i1 @auto_gen_51_logical_fmf(double %a, double %b) {
1899 ; CHECK-LABEL: @auto_gen_51_logical_fmf(
1900 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
1901 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1903   %cmp = fcmp fast ugt double %a, %b
1904   %cmp1 = fcmp fast one double %a, %b
1905   %retval = select i1 %cmp, i1 true, i1 %cmp1
1906   ret i1 %retval
1909 define i1 @auto_gen_52(double %a, double %b) {
1910 ; CHECK-LABEL: @auto_gen_52(
1911 ; CHECK-NEXT:    ret i1 true
1913   %cmp = fcmp ugt double %a, %b
1914   %cmp1 = fcmp ord double %a, %b
1915   %retval = or i1 %cmp, %cmp1
1916   ret i1 %retval
1919 define i1 @auto_gen_52_logical(double %a, double %b) {
1920 ; CHECK-LABEL: @auto_gen_52_logical(
1921 ; CHECK-NEXT:    ret i1 true
1923   %cmp = fcmp ugt double %a, %b
1924   %cmp1 = fcmp ord double %a, %b
1925   %retval = select i1 %cmp, i1 true, i1 %cmp1
1926   ret i1 %retval
1929 define i1 @auto_gen_52_logical_fmf(double %a, double %b) {
1930 ; CHECK-LABEL: @auto_gen_52_logical_fmf(
1931 ; CHECK-NEXT:    ret i1 true
1933   %cmp = fcmp ugt double %a, %b
1934   %cmp1 = fcmp fast ord double %a, %b
1935   %retval = select i1 %cmp, i1 true, i1 %cmp1
1936   ret i1 %retval
1939 define i1 @auto_gen_53(double %a, double %b) {
1940 ; CHECK-LABEL: @auto_gen_53(
1941 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1942 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1944   %cmp = fcmp ugt double %a, %b
1945   %cmp1 = fcmp ueq double %a, %b
1946   %retval = or i1 %cmp, %cmp1
1947   ret i1 %retval
1950 define i1 @auto_gen_53_logical(double %a, double %b) {
1951 ; CHECK-LABEL: @auto_gen_53_logical(
1952 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1953 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1955   %cmp = fcmp ugt double %a, %b
1956   %cmp1 = fcmp ueq double %a, %b
1957   %retval = select i1 %cmp, i1 true, i1 %cmp1
1958   ret i1 %retval
1961 define i1 @auto_gen_53_logical_fmf(double %a, double %b) {
1962 ; CHECK-LABEL: @auto_gen_53_logical_fmf(
1963 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
1964 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1966   %cmp = fcmp fast ugt double %a, %b
1967   %cmp1 = fcmp fast ueq double %a, %b
1968   %retval = select i1 %cmp, i1 true, i1 %cmp1
1969   ret i1 %retval
1972 define i1 @auto_gen_54(double %a, double %b) {
1973 ; CHECK-LABEL: @auto_gen_54(
1974 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1975 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1977   %cmp = fcmp ugt double %a, %b
1978   %cmp1 = fcmp ugt double %a, %b
1979   %retval = or i1 %cmp, %cmp1
1980   ret i1 %retval
1983 define i1 @auto_gen_54_logical(double %a, double %b) {
1984 ; CHECK-LABEL: @auto_gen_54_logical(
1985 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1986 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1988   %cmp = fcmp ugt double %a, %b
1989   %cmp1 = fcmp ugt double %a, %b
1990   %retval = select i1 %cmp, i1 true, i1 %cmp1
1991   ret i1 %retval
1994 define i1 @auto_gen_54_logical_fmf(double %a, double %b) {
1995 ; CHECK-LABEL: @auto_gen_54_logical_fmf(
1996 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1997 ; CHECK-NEXT:    ret i1 [[RETVAL]]
1999   %cmp = fcmp ugt double %a, %b
2000   %cmp1 = fcmp fast ugt double %a, %b
2001   %retval = select i1 %cmp, i1 true, i1 %cmp1
2002   ret i1 %retval
2005 define i1 @auto_gen_55(double %a, double %b) {
2006 ; CHECK-LABEL: @auto_gen_55(
2007 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2008 ; CHECK-NEXT:    ret i1 [[CMP]]
2010   %cmp = fcmp uge double %a, %b
2011   %cmp1 = fcmp false double %a, %b
2012   %retval = or i1 %cmp, %cmp1
2013   ret i1 %retval
2016 define i1 @auto_gen_55_logical(double %a, double %b) {
2017 ; CHECK-LABEL: @auto_gen_55_logical(
2018 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2019 ; CHECK-NEXT:    ret i1 [[CMP]]
2021   %cmp = fcmp uge double %a, %b
2022   %cmp1 = fcmp false double %a, %b
2023   %retval = select i1 %cmp, i1 true, i1 %cmp1
2024   ret i1 %retval
2027 define i1 @auto_gen_55_logical_fmf(double %a, double %b) {
2028 ; CHECK-LABEL: @auto_gen_55_logical_fmf(
2029 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
2030 ; CHECK-NEXT:    ret i1 [[CMP]]
2032   %cmp = fcmp fast uge double %a, %b
2033   %cmp1 = fcmp fast false double %a, %b
2034   %retval = select i1 %cmp, i1 true, i1 %cmp1
2035   ret i1 %retval
2038 define i1 @auto_gen_56(double %a, double %b) {
2039 ; CHECK-LABEL: @auto_gen_56(
2040 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2041 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2043   %cmp = fcmp uge double %a, %b
2044   %cmp1 = fcmp oeq double %a, %b
2045   %retval = or i1 %cmp, %cmp1
2046   ret i1 %retval
2049 define i1 @auto_gen_56_logical(double %a, double %b) {
2050 ; CHECK-LABEL: @auto_gen_56_logical(
2051 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2052 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2054   %cmp = fcmp uge double %a, %b
2055   %cmp1 = fcmp oeq double %a, %b
2056   %retval = select i1 %cmp, i1 true, i1 %cmp1
2057   ret i1 %retval
2060 define i1 @auto_gen_56_logical_fmf(double %a, double %b) {
2061 ; CHECK-LABEL: @auto_gen_56_logical_fmf(
2062 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2063 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2065   %cmp = fcmp uge double %a, %b
2066   %cmp1 = fcmp fast oeq double %a, %b
2067   %retval = select i1 %cmp, i1 true, i1 %cmp1
2068   ret i1 %retval
2071 define i1 @auto_gen_57(double %a, double %b) {
2072 ; CHECK-LABEL: @auto_gen_57(
2073 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2074 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2076   %cmp = fcmp uge double %a, %b
2077   %cmp1 = fcmp ogt double %a, %b
2078   %retval = or i1 %cmp, %cmp1
2079   ret i1 %retval
2082 define i1 @auto_gen_57_logical(double %a, double %b) {
2083 ; CHECK-LABEL: @auto_gen_57_logical(
2084 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2085 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2087   %cmp = fcmp uge double %a, %b
2088   %cmp1 = fcmp ogt double %a, %b
2089   %retval = select i1 %cmp, i1 true, i1 %cmp1
2090   ret i1 %retval
2093 define i1 @auto_gen_57_logical_fmf(double %a, double %b) {
2094 ; CHECK-LABEL: @auto_gen_57_logical_fmf(
2095 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
2096 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2098   %cmp = fcmp fast uge double %a, %b
2099   %cmp1 = fcmp fast ogt double %a, %b
2100   %retval = select i1 %cmp, i1 true, i1 %cmp1
2101   ret i1 %retval
2104 define i1 @auto_gen_58(double %a, double %b) {
2105 ; CHECK-LABEL: @auto_gen_58(
2106 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2107 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2109   %cmp = fcmp uge double %a, %b
2110   %cmp1 = fcmp oge double %a, %b
2111   %retval = or i1 %cmp, %cmp1
2112   ret i1 %retval
2115 define i1 @auto_gen_58_logical(double %a, double %b) {
2116 ; CHECK-LABEL: @auto_gen_58_logical(
2117 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2118 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2120   %cmp = fcmp uge double %a, %b
2121   %cmp1 = fcmp oge double %a, %b
2122   %retval = select i1 %cmp, i1 true, i1 %cmp1
2123   ret i1 %retval
2126 define i1 @auto_gen_58_logical_fmf(double %a, double %b) {
2127 ; CHECK-LABEL: @auto_gen_58_logical_fmf(
2128 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2129 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2131   %cmp = fcmp uge double %a, %b
2132   %cmp1 = fcmp fast oge double %a, %b
2133   %retval = select i1 %cmp, i1 true, i1 %cmp1
2134   ret i1 %retval
2137 define i1 @auto_gen_59(double %a, double %b) {
2138 ; CHECK-LABEL: @auto_gen_59(
2139 ; CHECK-NEXT:    ret i1 true
2141   %cmp = fcmp uge double %a, %b
2142   %cmp1 = fcmp olt double %a, %b
2143   %retval = or i1 %cmp, %cmp1
2144   ret i1 %retval
2147 define i1 @auto_gen_59_logical(double %a, double %b) {
2148 ; CHECK-LABEL: @auto_gen_59_logical(
2149 ; CHECK-NEXT:    ret i1 true
2151   %cmp = fcmp uge double %a, %b
2152   %cmp1 = fcmp olt double %a, %b
2153   %retval = select i1 %cmp, i1 true, i1 %cmp1
2154   ret i1 %retval
2157 define i1 @auto_gen_59_logical_fmf(double %a, double %b) {
2158 ; CHECK-LABEL: @auto_gen_59_logical_fmf(
2159 ; CHECK-NEXT:    ret i1 true
2161   %cmp = fcmp fast uge double %a, %b
2162   %cmp1 = fcmp fast olt double %a, %b
2163   %retval = select i1 %cmp, i1 true, i1 %cmp1
2164   ret i1 %retval
2167 define i1 @auto_gen_60(double %a, double %b) {
2168 ; CHECK-LABEL: @auto_gen_60(
2169 ; CHECK-NEXT:    ret i1 true
2171   %cmp = fcmp uge double %a, %b
2172   %cmp1 = fcmp ole double %a, %b
2173   %retval = or i1 %cmp, %cmp1
2174   ret i1 %retval
2177 define i1 @auto_gen_60_logical(double %a, double %b) {
2178 ; CHECK-LABEL: @auto_gen_60_logical(
2179 ; CHECK-NEXT:    ret i1 true
2181   %cmp = fcmp uge double %a, %b
2182   %cmp1 = fcmp ole double %a, %b
2183   %retval = select i1 %cmp, i1 true, i1 %cmp1
2184   ret i1 %retval
2187 define i1 @auto_gen_60_logical_fmf(double %a, double %b) {
2188 ; CHECK-LABEL: @auto_gen_60_logical_fmf(
2189 ; CHECK-NEXT:    ret i1 true
2191   %cmp = fcmp uge double %a, %b
2192   %cmp1 = fcmp fast ole double %a, %b
2193   %retval = select i1 %cmp, i1 true, i1 %cmp1
2194   ret i1 %retval
2197 define i1 @auto_gen_61(double %a, double %b) {
2198 ; CHECK-LABEL: @auto_gen_61(
2199 ; CHECK-NEXT:    ret i1 true
2201   %cmp = fcmp uge double %a, %b
2202   %cmp1 = fcmp one double %a, %b
2203   %retval = or i1 %cmp, %cmp1
2204   ret i1 %retval
2207 define i1 @auto_gen_61_logical(double %a, double %b) {
2208 ; CHECK-LABEL: @auto_gen_61_logical(
2209 ; CHECK-NEXT:    ret i1 true
2211   %cmp = fcmp uge double %a, %b
2212   %cmp1 = fcmp one double %a, %b
2213   %retval = select i1 %cmp, i1 true, i1 %cmp1
2214   ret i1 %retval
2217 define i1 @auto_gen_61_logical_fmf(double %a, double %b) {
2218 ; CHECK-LABEL: @auto_gen_61_logical_fmf(
2219 ; CHECK-NEXT:    ret i1 true
2221   %cmp = fcmp fast uge double %a, %b
2222   %cmp1 = fcmp fast one double %a, %b
2223   %retval = select i1 %cmp, i1 true, i1 %cmp1
2224   ret i1 %retval
2227 define i1 @auto_gen_62(double %a, double %b) {
2228 ; CHECK-LABEL: @auto_gen_62(
2229 ; CHECK-NEXT:    ret i1 true
2231   %cmp = fcmp uge double %a, %b
2232   %cmp1 = fcmp ord double %a, %b
2233   %retval = or i1 %cmp, %cmp1
2234   ret i1 %retval
2237 define i1 @auto_gen_62_logical(double %a, double %b) {
2238 ; CHECK-LABEL: @auto_gen_62_logical(
2239 ; CHECK-NEXT:    ret i1 true
2241   %cmp = fcmp uge double %a, %b
2242   %cmp1 = fcmp ord double %a, %b
2243   %retval = select i1 %cmp, i1 true, i1 %cmp1
2244   ret i1 %retval
2247 define i1 @auto_gen_62_logical_fmf(double %a, double %b) {
2248 ; CHECK-LABEL: @auto_gen_62_logical_fmf(
2249 ; CHECK-NEXT:    ret i1 true
2251   %cmp = fcmp uge double %a, %b
2252   %cmp1 = fcmp fast ord double %a, %b
2253   %retval = select i1 %cmp, i1 true, i1 %cmp1
2254   ret i1 %retval
2257 define i1 @auto_gen_63(double %a, double %b) {
2258 ; CHECK-LABEL: @auto_gen_63(
2259 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2260 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2262   %cmp = fcmp uge double %a, %b
2263   %cmp1 = fcmp ueq double %a, %b
2264   %retval = or i1 %cmp, %cmp1
2265   ret i1 %retval
2268 define i1 @auto_gen_63_logical(double %a, double %b) {
2269 ; CHECK-LABEL: @auto_gen_63_logical(
2270 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2271 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2273   %cmp = fcmp uge double %a, %b
2274   %cmp1 = fcmp ueq double %a, %b
2275   %retval = select i1 %cmp, i1 true, i1 %cmp1
2276   ret i1 %retval
2279 define i1 @auto_gen_63_logical_fmf(double %a, double %b) {
2280 ; CHECK-LABEL: @auto_gen_63_logical_fmf(
2281 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
2282 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2284   %cmp = fcmp fast uge double %a, %b
2285   %cmp1 = fcmp fast ueq double %a, %b
2286   %retval = select i1 %cmp, i1 true, i1 %cmp1
2287   ret i1 %retval
2290 define i1 @auto_gen_64(double %a, double %b) {
2291 ; CHECK-LABEL: @auto_gen_64(
2292 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2293 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2295   %cmp = fcmp uge double %a, %b
2296   %cmp1 = fcmp ugt double %a, %b
2297   %retval = or i1 %cmp, %cmp1
2298   ret i1 %retval
2301 define i1 @auto_gen_64_logical(double %a, double %b) {
2302 ; CHECK-LABEL: @auto_gen_64_logical(
2303 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2304 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2306   %cmp = fcmp uge double %a, %b
2307   %cmp1 = fcmp ugt double %a, %b
2308   %retval = select i1 %cmp, i1 true, i1 %cmp1
2309   ret i1 %retval
2312 define i1 @auto_gen_64_logical_fmf(double %a, double %b) {
2313 ; CHECK-LABEL: @auto_gen_64_logical_fmf(
2314 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2315 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2317   %cmp = fcmp uge double %a, %b
2318   %cmp1 = fcmp fast ugt double %a, %b
2319   %retval = select i1 %cmp, i1 true, i1 %cmp1
2320   ret i1 %retval
2323 define i1 @auto_gen_65(double %a, double %b) {
2324 ; CHECK-LABEL: @auto_gen_65(
2325 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2326 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2328   %cmp = fcmp uge double %a, %b
2329   %cmp1 = fcmp uge double %a, %b
2330   %retval = or i1 %cmp, %cmp1
2331   ret i1 %retval
2334 define i1 @auto_gen_65_logical(double %a, double %b) {
2335 ; CHECK-LABEL: @auto_gen_65_logical(
2336 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2337 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2339   %cmp = fcmp uge double %a, %b
2340   %cmp1 = fcmp uge double %a, %b
2341   %retval = select i1 %cmp, i1 true, i1 %cmp1
2342   ret i1 %retval
2345 define i1 @auto_gen_65_logical_fmf(double %a, double %b) {
2346 ; CHECK-LABEL: @auto_gen_65_logical_fmf(
2347 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
2348 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2350   %cmp = fcmp fast uge double %a, %b
2351   %cmp1 = fcmp fast uge double %a, %b
2352   %retval = select i1 %cmp, i1 true, i1 %cmp1
2353   ret i1 %retval
2356 define i1 @auto_gen_66(double %a, double %b) {
2357 ; CHECK-LABEL: @auto_gen_66(
2358 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2359 ; CHECK-NEXT:    ret i1 [[CMP]]
2361   %cmp = fcmp ult double %a, %b
2362   %cmp1 = fcmp false double %a, %b
2363   %retval = or i1 %cmp, %cmp1
2364   ret i1 %retval
2367 define i1 @auto_gen_66_logical(double %a, double %b) {
2368 ; CHECK-LABEL: @auto_gen_66_logical(
2369 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2370 ; CHECK-NEXT:    ret i1 [[CMP]]
2372   %cmp = fcmp ult double %a, %b
2373   %cmp1 = fcmp false double %a, %b
2374   %retval = select i1 %cmp, i1 true, i1 %cmp1
2375   ret i1 %retval
2378 define i1 @auto_gen_66_logical_fmf(double %a, double %b) {
2379 ; CHECK-LABEL: @auto_gen_66_logical_fmf(
2380 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2381 ; CHECK-NEXT:    ret i1 [[CMP]]
2383   %cmp = fcmp ult double %a, %b
2384   %cmp1 = fcmp fast false double %a, %b
2385   %retval = select i1 %cmp, i1 true, i1 %cmp1
2386   ret i1 %retval
2389 define i1 @auto_gen_67(double %a, double %b) {
2390 ; CHECK-LABEL: @auto_gen_67(
2391 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2392 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2394   %cmp = fcmp ult double %a, %b
2395   %cmp1 = fcmp oeq double %a, %b
2396   %retval = or i1 %cmp, %cmp1
2397   ret i1 %retval
2400 define i1 @auto_gen_67_logical(double %a, double %b) {
2401 ; CHECK-LABEL: @auto_gen_67_logical(
2402 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2403 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2405   %cmp = fcmp ult double %a, %b
2406   %cmp1 = fcmp oeq double %a, %b
2407   %retval = select i1 %cmp, i1 true, i1 %cmp1
2408   ret i1 %retval
2411 define i1 @auto_gen_67_logical_fmf(double %a, double %b) {
2412 ; CHECK-LABEL: @auto_gen_67_logical_fmf(
2413 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
2414 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2416   %cmp = fcmp fast ult double %a, %b
2417   %cmp1 = fcmp fast oeq double %a, %b
2418   %retval = select i1 %cmp, i1 true, i1 %cmp1
2419   ret i1 %retval
2422 define i1 @auto_gen_68(double %a, double %b) {
2423 ; CHECK-LABEL: @auto_gen_68(
2424 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2425 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2427   %cmp = fcmp ult double %a, %b
2428   %cmp1 = fcmp ogt double %a, %b
2429   %retval = or i1 %cmp, %cmp1
2430   ret i1 %retval
2433 define i1 @auto_gen_68_logical(double %a, double %b) {
2434 ; CHECK-LABEL: @auto_gen_68_logical(
2435 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2436 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2438   %cmp = fcmp ult double %a, %b
2439   %cmp1 = fcmp ogt double %a, %b
2440   %retval = select i1 %cmp, i1 true, i1 %cmp1
2441   ret i1 %retval
2444 define i1 @auto_gen_68_logical_fmf(double %a, double %b) {
2445 ; CHECK-LABEL: @auto_gen_68_logical_fmf(
2446 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2447 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2449   %cmp = fcmp ult double %a, %b
2450   %cmp1 = fcmp fast ogt double %a, %b
2451   %retval = select i1 %cmp, i1 true, i1 %cmp1
2452   ret i1 %retval
2455 define i1 @auto_gen_69(double %a, double %b) {
2456 ; CHECK-LABEL: @auto_gen_69(
2457 ; CHECK-NEXT:    ret i1 true
2459   %cmp = fcmp ult double %a, %b
2460   %cmp1 = fcmp oge double %a, %b
2461   %retval = or i1 %cmp, %cmp1
2462   ret i1 %retval
2465 define i1 @auto_gen_69_logical(double %a, double %b) {
2466 ; CHECK-LABEL: @auto_gen_69_logical(
2467 ; CHECK-NEXT:    ret i1 true
2469   %cmp = fcmp ult double %a, %b
2470   %cmp1 = fcmp oge double %a, %b
2471   %retval = select i1 %cmp, i1 true, i1 %cmp1
2472   ret i1 %retval
2475 define i1 @auto_gen_69_logical_fmf(double %a, double %b) {
2476 ; CHECK-LABEL: @auto_gen_69_logical_fmf(
2477 ; CHECK-NEXT:    ret i1 true
2479   %cmp = fcmp fast ult double %a, %b
2480   %cmp1 = fcmp fast oge double %a, %b
2481   %retval = select i1 %cmp, i1 true, i1 %cmp1
2482   ret i1 %retval
2485 define i1 @auto_gen_70(double %a, double %b) {
2486 ; CHECK-LABEL: @auto_gen_70(
2487 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2488 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2490   %cmp = fcmp ult double %a, %b
2491   %cmp1 = fcmp olt double %a, %b
2492   %retval = or i1 %cmp, %cmp1
2493   ret i1 %retval
2496 define i1 @auto_gen_70_logical(double %a, double %b) {
2497 ; CHECK-LABEL: @auto_gen_70_logical(
2498 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2499 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2501   %cmp = fcmp ult double %a, %b
2502   %cmp1 = fcmp olt double %a, %b
2503   %retval = select i1 %cmp, i1 true, i1 %cmp1
2504   ret i1 %retval
2507 define i1 @auto_gen_70_logical_fmf(double %a, double %b) {
2508 ; CHECK-LABEL: @auto_gen_70_logical_fmf(
2509 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2510 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2512   %cmp = fcmp ult double %a, %b
2513   %cmp1 = fcmp fast olt double %a, %b
2514   %retval = select i1 %cmp, i1 true, i1 %cmp1
2515   ret i1 %retval
2518 define i1 @auto_gen_71(double %a, double %b) {
2519 ; CHECK-LABEL: @auto_gen_71(
2520 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2521 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2523   %cmp = fcmp ult double %a, %b
2524   %cmp1 = fcmp ole double %a, %b
2525   %retval = or i1 %cmp, %cmp1
2526   ret i1 %retval
2529 define i1 @auto_gen_71_logical(double %a, double %b) {
2530 ; CHECK-LABEL: @auto_gen_71_logical(
2531 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2532 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2534   %cmp = fcmp ult double %a, %b
2535   %cmp1 = fcmp ole double %a, %b
2536   %retval = select i1 %cmp, i1 true, i1 %cmp1
2537   ret i1 %retval
2540 define i1 @auto_gen_71_logical_fmf(double %a, double %b) {
2541 ; CHECK-LABEL: @auto_gen_71_logical_fmf(
2542 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
2543 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2545   %cmp = fcmp fast ult double %a, %b
2546   %cmp1 = fcmp fast ole double %a, %b
2547   %retval = select i1 %cmp, i1 true, i1 %cmp1
2548   ret i1 %retval
2551 define i1 @auto_gen_72(double %a, double %b) {
2552 ; CHECK-LABEL: @auto_gen_72(
2553 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2554 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2556   %cmp = fcmp ult double %a, %b
2557   %cmp1 = fcmp one double %a, %b
2558   %retval = or i1 %cmp, %cmp1
2559   ret i1 %retval
2562 define i1 @auto_gen_72_logical(double %a, double %b) {
2563 ; CHECK-LABEL: @auto_gen_72_logical(
2564 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2565 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2567   %cmp = fcmp ult double %a, %b
2568   %cmp1 = fcmp one double %a, %b
2569   %retval = select i1 %cmp, i1 true, i1 %cmp1
2570   ret i1 %retval
2573 define i1 @auto_gen_72_logical_fmf(double %a, double %b) {
2574 ; CHECK-LABEL: @auto_gen_72_logical_fmf(
2575 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2576 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2578   %cmp = fcmp ult double %a, %b
2579   %cmp1 = fcmp fast one double %a, %b
2580   %retval = select i1 %cmp, i1 true, i1 %cmp1
2581   ret i1 %retval
2584 define i1 @auto_gen_73(double %a, double %b) {
2585 ; CHECK-LABEL: @auto_gen_73(
2586 ; CHECK-NEXT:    ret i1 true
2588   %cmp = fcmp ult double %a, %b
2589   %cmp1 = fcmp ord double %a, %b
2590   %retval = or i1 %cmp, %cmp1
2591   ret i1 %retval
2594 define i1 @auto_gen_73_logical(double %a, double %b) {
2595 ; CHECK-LABEL: @auto_gen_73_logical(
2596 ; CHECK-NEXT:    ret i1 true
2598   %cmp = fcmp ult double %a, %b
2599   %cmp1 = fcmp ord double %a, %b
2600   %retval = select i1 %cmp, i1 true, i1 %cmp1
2601   ret i1 %retval
2604 define i1 @auto_gen_73_logical_fmf(double %a, double %b) {
2605 ; CHECK-LABEL: @auto_gen_73_logical_fmf(
2606 ; CHECK-NEXT:    ret i1 true
2608   %cmp = fcmp fast ult double %a, %b
2609   %cmp1 = fcmp fast ord double %a, %b
2610   %retval = select i1 %cmp, i1 true, i1 %cmp1
2611   ret i1 %retval
2614 define i1 @auto_gen_74(double %a, double %b) {
2615 ; CHECK-LABEL: @auto_gen_74(
2616 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2617 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2619   %cmp = fcmp ult double %a, %b
2620   %cmp1 = fcmp ueq double %a, %b
2621   %retval = or i1 %cmp, %cmp1
2622   ret i1 %retval
2625 define i1 @auto_gen_74_logical(double %a, double %b) {
2626 ; CHECK-LABEL: @auto_gen_74_logical(
2627 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2628 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2630   %cmp = fcmp ult double %a, %b
2631   %cmp1 = fcmp ueq double %a, %b
2632   %retval = select i1 %cmp, i1 true, i1 %cmp1
2633   ret i1 %retval
2636 define i1 @auto_gen_74_logical_fmf(double %a, double %b) {
2637 ; CHECK-LABEL: @auto_gen_74_logical_fmf(
2638 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2639 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2641   %cmp = fcmp ult double %a, %b
2642   %cmp1 = fcmp fast ueq double %a, %b
2643   %retval = select i1 %cmp, i1 true, i1 %cmp1
2644   ret i1 %retval
2647 define i1 @auto_gen_75(double %a, double %b) {
2648 ; CHECK-LABEL: @auto_gen_75(
2649 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2650 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2652   %cmp = fcmp ult double %a, %b
2653   %cmp1 = fcmp ugt double %a, %b
2654   %retval = or i1 %cmp, %cmp1
2655   ret i1 %retval
2658 define i1 @auto_gen_75_logical(double %a, double %b) {
2659 ; CHECK-LABEL: @auto_gen_75_logical(
2660 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
2661 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2663   %cmp = fcmp ult double %a, %b
2664   %cmp1 = fcmp ugt double %a, %b
2665   %retval = select i1 %cmp, i1 true, i1 %cmp1
2666   ret i1 %retval
2669 define i1 @auto_gen_75_logical_fmf(double %a, double %b) {
2670 ; CHECK-LABEL: @auto_gen_75_logical_fmf(
2671 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
2672 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2674   %cmp = fcmp fast ult double %a, %b
2675   %cmp1 = fcmp fast ugt double %a, %b
2676   %retval = select i1 %cmp, i1 true, i1 %cmp1
2677   ret i1 %retval
2680 define i1 @auto_gen_76(double %a, double %b) {
2681 ; CHECK-LABEL: @auto_gen_76(
2682 ; CHECK-NEXT:    ret i1 true
2684   %cmp = fcmp ult double %a, %b
2685   %cmp1 = fcmp uge double %a, %b
2686   %retval = or i1 %cmp, %cmp1
2687   ret i1 %retval
2690 define i1 @auto_gen_76_logical(double %a, double %b) {
2691 ; CHECK-LABEL: @auto_gen_76_logical(
2692 ; CHECK-NEXT:    ret i1 true
2694   %cmp = fcmp ult double %a, %b
2695   %cmp1 = fcmp uge double %a, %b
2696   %retval = select i1 %cmp, i1 true, i1 %cmp1
2697   ret i1 %retval
2700 define i1 @auto_gen_76_logical_fmf(double %a, double %b) {
2701 ; CHECK-LABEL: @auto_gen_76_logical_fmf(
2702 ; CHECK-NEXT:    ret i1 true
2704   %cmp = fcmp ult double %a, %b
2705   %cmp1 = fcmp fast uge double %a, %b
2706   %retval = select i1 %cmp, i1 true, i1 %cmp1
2707   ret i1 %retval
2710 define i1 @auto_gen_77(double %a, double %b) {
2711 ; CHECK-LABEL: @auto_gen_77(
2712 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2713 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2715   %cmp = fcmp ult double %a, %b
2716   %cmp1 = fcmp ult double %a, %b
2717   %retval = or i1 %cmp, %cmp1
2718   ret i1 %retval
2721 define i1 @auto_gen_77_logical(double %a, double %b) {
2722 ; CHECK-LABEL: @auto_gen_77_logical(
2723 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2724 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2726   %cmp = fcmp ult double %a, %b
2727   %cmp1 = fcmp ult double %a, %b
2728   %retval = select i1 %cmp, i1 true, i1 %cmp1
2729   ret i1 %retval
2732 define i1 @auto_gen_77_logical_fmf(double %a, double %b) {
2733 ; CHECK-LABEL: @auto_gen_77_logical_fmf(
2734 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]
2735 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2737   %cmp = fcmp fast ult double %a, %b
2738   %cmp1 = fcmp fast ult double %a, %b
2739   %retval = select i1 %cmp, i1 true, i1 %cmp1
2740   ret i1 %retval
2743 define i1 @auto_gen_78(double %a, double %b) {
2744 ; CHECK-LABEL: @auto_gen_78(
2745 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2746 ; CHECK-NEXT:    ret i1 [[CMP]]
2748   %cmp = fcmp ule double %a, %b
2749   %cmp1 = fcmp false double %a, %b
2750   %retval = or i1 %cmp, %cmp1
2751   ret i1 %retval
2754 define i1 @auto_gen_78_logical(double %a, double %b) {
2755 ; CHECK-LABEL: @auto_gen_78_logical(
2756 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2757 ; CHECK-NEXT:    ret i1 [[CMP]]
2759   %cmp = fcmp ule double %a, %b
2760   %cmp1 = fcmp false double %a, %b
2761   %retval = select i1 %cmp, i1 true, i1 %cmp1
2762   ret i1 %retval
2765 define i1 @auto_gen_78_logical_fmf(double %a, double %b) {
2766 ; CHECK-LABEL: @auto_gen_78_logical_fmf(
2767 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2768 ; CHECK-NEXT:    ret i1 [[CMP]]
2770   %cmp = fcmp ule double %a, %b
2771   %cmp1 = fcmp fast false double %a, %b
2772   %retval = select i1 %cmp, i1 true, i1 %cmp1
2773   ret i1 %retval
2776 define i1 @auto_gen_79(double %a, double %b) {
2777 ; CHECK-LABEL: @auto_gen_79(
2778 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2779 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2781   %cmp = fcmp ule double %a, %b
2782   %cmp1 = fcmp oeq double %a, %b
2783   %retval = or i1 %cmp, %cmp1
2784   ret i1 %retval
2787 define i1 @auto_gen_79_logical(double %a, double %b) {
2788 ; CHECK-LABEL: @auto_gen_79_logical(
2789 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2790 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2792   %cmp = fcmp ule double %a, %b
2793   %cmp1 = fcmp oeq double %a, %b
2794   %retval = select i1 %cmp, i1 true, i1 %cmp1
2795   ret i1 %retval
2798 define i1 @auto_gen_79_logical_fmf(double %a, double %b) {
2799 ; CHECK-LABEL: @auto_gen_79_logical_fmf(
2800 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
2801 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2803   %cmp = fcmp fast ule double %a, %b
2804   %cmp1 = fcmp fast oeq double %a, %b
2805   %retval = select i1 %cmp, i1 true, i1 %cmp1
2806   ret i1 %retval
2809 define i1 @auto_gen_80(double %a, double %b) {
2810 ; CHECK-LABEL: @auto_gen_80(
2811 ; CHECK-NEXT:    ret i1 true
2813   %cmp = fcmp ule double %a, %b
2814   %cmp1 = fcmp ogt double %a, %b
2815   %retval = or i1 %cmp, %cmp1
2816   ret i1 %retval
2819 define i1 @auto_gen_80_logical(double %a, double %b) {
2820 ; CHECK-LABEL: @auto_gen_80_logical(
2821 ; CHECK-NEXT:    ret i1 true
2823   %cmp = fcmp ule double %a, %b
2824   %cmp1 = fcmp ogt double %a, %b
2825   %retval = select i1 %cmp, i1 true, i1 %cmp1
2826   ret i1 %retval
2829 define i1 @auto_gen_80_logical_fmf(double %a, double %b) {
2830 ; CHECK-LABEL: @auto_gen_80_logical_fmf(
2831 ; CHECK-NEXT:    ret i1 true
2833   %cmp = fcmp ule double %a, %b
2834   %cmp1 = fcmp fast ogt double %a, %b
2835   %retval = select i1 %cmp, i1 true, i1 %cmp1
2836   ret i1 %retval
2839 define i1 @auto_gen_81(double %a, double %b) {
2840 ; CHECK-LABEL: @auto_gen_81(
2841 ; CHECK-NEXT:    ret i1 true
2843   %cmp = fcmp ule double %a, %b
2844   %cmp1 = fcmp oge double %a, %b
2845   %retval = or i1 %cmp, %cmp1
2846   ret i1 %retval
2849 define i1 @auto_gen_81_logical(double %a, double %b) {
2850 ; CHECK-LABEL: @auto_gen_81_logical(
2851 ; CHECK-NEXT:    ret i1 true
2853   %cmp = fcmp ule double %a, %b
2854   %cmp1 = fcmp oge double %a, %b
2855   %retval = select i1 %cmp, i1 true, i1 %cmp1
2856   ret i1 %retval
2859 define i1 @auto_gen_81_logical_fmf(double %a, double %b) {
2860 ; CHECK-LABEL: @auto_gen_81_logical_fmf(
2861 ; CHECK-NEXT:    ret i1 true
2863   %cmp = fcmp fast ule double %a, %b
2864   %cmp1 = fcmp fast oge double %a, %b
2865   %retval = select i1 %cmp, i1 true, i1 %cmp1
2866   ret i1 %retval
2869 define i1 @auto_gen_82(double %a, double %b) {
2870 ; CHECK-LABEL: @auto_gen_82(
2871 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2872 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2874   %cmp = fcmp ule double %a, %b
2875   %cmp1 = fcmp olt double %a, %b
2876   %retval = or i1 %cmp, %cmp1
2877   ret i1 %retval
2880 define i1 @auto_gen_82_logical(double %a, double %b) {
2881 ; CHECK-LABEL: @auto_gen_82_logical(
2882 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2883 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2885   %cmp = fcmp ule double %a, %b
2886   %cmp1 = fcmp olt double %a, %b
2887   %retval = select i1 %cmp, i1 true, i1 %cmp1
2888   ret i1 %retval
2891 define i1 @auto_gen_82_logical_fmf(double %a, double %b) {
2892 ; CHECK-LABEL: @auto_gen_82_logical_fmf(
2893 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2894 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2896   %cmp = fcmp ule double %a, %b
2897   %cmp1 = fcmp fast olt double %a, %b
2898   %retval = select i1 %cmp, i1 true, i1 %cmp1
2899   ret i1 %retval
2902 define i1 @auto_gen_83(double %a, double %b) {
2903 ; CHECK-LABEL: @auto_gen_83(
2904 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2905 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2907   %cmp = fcmp ule double %a, %b
2908   %cmp1 = fcmp ole double %a, %b
2909   %retval = or i1 %cmp, %cmp1
2910   ret i1 %retval
2913 define i1 @auto_gen_83_logical(double %a, double %b) {
2914 ; CHECK-LABEL: @auto_gen_83_logical(
2915 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2916 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2918   %cmp = fcmp ule double %a, %b
2919   %cmp1 = fcmp ole double %a, %b
2920   %retval = select i1 %cmp, i1 true, i1 %cmp1
2921   ret i1 %retval
2924 define i1 @auto_gen_83_logical_fmf(double %a, double %b) {
2925 ; CHECK-LABEL: @auto_gen_83_logical_fmf(
2926 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
2927 ; CHECK-NEXT:    ret i1 [[RETVAL]]
2929   %cmp = fcmp fast ule double %a, %b
2930   %cmp1 = fcmp fast ole double %a, %b
2931   %retval = select i1 %cmp, i1 true, i1 %cmp1
2932   ret i1 %retval
2935 define i1 @auto_gen_84(double %a, double %b) {
2936 ; CHECK-LABEL: @auto_gen_84(
2937 ; CHECK-NEXT:    ret i1 true
2939   %cmp = fcmp ule double %a, %b
2940   %cmp1 = fcmp one double %a, %b
2941   %retval = or i1 %cmp, %cmp1
2942   ret i1 %retval
2945 define i1 @auto_gen_84_logical(double %a, double %b) {
2946 ; CHECK-LABEL: @auto_gen_84_logical(
2947 ; CHECK-NEXT:    ret i1 true
2949   %cmp = fcmp ule double %a, %b
2950   %cmp1 = fcmp one double %a, %b
2951   %retval = select i1 %cmp, i1 true, i1 %cmp1
2952   ret i1 %retval
2955 define i1 @auto_gen_84_logical_fmf(double %a, double %b) {
2956 ; CHECK-LABEL: @auto_gen_84_logical_fmf(
2957 ; CHECK-NEXT:    ret i1 true
2959   %cmp = fcmp ule double %a, %b
2960   %cmp1 = fcmp fast one double %a, %b
2961   %retval = select i1 %cmp, i1 true, i1 %cmp1
2962   ret i1 %retval
2965 define i1 @auto_gen_85(double %a, double %b) {
2966 ; CHECK-LABEL: @auto_gen_85(
2967 ; CHECK-NEXT:    ret i1 true
2969   %cmp = fcmp ule double %a, %b
2970   %cmp1 = fcmp ord double %a, %b
2971   %retval = or i1 %cmp, %cmp1
2972   ret i1 %retval
2975 define i1 @auto_gen_85_logical(double %a, double %b) {
2976 ; CHECK-LABEL: @auto_gen_85_logical(
2977 ; CHECK-NEXT:    ret i1 true
2979   %cmp = fcmp ule double %a, %b
2980   %cmp1 = fcmp ord double %a, %b
2981   %retval = select i1 %cmp, i1 true, i1 %cmp1
2982   ret i1 %retval
2985 define i1 @auto_gen_85_logical_fmf(double %a, double %b) {
2986 ; CHECK-LABEL: @auto_gen_85_logical_fmf(
2987 ; CHECK-NEXT:    ret i1 true
2989   %cmp = fcmp fast ule double %a, %b
2990   %cmp1 = fcmp fast ord double %a, %b
2991   %retval = select i1 %cmp, i1 true, i1 %cmp1
2992   ret i1 %retval
2995 define i1 @auto_gen_86(double %a, double %b) {
2996 ; CHECK-LABEL: @auto_gen_86(
2997 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
2998 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3000   %cmp = fcmp ule double %a, %b
3001   %cmp1 = fcmp ueq double %a, %b
3002   %retval = or i1 %cmp, %cmp1
3003   ret i1 %retval
3006 define i1 @auto_gen_86_logical(double %a, double %b) {
3007 ; CHECK-LABEL: @auto_gen_86_logical(
3008 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3009 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3011   %cmp = fcmp ule double %a, %b
3012   %cmp1 = fcmp ueq double %a, %b
3013   %retval = select i1 %cmp, i1 true, i1 %cmp1
3014   ret i1 %retval
3017 define i1 @auto_gen_86_logical_fmf(double %a, double %b) {
3018 ; CHECK-LABEL: @auto_gen_86_logical_fmf(
3019 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3020 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3022   %cmp = fcmp ule double %a, %b
3023   %cmp1 = fcmp fast ueq double %a, %b
3024   %retval = select i1 %cmp, i1 true, i1 %cmp1
3025   ret i1 %retval
3028 define i1 @auto_gen_87(double %a, double %b) {
3029 ; CHECK-LABEL: @auto_gen_87(
3030 ; CHECK-NEXT:    ret i1 true
3032   %cmp = fcmp ule double %a, %b
3033   %cmp1 = fcmp ugt double %a, %b
3034   %retval = or i1 %cmp, %cmp1
3035   ret i1 %retval
3038 define i1 @auto_gen_87_logical(double %a, double %b) {
3039 ; CHECK-LABEL: @auto_gen_87_logical(
3040 ; CHECK-NEXT:    ret i1 true
3042   %cmp = fcmp ule double %a, %b
3043   %cmp1 = fcmp ugt double %a, %b
3044   %retval = select i1 %cmp, i1 true, i1 %cmp1
3045   ret i1 %retval
3048 define i1 @auto_gen_87_logical_fmf(double %a, double %b) {
3049 ; CHECK-LABEL: @auto_gen_87_logical_fmf(
3050 ; CHECK-NEXT:    ret i1 true
3052   %cmp = fcmp fast ule double %a, %b
3053   %cmp1 = fcmp fast ugt double %a, %b
3054   %retval = select i1 %cmp, i1 true, i1 %cmp1
3055   ret i1 %retval
3058 define i1 @auto_gen_88(double %a, double %b) {
3059 ; CHECK-LABEL: @auto_gen_88(
3060 ; CHECK-NEXT:    ret i1 true
3062   %cmp = fcmp ule double %a, %b
3063   %cmp1 = fcmp uge double %a, %b
3064   %retval = or i1 %cmp, %cmp1
3065   ret i1 %retval
3068 define i1 @auto_gen_88_logical(double %a, double %b) {
3069 ; CHECK-LABEL: @auto_gen_88_logical(
3070 ; CHECK-NEXT:    ret i1 true
3072   %cmp = fcmp ule double %a, %b
3073   %cmp1 = fcmp uge double %a, %b
3074   %retval = select i1 %cmp, i1 true, i1 %cmp1
3075   ret i1 %retval
3078 define i1 @auto_gen_88_logical_fmf(double %a, double %b) {
3079 ; CHECK-LABEL: @auto_gen_88_logical_fmf(
3080 ; CHECK-NEXT:    ret i1 true
3082   %cmp = fcmp ule double %a, %b
3083   %cmp1 = fcmp fast uge double %a, %b
3084   %retval = select i1 %cmp, i1 true, i1 %cmp1
3085   ret i1 %retval
3088 define i1 @auto_gen_89(double %a, double %b) {
3089 ; CHECK-LABEL: @auto_gen_89(
3090 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3091 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3093   %cmp = fcmp ule double %a, %b
3094   %cmp1 = fcmp ult double %a, %b
3095   %retval = or i1 %cmp, %cmp1
3096   ret i1 %retval
3099 define i1 @auto_gen_89_logical(double %a, double %b) {
3100 ; CHECK-LABEL: @auto_gen_89_logical(
3101 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3102 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3104   %cmp = fcmp ule double %a, %b
3105   %cmp1 = fcmp ult double %a, %b
3106   %retval = select i1 %cmp, i1 true, i1 %cmp1
3107   ret i1 %retval
3110 define i1 @auto_gen_89_logical_fmf(double %a, double %b) {
3111 ; CHECK-LABEL: @auto_gen_89_logical_fmf(
3112 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
3113 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3115   %cmp = fcmp fast ule double %a, %b
3116   %cmp1 = fcmp fast ult double %a, %b
3117   %retval = select i1 %cmp, i1 true, i1 %cmp1
3118   ret i1 %retval
3121 define i1 @auto_gen_90(double %a, double %b) {
3122 ; CHECK-LABEL: @auto_gen_90(
3123 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3124 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3126   %cmp = fcmp ule double %a, %b
3127   %cmp1 = fcmp ule double %a, %b
3128   %retval = or i1 %cmp, %cmp1
3129   ret i1 %retval
3132 define i1 @auto_gen_90_logical(double %a, double %b) {
3133 ; CHECK-LABEL: @auto_gen_90_logical(
3134 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3135 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3137   %cmp = fcmp ule double %a, %b
3138   %cmp1 = fcmp ule double %a, %b
3139   %retval = select i1 %cmp, i1 true, i1 %cmp1
3140   ret i1 %retval
3143 define i1 @auto_gen_90_logical_fmf(double %a, double %b) {
3144 ; CHECK-LABEL: @auto_gen_90_logical_fmf(
3145 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3146 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3148   %cmp = fcmp ule double %a, %b
3149   %cmp1 = fcmp fast ule double %a, %b
3150   %retval = select i1 %cmp, i1 true, i1 %cmp1
3151   ret i1 %retval
3154 define i1 @auto_gen_91(double %a, double %b) {
3155 ; CHECK-LABEL: @auto_gen_91(
3156 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3157 ; CHECK-NEXT:    ret i1 [[CMP]]
3159   %cmp = fcmp une double %a, %b
3160   %cmp1 = fcmp false double %a, %b
3161   %retval = or i1 %cmp, %cmp1
3162   ret i1 %retval
3165 define i1 @auto_gen_91_logical(double %a, double %b) {
3166 ; CHECK-LABEL: @auto_gen_91_logical(
3167 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3168 ; CHECK-NEXT:    ret i1 [[CMP]]
3170   %cmp = fcmp une double %a, %b
3171   %cmp1 = fcmp false double %a, %b
3172   %retval = select i1 %cmp, i1 true, i1 %cmp1
3173   ret i1 %retval
3176 define i1 @auto_gen_91_logical_fmf(double %a, double %b) {
3177 ; CHECK-LABEL: @auto_gen_91_logical_fmf(
3178 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
3179 ; CHECK-NEXT:    ret i1 [[CMP]]
3181   %cmp = fcmp fast une double %a, %b
3182   %cmp1 = fcmp fast false double %a, %b
3183   %retval = select i1 %cmp, i1 true, i1 %cmp1
3184   ret i1 %retval
3187 define i1 @auto_gen_92(double %a, double %b) {
3188 ; CHECK-LABEL: @auto_gen_92(
3189 ; CHECK-NEXT:    ret i1 true
3191   %cmp = fcmp une double %a, %b
3192   %cmp1 = fcmp oeq double %a, %b
3193   %retval = or i1 %cmp, %cmp1
3194   ret i1 %retval
3197 define i1 @auto_gen_92_logical(double %a, double %b) {
3198 ; CHECK-LABEL: @auto_gen_92_logical(
3199 ; CHECK-NEXT:    ret i1 true
3201   %cmp = fcmp une double %a, %b
3202   %cmp1 = fcmp oeq double %a, %b
3203   %retval = select i1 %cmp, i1 true, i1 %cmp1
3204   ret i1 %retval
3207 define i1 @auto_gen_92_logical_fmf(double %a, double %b) {
3208 ; CHECK-LABEL: @auto_gen_92_logical_fmf(
3209 ; CHECK-NEXT:    ret i1 true
3211   %cmp = fcmp une double %a, %b
3212   %cmp1 = fcmp fast oeq double %a, %b
3213   %retval = select i1 %cmp, i1 true, i1 %cmp1
3214   ret i1 %retval
3217 define i1 @auto_gen_93(double %a, double %b) {
3218 ; CHECK-LABEL: @auto_gen_93(
3219 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3220 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3222   %cmp = fcmp une double %a, %b
3223   %cmp1 = fcmp ogt double %a, %b
3224   %retval = or i1 %cmp, %cmp1
3225   ret i1 %retval
3228 define i1 @auto_gen_93_logical(double %a, double %b) {
3229 ; CHECK-LABEL: @auto_gen_93_logical(
3230 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3231 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3233   %cmp = fcmp une double %a, %b
3234   %cmp1 = fcmp ogt double %a, %b
3235   %retval = select i1 %cmp, i1 true, i1 %cmp1
3236   ret i1 %retval
3239 define i1 @auto_gen_93_logical_fmf(double %a, double %b) {
3240 ; CHECK-LABEL: @auto_gen_93_logical_fmf(
3241 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
3242 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3244   %cmp = fcmp fast une double %a, %b
3245   %cmp1 = fcmp fast ogt double %a, %b
3246   %retval = select i1 %cmp, i1 true, i1 %cmp1
3247   ret i1 %retval
3250 define i1 @auto_gen_94(double %a, double %b) {
3251 ; CHECK-LABEL: @auto_gen_94(
3252 ; CHECK-NEXT:    ret i1 true
3254   %cmp = fcmp une double %a, %b
3255   %cmp1 = fcmp oge double %a, %b
3256   %retval = or i1 %cmp, %cmp1
3257   ret i1 %retval
3260 define i1 @auto_gen_94_logical(double %a, double %b) {
3261 ; CHECK-LABEL: @auto_gen_94_logical(
3262 ; CHECK-NEXT:    ret i1 true
3264   %cmp = fcmp une double %a, %b
3265   %cmp1 = fcmp oge double %a, %b
3266   %retval = select i1 %cmp, i1 true, i1 %cmp1
3267   ret i1 %retval
3270 define i1 @auto_gen_94_logical_fmf(double %a, double %b) {
3271 ; CHECK-LABEL: @auto_gen_94_logical_fmf(
3272 ; CHECK-NEXT:    ret i1 true
3274   %cmp = fcmp une double %a, %b
3275   %cmp1 = fcmp fast oge double %a, %b
3276   %retval = select i1 %cmp, i1 true, i1 %cmp1
3277   ret i1 %retval
3280 define i1 @auto_gen_95(double %a, double %b) {
3281 ; CHECK-LABEL: @auto_gen_95(
3282 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3283 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3285   %cmp = fcmp une double %a, %b
3286   %cmp1 = fcmp olt double %a, %b
3287   %retval = or i1 %cmp, %cmp1
3288   ret i1 %retval
3291 define i1 @auto_gen_95_logical(double %a, double %b) {
3292 ; CHECK-LABEL: @auto_gen_95_logical(
3293 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3294 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3296   %cmp = fcmp une double %a, %b
3297   %cmp1 = fcmp olt double %a, %b
3298   %retval = select i1 %cmp, i1 true, i1 %cmp1
3299   ret i1 %retval
3302 define i1 @auto_gen_95_logical_fmf(double %a, double %b) {
3303 ; CHECK-LABEL: @auto_gen_95_logical_fmf(
3304 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
3305 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3307   %cmp = fcmp fast une double %a, %b
3308   %cmp1 = fcmp fast olt double %a, %b
3309   %retval = select i1 %cmp, i1 true, i1 %cmp1
3310   ret i1 %retval
3313 define i1 @auto_gen_96(double %a, double %b) {
3314 ; CHECK-LABEL: @auto_gen_96(
3315 ; CHECK-NEXT:    ret i1 true
3317   %cmp = fcmp une double %a, %b
3318   %cmp1 = fcmp ole double %a, %b
3319   %retval = or i1 %cmp, %cmp1
3320   ret i1 %retval
3323 define i1 @auto_gen_96_logical(double %a, double %b) {
3324 ; CHECK-LABEL: @auto_gen_96_logical(
3325 ; CHECK-NEXT:    ret i1 true
3327   %cmp = fcmp une double %a, %b
3328   %cmp1 = fcmp ole double %a, %b
3329   %retval = select i1 %cmp, i1 true, i1 %cmp1
3330   ret i1 %retval
3333 define i1 @auto_gen_96_logical_fmf(double %a, double %b) {
3334 ; CHECK-LABEL: @auto_gen_96_logical_fmf(
3335 ; CHECK-NEXT:    ret i1 true
3337   %cmp = fcmp une double %a, %b
3338   %cmp1 = fcmp fast ole double %a, %b
3339   %retval = select i1 %cmp, i1 true, i1 %cmp1
3340   ret i1 %retval
3343 define i1 @auto_gen_97(double %a, double %b) {
3344 ; CHECK-LABEL: @auto_gen_97(
3345 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3346 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3348   %cmp = fcmp une double %a, %b
3349   %cmp1 = fcmp one double %a, %b
3350   %retval = or i1 %cmp, %cmp1
3351   ret i1 %retval
3354 define i1 @auto_gen_97_logical(double %a, double %b) {
3355 ; CHECK-LABEL: @auto_gen_97_logical(
3356 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3357 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3359   %cmp = fcmp une double %a, %b
3360   %cmp1 = fcmp one double %a, %b
3361   %retval = select i1 %cmp, i1 true, i1 %cmp1
3362   ret i1 %retval
3365 define i1 @auto_gen_97_logical_fmf(double %a, double %b) {
3366 ; CHECK-LABEL: @auto_gen_97_logical_fmf(
3367 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
3368 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3370   %cmp = fcmp fast une double %a, %b
3371   %cmp1 = fcmp fast one double %a, %b
3372   %retval = select i1 %cmp, i1 true, i1 %cmp1
3373   ret i1 %retval
3376 define i1 @auto_gen_98(double %a, double %b) {
3377 ; CHECK-LABEL: @auto_gen_98(
3378 ; CHECK-NEXT:    ret i1 true
3380   %cmp = fcmp une double %a, %b
3381   %cmp1 = fcmp ord double %a, %b
3382   %retval = or i1 %cmp, %cmp1
3383   ret i1 %retval
3386 define i1 @auto_gen_98_logical(double %a, double %b) {
3387 ; CHECK-LABEL: @auto_gen_98_logical(
3388 ; CHECK-NEXT:    ret i1 true
3390   %cmp = fcmp une double %a, %b
3391   %cmp1 = fcmp ord double %a, %b
3392   %retval = select i1 %cmp, i1 true, i1 %cmp1
3393   ret i1 %retval
3396 define i1 @auto_gen_98_logical_fmf(double %a, double %b) {
3397 ; CHECK-LABEL: @auto_gen_98_logical_fmf(
3398 ; CHECK-NEXT:    ret i1 true
3400   %cmp = fcmp une double %a, %b
3401   %cmp1 = fcmp fast ord double %a, %b
3402   %retval = select i1 %cmp, i1 true, i1 %cmp1
3403   ret i1 %retval
3406 define i1 @auto_gen_99(double %a, double %b) {
3407 ; CHECK-LABEL: @auto_gen_99(
3408 ; CHECK-NEXT:    ret i1 true
3410   %cmp = fcmp une double %a, %b
3411   %cmp1 = fcmp ueq double %a, %b
3412   %retval = or i1 %cmp, %cmp1
3413   ret i1 %retval
3416 define i1 @auto_gen_99_logical(double %a, double %b) {
3417 ; CHECK-LABEL: @auto_gen_99_logical(
3418 ; CHECK-NEXT:    ret i1 true
3420   %cmp = fcmp une double %a, %b
3421   %cmp1 = fcmp ueq double %a, %b
3422   %retval = select i1 %cmp, i1 true, i1 %cmp1
3423   ret i1 %retval
3426 define i1 @auto_gen_99_logical_fmf(double %a, double %b) {
3427 ; CHECK-LABEL: @auto_gen_99_logical_fmf(
3428 ; CHECK-NEXT:    ret i1 true
3430   %cmp = fcmp fast une double %a, %b
3431   %cmp1 = fcmp fast ueq double %a, %b
3432   %retval = select i1 %cmp, i1 true, i1 %cmp1
3433   ret i1 %retval
3436 define i1 @auto_gen_100(double %a, double %b) {
3437 ; CHECK-LABEL: @auto_gen_100(
3438 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3439 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3441   %cmp = fcmp une double %a, %b
3442   %cmp1 = fcmp ugt double %a, %b
3443   %retval = or i1 %cmp, %cmp1
3444   ret i1 %retval
3447 define i1 @auto_gen_100_logical(double %a, double %b) {
3448 ; CHECK-LABEL: @auto_gen_100_logical(
3449 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3450 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3452   %cmp = fcmp une double %a, %b
3453   %cmp1 = fcmp ugt double %a, %b
3454   %retval = select i1 %cmp, i1 true, i1 %cmp1
3455   ret i1 %retval
3458 define i1 @auto_gen_100_logical_fmf(double %a, double %b) {
3459 ; CHECK-LABEL: @auto_gen_100_logical_fmf(
3460 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3461 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3463   %cmp = fcmp une double %a, %b
3464   %cmp1 = fcmp fast ugt double %a, %b
3465   %retval = select i1 %cmp, i1 true, i1 %cmp1
3466   ret i1 %retval
3469 define i1 @auto_gen_101(double %a, double %b) {
3470 ; CHECK-LABEL: @auto_gen_101(
3471 ; CHECK-NEXT:    ret i1 true
3473   %cmp = fcmp une double %a, %b
3474   %cmp1 = fcmp uge double %a, %b
3475   %retval = or i1 %cmp, %cmp1
3476   ret i1 %retval
3479 define i1 @auto_gen_101_logical(double %a, double %b) {
3480 ; CHECK-LABEL: @auto_gen_101_logical(
3481 ; CHECK-NEXT:    ret i1 true
3483   %cmp = fcmp une double %a, %b
3484   %cmp1 = fcmp uge double %a, %b
3485   %retval = select i1 %cmp, i1 true, i1 %cmp1
3486   ret i1 %retval
3489 define i1 @auto_gen_101_logical_fmf(double %a, double %b) {
3490 ; CHECK-LABEL: @auto_gen_101_logical_fmf(
3491 ; CHECK-NEXT:    ret i1 true
3493   %cmp = fcmp fast une double %a, %b
3494   %cmp1 = fcmp fast uge double %a, %b
3495   %retval = select i1 %cmp, i1 true, i1 %cmp1
3496   ret i1 %retval
3499 define i1 @auto_gen_102(double %a, double %b) {
3500 ; CHECK-LABEL: @auto_gen_102(
3501 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3502 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3504   %cmp = fcmp une double %a, %b
3505   %cmp1 = fcmp ult double %a, %b
3506   %retval = or i1 %cmp, %cmp1
3507   ret i1 %retval
3510 define i1 @auto_gen_102_logical(double %a, double %b) {
3511 ; CHECK-LABEL: @auto_gen_102_logical(
3512 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3513 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3515   %cmp = fcmp une double %a, %b
3516   %cmp1 = fcmp ult double %a, %b
3517   %retval = select i1 %cmp, i1 true, i1 %cmp1
3518   ret i1 %retval
3521 define i1 @auto_gen_102_logical_fmf(double %a, double %b) {
3522 ; CHECK-LABEL: @auto_gen_102_logical_fmf(
3523 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3524 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3526   %cmp = fcmp une double %a, %b
3527   %cmp1 = fcmp fast ult double %a, %b
3528   %retval = select i1 %cmp, i1 true, i1 %cmp1
3529   ret i1 %retval
3532 define i1 @auto_gen_103(double %a, double %b) {
3533 ; CHECK-LABEL: @auto_gen_103(
3534 ; CHECK-NEXT:    ret i1 true
3536   %cmp = fcmp une double %a, %b
3537   %cmp1 = fcmp ule double %a, %b
3538   %retval = or i1 %cmp, %cmp1
3539   ret i1 %retval
3542 define i1 @auto_gen_103_logical(double %a, double %b) {
3543 ; CHECK-LABEL: @auto_gen_103_logical(
3544 ; CHECK-NEXT:    ret i1 true
3546   %cmp = fcmp une double %a, %b
3547   %cmp1 = fcmp ule double %a, %b
3548   %retval = select i1 %cmp, i1 true, i1 %cmp1
3549   ret i1 %retval
3552 define i1 @auto_gen_103_logical_fmf(double %a, double %b) {
3553 ; CHECK-LABEL: @auto_gen_103_logical_fmf(
3554 ; CHECK-NEXT:    ret i1 true
3556   %cmp = fcmp fast une double %a, %b
3557   %cmp1 = fcmp fast ule double %a, %b
3558   %retval = select i1 %cmp, i1 true, i1 %cmp1
3559   ret i1 %retval
3562 define i1 @auto_gen_104(double %a, double %b) {
3563 ; CHECK-LABEL: @auto_gen_104(
3564 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3565 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3567   %cmp = fcmp une double %a, %b
3568   %cmp1 = fcmp une double %a, %b
3569   %retval = or i1 %cmp, %cmp1
3570   ret i1 %retval
3573 define i1 @auto_gen_104_logical(double %a, double %b) {
3574 ; CHECK-LABEL: @auto_gen_104_logical(
3575 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3576 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3578   %cmp = fcmp une double %a, %b
3579   %cmp1 = fcmp une double %a, %b
3580   %retval = select i1 %cmp, i1 true, i1 %cmp1
3581   ret i1 %retval
3584 define i1 @auto_gen_104_logical_fmf(double %a, double %b) {
3585 ; CHECK-LABEL: @auto_gen_104_logical_fmf(
3586 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3587 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3589   %cmp = fcmp une double %a, %b
3590   %cmp1 = fcmp fast une double %a, %b
3591   %retval = select i1 %cmp, i1 true, i1 %cmp1
3592   ret i1 %retval
3595 define i1 @auto_gen_105(double %a, double %b) {
3596 ; CHECK-LABEL: @auto_gen_105(
3597 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3598 ; CHECK-NEXT:    ret i1 [[CMP]]
3600   %cmp = fcmp uno double %a, %b
3601   %cmp1 = fcmp false double %a, %b
3602   %retval = or i1 %cmp, %cmp1
3603   ret i1 %retval
3606 define i1 @auto_gen_105_logical(double %a, double %b) {
3607 ; CHECK-LABEL: @auto_gen_105_logical(
3608 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3609 ; CHECK-NEXT:    ret i1 [[CMP]]
3611   %cmp = fcmp uno double %a, %b
3612   %cmp1 = fcmp false double %a, %b
3613   %retval = select i1 %cmp, i1 true, i1 %cmp1
3614   ret i1 %retval
3617 define i1 @auto_gen_105_logical_fmf(double %a, double %b) {
3618 ; CHECK-LABEL: @auto_gen_105_logical_fmf(
3619 ; CHECK-NEXT:    ret i1 false
3621   %cmp = fcmp fast uno double %a, %b
3622   %cmp1 = fcmp fast false double %a, %b
3623   %retval = select i1 %cmp, i1 true, i1 %cmp1
3624   ret i1 %retval
3627 define i1 @auto_gen_106(double %a, double %b) {
3628 ; CHECK-LABEL: @auto_gen_106(
3629 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3630 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3632   %cmp = fcmp uno double %a, %b
3633   %cmp1 = fcmp oeq double %a, %b
3634   %retval = or i1 %cmp, %cmp1
3635   ret i1 %retval
3638 define i1 @auto_gen_106_logical(double %a, double %b) {
3639 ; CHECK-LABEL: @auto_gen_106_logical(
3640 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3641 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3643   %cmp = fcmp uno double %a, %b
3644   %cmp1 = fcmp oeq double %a, %b
3645   %retval = select i1 %cmp, i1 true, i1 %cmp1
3646   ret i1 %retval
3649 define i1 @auto_gen_106_logical_fmf(double %a, double %b) {
3650 ; CHECK-LABEL: @auto_gen_106_logical_fmf(
3651 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3652 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3654   %cmp = fcmp uno double %a, %b
3655   %cmp1 = fcmp fast oeq double %a, %b
3656   %retval = select i1 %cmp, i1 true, i1 %cmp1
3657   ret i1 %retval
3660 define i1 @auto_gen_107(double %a, double %b) {
3661 ; CHECK-LABEL: @auto_gen_107(
3662 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3663 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3665   %cmp = fcmp uno double %a, %b
3666   %cmp1 = fcmp ogt double %a, %b
3667   %retval = or i1 %cmp, %cmp1
3668   ret i1 %retval
3671 define i1 @auto_gen_107_logical(double %a, double %b) {
3672 ; CHECK-LABEL: @auto_gen_107_logical(
3673 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3674 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3676   %cmp = fcmp uno double %a, %b
3677   %cmp1 = fcmp ogt double %a, %b
3678   %retval = select i1 %cmp, i1 true, i1 %cmp1
3679   ret i1 %retval
3682 define i1 @auto_gen_107_logical_fmf(double %a, double %b) {
3683 ; CHECK-LABEL: @auto_gen_107_logical_fmf(
3684 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
3685 ; CHECK-NEXT:    ret i1 [[CMP1]]
3687   %cmp = fcmp fast uno double %a, %b
3688   %cmp1 = fcmp fast ogt double %a, %b
3689   %retval = select i1 %cmp, i1 true, i1 %cmp1
3690   ret i1 %retval
3693 define i1 @auto_gen_108(double %a, double %b) {
3694 ; CHECK-LABEL: @auto_gen_108(
3695 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
3696 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3698   %cmp = fcmp uno double %a, %b
3699   %cmp1 = fcmp oge double %a, %b
3700   %retval = or i1 %cmp, %cmp1
3701   ret i1 %retval
3704 define i1 @auto_gen_108_logical(double %a, double %b) {
3705 ; CHECK-LABEL: @auto_gen_108_logical(
3706 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
3707 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3709   %cmp = fcmp uno double %a, %b
3710   %cmp1 = fcmp oge double %a, %b
3711   %retval = select i1 %cmp, i1 true, i1 %cmp1
3712   ret i1 %retval
3715 define i1 @auto_gen_108_logical_fmf(double %a, double %b) {
3716 ; CHECK-LABEL: @auto_gen_108_logical_fmf(
3717 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
3718 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3720   %cmp = fcmp uno double %a, %b
3721   %cmp1 = fcmp fast oge double %a, %b
3722   %retval = select i1 %cmp, i1 true, i1 %cmp1
3723   ret i1 %retval
3726 define i1 @auto_gen_109(double %a, double %b) {
3727 ; CHECK-LABEL: @auto_gen_109(
3728 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3729 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3731   %cmp = fcmp uno double %a, %b
3732   %cmp1 = fcmp olt double %a, %b
3733   %retval = or i1 %cmp, %cmp1
3734   ret i1 %retval
3737 define i1 @auto_gen_109_logical(double %a, double %b) {
3738 ; CHECK-LABEL: @auto_gen_109_logical(
3739 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3740 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3742   %cmp = fcmp uno double %a, %b
3743   %cmp1 = fcmp olt double %a, %b
3744   %retval = select i1 %cmp, i1 true, i1 %cmp1
3745   ret i1 %retval
3748 define i1 @auto_gen_109_logical_fmf(double %a, double %b) {
3749 ; CHECK-LABEL: @auto_gen_109_logical_fmf(
3750 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]
3751 ; CHECK-NEXT:    ret i1 [[CMP1]]
3753   %cmp = fcmp fast uno double %a, %b
3754   %cmp1 = fcmp fast olt double %a, %b
3755   %retval = select i1 %cmp, i1 true, i1 %cmp1
3756   ret i1 %retval
3759 define i1 @auto_gen_110(double %a, double %b) {
3760 ; CHECK-LABEL: @auto_gen_110(
3761 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3762 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3764   %cmp = fcmp uno double %a, %b
3765   %cmp1 = fcmp ole double %a, %b
3766   %retval = or i1 %cmp, %cmp1
3767   ret i1 %retval
3770 define i1 @auto_gen_110_logical(double %a, double %b) {
3771 ; CHECK-LABEL: @auto_gen_110_logical(
3772 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3773 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3775   %cmp = fcmp uno double %a, %b
3776   %cmp1 = fcmp ole double %a, %b
3777   %retval = select i1 %cmp, i1 true, i1 %cmp1
3778   ret i1 %retval
3781 define i1 @auto_gen_110_logical_fmf(double %a, double %b) {
3782 ; CHECK-LABEL: @auto_gen_110_logical_fmf(
3783 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3784 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3786   %cmp = fcmp uno double %a, %b
3787   %cmp1 = fcmp fast ole double %a, %b
3788   %retval = select i1 %cmp, i1 true, i1 %cmp1
3789   ret i1 %retval
3792 define i1 @auto_gen_111(double %a, double %b) {
3793 ; CHECK-LABEL: @auto_gen_111(
3794 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3795 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3797   %cmp = fcmp uno double %a, %b
3798   %cmp1 = fcmp one double %a, %b
3799   %retval = or i1 %cmp, %cmp1
3800   ret i1 %retval
3803 define i1 @auto_gen_111_logical(double %a, double %b) {
3804 ; CHECK-LABEL: @auto_gen_111_logical(
3805 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3806 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3808   %cmp = fcmp uno double %a, %b
3809   %cmp1 = fcmp one double %a, %b
3810   %retval = select i1 %cmp, i1 true, i1 %cmp1
3811   ret i1 %retval
3814 define i1 @auto_gen_111_logical_fmf(double %a, double %b) {
3815 ; CHECK-LABEL: @auto_gen_111_logical_fmf(
3816 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
3817 ; CHECK-NEXT:    ret i1 [[CMP1]]
3819   %cmp = fcmp fast uno double %a, %b
3820   %cmp1 = fcmp fast one double %a, %b
3821   %retval = select i1 %cmp, i1 true, i1 %cmp1
3822   ret i1 %retval
3825 define i1 @auto_gen_112(double %a, double %b) {
3826 ; CHECK-LABEL: @auto_gen_112(
3827 ; CHECK-NEXT:    ret i1 true
3829   %cmp = fcmp uno double %a, %b
3830   %cmp1 = fcmp ord double %a, %b
3831   %retval = or i1 %cmp, %cmp1
3832   ret i1 %retval
3835 define i1 @auto_gen_112_logical(double %a, double %b) {
3836 ; CHECK-LABEL: @auto_gen_112_logical(
3837 ; CHECK-NEXT:    ret i1 true
3839   %cmp = fcmp uno double %a, %b
3840   %cmp1 = fcmp ord double %a, %b
3841   %retval = select i1 %cmp, i1 true, i1 %cmp1
3842   ret i1 %retval
3845 define i1 @auto_gen_112_logical_fmf(double %a, double %b) {
3846 ; CHECK-LABEL: @auto_gen_112_logical_fmf(
3847 ; CHECK-NEXT:    ret i1 true
3849   %cmp = fcmp uno double %a, %b
3850   %cmp1 = fcmp fast ord double %a, %b
3851   %retval = select i1 %cmp, i1 true, i1 %cmp1
3852   ret i1 %retval
3855 define i1 @auto_gen_113(double %a, double %b) {
3856 ; CHECK-LABEL: @auto_gen_113(
3857 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3858 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3860   %cmp = fcmp uno double %a, %b
3861   %cmp1 = fcmp ueq double %a, %b
3862   %retval = or i1 %cmp, %cmp1
3863   ret i1 %retval
3866 define i1 @auto_gen_113_logical(double %a, double %b) {
3867 ; CHECK-LABEL: @auto_gen_113_logical(
3868 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3869 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3871   %cmp = fcmp uno double %a, %b
3872   %cmp1 = fcmp ueq double %a, %b
3873   %retval = select i1 %cmp, i1 true, i1 %cmp1
3874   ret i1 %retval
3877 define i1 @auto_gen_113_logical_fmf(double %a, double %b) {
3878 ; CHECK-LABEL: @auto_gen_113_logical_fmf(
3879 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]
3880 ; CHECK-NEXT:    ret i1 [[CMP1]]
3882   %cmp = fcmp fast uno double %a, %b
3883   %cmp1 = fcmp fast ueq double %a, %b
3884   %retval = select i1 %cmp, i1 true, i1 %cmp1
3885   ret i1 %retval
3888 define i1 @auto_gen_114(double %a, double %b) {
3889 ; CHECK-LABEL: @auto_gen_114(
3890 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3891 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3893   %cmp = fcmp uno double %a, %b
3894   %cmp1 = fcmp ugt double %a, %b
3895   %retval = or i1 %cmp, %cmp1
3896   ret i1 %retval
3899 define i1 @auto_gen_114_logical(double %a, double %b) {
3900 ; CHECK-LABEL: @auto_gen_114_logical(
3901 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3902 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3904   %cmp = fcmp uno double %a, %b
3905   %cmp1 = fcmp ugt double %a, %b
3906   %retval = select i1 %cmp, i1 true, i1 %cmp1
3907   ret i1 %retval
3910 define i1 @auto_gen_114_logical_fmf(double %a, double %b) {
3911 ; CHECK-LABEL: @auto_gen_114_logical_fmf(
3912 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3913 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3915   %cmp = fcmp uno double %a, %b
3916   %cmp1 = fcmp fast ugt double %a, %b
3917   %retval = select i1 %cmp, i1 true, i1 %cmp1
3918   ret i1 %retval
3921 define i1 @auto_gen_115(double %a, double %b) {
3922 ; CHECK-LABEL: @auto_gen_115(
3923 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
3924 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3926   %cmp = fcmp uno double %a, %b
3927   %cmp1 = fcmp uge double %a, %b
3928   %retval = or i1 %cmp, %cmp1
3929   ret i1 %retval
3932 define i1 @auto_gen_115_logical(double %a, double %b) {
3933 ; CHECK-LABEL: @auto_gen_115_logical(
3934 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
3935 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3937   %cmp = fcmp uno double %a, %b
3938   %cmp1 = fcmp uge double %a, %b
3939   %retval = select i1 %cmp, i1 true, i1 %cmp1
3940   ret i1 %retval
3943 define i1 @auto_gen_115_logical_fmf(double %a, double %b) {
3944 ; CHECK-LABEL: @auto_gen_115_logical_fmf(
3945 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
3946 ; CHECK-NEXT:    ret i1 [[CMP1]]
3948   %cmp = fcmp fast uno double %a, %b
3949   %cmp1 = fcmp fast uge double %a, %b
3950   %retval = select i1 %cmp, i1 true, i1 %cmp1
3951   ret i1 %retval
3954 define i1 @auto_gen_116(double %a, double %b) {
3955 ; CHECK-LABEL: @auto_gen_116(
3956 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3957 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3959   %cmp = fcmp uno double %a, %b
3960   %cmp1 = fcmp ult double %a, %b
3961   %retval = or i1 %cmp, %cmp1
3962   ret i1 %retval
3965 define i1 @auto_gen_116_logical(double %a, double %b) {
3966 ; CHECK-LABEL: @auto_gen_116_logical(
3967 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3968 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3970   %cmp = fcmp uno double %a, %b
3971   %cmp1 = fcmp ult double %a, %b
3972   %retval = select i1 %cmp, i1 true, i1 %cmp1
3973   ret i1 %retval
3976 define i1 @auto_gen_116_logical_fmf(double %a, double %b) {
3977 ; CHECK-LABEL: @auto_gen_116_logical_fmf(
3978 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3979 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3981   %cmp = fcmp uno double %a, %b
3982   %cmp1 = fcmp fast ult double %a, %b
3983   %retval = select i1 %cmp, i1 true, i1 %cmp1
3984   ret i1 %retval
3987 define i1 @auto_gen_117(double %a, double %b) {
3988 ; CHECK-LABEL: @auto_gen_117(
3989 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3990 ; CHECK-NEXT:    ret i1 [[RETVAL]]
3992   %cmp = fcmp uno double %a, %b
3993   %cmp1 = fcmp ule double %a, %b
3994   %retval = or i1 %cmp, %cmp1
3995   ret i1 %retval
3998 define i1 @auto_gen_117_logical(double %a, double %b) {
3999 ; CHECK-LABEL: @auto_gen_117_logical(
4000 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
4001 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4003   %cmp = fcmp uno double %a, %b
4004   %cmp1 = fcmp ule double %a, %b
4005   %retval = select i1 %cmp, i1 true, i1 %cmp1
4006   ret i1 %retval
4009 define i1 @auto_gen_117_logical_fmf(double %a, double %b) {
4010 ; CHECK-LABEL: @auto_gen_117_logical_fmf(
4011 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
4012 ; CHECK-NEXT:    ret i1 [[CMP1]]
4014   %cmp = fcmp fast uno double %a, %b
4015   %cmp1 = fcmp fast ule double %a, %b
4016   %retval = select i1 %cmp, i1 true, i1 %cmp1
4017   ret i1 %retval
4020 define i1 @auto_gen_118(double %a, double %b) {
4021 ; CHECK-LABEL: @auto_gen_118(
4022 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
4023 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4025   %cmp = fcmp uno double %a, %b
4026   %cmp1 = fcmp une double %a, %b
4027   %retval = or i1 %cmp, %cmp1
4028   ret i1 %retval
4031 define i1 @auto_gen_118_logical(double %a, double %b) {
4032 ; CHECK-LABEL: @auto_gen_118_logical(
4033 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
4034 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4036   %cmp = fcmp uno double %a, %b
4037   %cmp1 = fcmp une double %a, %b
4038   %retval = select i1 %cmp, i1 true, i1 %cmp1
4039   ret i1 %retval
4042 define i1 @auto_gen_118_logical_fmf(double %a, double %b) {
4043 ; CHECK-LABEL: @auto_gen_118_logical_fmf(
4044 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
4045 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4047   %cmp = fcmp uno double %a, %b
4048   %cmp1 = fcmp fast une double %a, %b
4049   %retval = select i1 %cmp, i1 true, i1 %cmp1
4050   ret i1 %retval
4053 define i1 @auto_gen_119(double %a, double %b) {
4054 ; CHECK-LABEL: @auto_gen_119(
4055 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4056 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4058   %cmp = fcmp uno double %a, %b
4059   %cmp1 = fcmp uno double %a, %b
4060   %retval = or i1 %cmp, %cmp1
4061   ret i1 %retval
4064 define i1 @auto_gen_119_logical(double %a, double %b) {
4065 ; CHECK-LABEL: @auto_gen_119_logical(
4066 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4067 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4069   %cmp = fcmp uno double %a, %b
4070   %cmp1 = fcmp uno double %a, %b
4071   %retval = select i1 %cmp, i1 true, i1 %cmp1
4072   ret i1 %retval
4075 define i1 @auto_gen_119_logical_fmf(double %a, double %b) {
4076 ; CHECK-LABEL: @auto_gen_119_logical_fmf(
4077 ; CHECK-NEXT:    ret i1 false
4079   %cmp = fcmp fast uno double %a, %b
4080   %cmp1 = fcmp fast uno double %a, %b
4081   %retval = select i1 %cmp, i1 true, i1 %cmp1
4082   ret i1 %retval
4085 define i1 @auto_gen_120(double %a, double %b) {
4086 ; CHECK-LABEL: @auto_gen_120(
4087 ; CHECK-NEXT:    ret i1 true
4089   %cmp = fcmp true double %a, %b
4090   %cmp1 = fcmp false double %a, %b
4091   %retval = or i1 %cmp, %cmp1
4092   ret i1 %retval
4095 define i1 @auto_gen_120_logical(double %a, double %b) {
4096 ; CHECK-LABEL: @auto_gen_120_logical(
4097 ; CHECK-NEXT:    ret i1 true
4099   %cmp = fcmp true double %a, %b
4100   %cmp1 = fcmp false double %a, %b
4101   %retval = select i1 %cmp, i1 true, i1 %cmp1
4102   ret i1 %retval
4105 define i1 @auto_gen_120_logical_fmf(double %a, double %b) {
4106 ; CHECK-LABEL: @auto_gen_120_logical_fmf(
4107 ; CHECK-NEXT:    ret i1 true
4109   %cmp = fcmp true double %a, %b
4110   %cmp1 = fcmp fast false double %a, %b
4111   %retval = select i1 %cmp, i1 true, i1 %cmp1
4112   ret i1 %retval
4115 define i1 @auto_gen_121(double %a, double %b) {
4116 ; CHECK-LABEL: @auto_gen_121(
4117 ; CHECK-NEXT:    ret i1 true
4119   %cmp = fcmp true double %a, %b
4120   %cmp1 = fcmp oeq double %a, %b
4121   %retval = or i1 %cmp, %cmp1
4122   ret i1 %retval
4125 define i1 @auto_gen_121_logical(double %a, double %b) {
4126 ; CHECK-LABEL: @auto_gen_121_logical(
4127 ; CHECK-NEXT:    ret i1 true
4129   %cmp = fcmp true double %a, %b
4130   %cmp1 = fcmp oeq double %a, %b
4131   %retval = select i1 %cmp, i1 true, i1 %cmp1
4132   ret i1 %retval
4135 define i1 @auto_gen_121_logical_fmf(double %a, double %b) {
4136 ; CHECK-LABEL: @auto_gen_121_logical_fmf(
4137 ; CHECK-NEXT:    ret i1 true
4139   %cmp = fcmp fast true double %a, %b
4140   %cmp1 = fcmp fast oeq double %a, %b
4141   %retval = select i1 %cmp, i1 true, i1 %cmp1
4142   ret i1 %retval
4145 define i1 @auto_gen_122(double %a, double %b) {
4146 ; CHECK-LABEL: @auto_gen_122(
4147 ; CHECK-NEXT:    ret i1 true
4149   %cmp = fcmp true double %a, %b
4150   %cmp1 = fcmp ogt double %a, %b
4151   %retval = or i1 %cmp, %cmp1
4152   ret i1 %retval
4155 define i1 @auto_gen_122_logical(double %a, double %b) {
4156 ; CHECK-LABEL: @auto_gen_122_logical(
4157 ; CHECK-NEXT:    ret i1 true
4159   %cmp = fcmp true double %a, %b
4160   %cmp1 = fcmp ogt double %a, %b
4161   %retval = select i1 %cmp, i1 true, i1 %cmp1
4162   ret i1 %retval
4165 define i1 @auto_gen_122_logical_fmf(double %a, double %b) {
4166 ; CHECK-LABEL: @auto_gen_122_logical_fmf(
4167 ; CHECK-NEXT:    ret i1 true
4169   %cmp = fcmp true double %a, %b
4170   %cmp1 = fcmp fast ogt double %a, %b
4171   %retval = select i1 %cmp, i1 true, i1 %cmp1
4172   ret i1 %retval
4175 define i1 @auto_gen_123(double %a, double %b) {
4176 ; CHECK-LABEL: @auto_gen_123(
4177 ; CHECK-NEXT:    ret i1 true
4179   %cmp = fcmp true double %a, %b
4180   %cmp1 = fcmp oge double %a, %b
4181   %retval = or i1 %cmp, %cmp1
4182   ret i1 %retval
4185 define i1 @auto_gen_123_logical(double %a, double %b) {
4186 ; CHECK-LABEL: @auto_gen_123_logical(
4187 ; CHECK-NEXT:    ret i1 true
4189   %cmp = fcmp true double %a, %b
4190   %cmp1 = fcmp oge double %a, %b
4191   %retval = select i1 %cmp, i1 true, i1 %cmp1
4192   ret i1 %retval
4195 define i1 @auto_gen_123_logical_fmf(double %a, double %b) {
4196 ; CHECK-LABEL: @auto_gen_123_logical_fmf(
4197 ; CHECK-NEXT:    ret i1 true
4199   %cmp = fcmp fast true double %a, %b
4200   %cmp1 = fcmp fast oge double %a, %b
4201   %retval = select i1 %cmp, i1 true, i1 %cmp1
4202   ret i1 %retval
4205 define i1 @auto_gen_124(double %a, double %b) {
4206 ; CHECK-LABEL: @auto_gen_124(
4207 ; CHECK-NEXT:    ret i1 true
4209   %cmp = fcmp true double %a, %b
4210   %cmp1 = fcmp olt double %a, %b
4211   %retval = or i1 %cmp, %cmp1
4212   ret i1 %retval
4215 define i1 @auto_gen_124_logical(double %a, double %b) {
4216 ; CHECK-LABEL: @auto_gen_124_logical(
4217 ; CHECK-NEXT:    ret i1 true
4219   %cmp = fcmp true double %a, %b
4220   %cmp1 = fcmp olt double %a, %b
4221   %retval = select i1 %cmp, i1 true, i1 %cmp1
4222   ret i1 %retval
4225 define i1 @auto_gen_124_logical_fmf(double %a, double %b) {
4226 ; CHECK-LABEL: @auto_gen_124_logical_fmf(
4227 ; CHECK-NEXT:    ret i1 true
4229   %cmp = fcmp true double %a, %b
4230   %cmp1 = fcmp fast olt double %a, %b
4231   %retval = select i1 %cmp, i1 true, i1 %cmp1
4232   ret i1 %retval
4235 define i1 @auto_gen_125(double %a, double %b) {
4236 ; CHECK-LABEL: @auto_gen_125(
4237 ; CHECK-NEXT:    ret i1 true
4239   %cmp = fcmp true double %a, %b
4240   %cmp1 = fcmp ole double %a, %b
4241   %retval = or i1 %cmp, %cmp1
4242   ret i1 %retval
4245 define i1 @auto_gen_125_logical(double %a, double %b) {
4246 ; CHECK-LABEL: @auto_gen_125_logical(
4247 ; CHECK-NEXT:    ret i1 true
4249   %cmp = fcmp true double %a, %b
4250   %cmp1 = fcmp ole double %a, %b
4251   %retval = select i1 %cmp, i1 true, i1 %cmp1
4252   ret i1 %retval
4255 define i1 @auto_gen_125_logical_fmf(double %a, double %b) {
4256 ; CHECK-LABEL: @auto_gen_125_logical_fmf(
4257 ; CHECK-NEXT:    ret i1 true
4259   %cmp = fcmp fast true double %a, %b
4260   %cmp1 = fcmp fast ole double %a, %b
4261   %retval = select i1 %cmp, i1 true, i1 %cmp1
4262   ret i1 %retval
4265 define i1 @auto_gen_126(double %a, double %b) {
4266 ; CHECK-LABEL: @auto_gen_126(
4267 ; CHECK-NEXT:    ret i1 true
4269   %cmp = fcmp true double %a, %b
4270   %cmp1 = fcmp one double %a, %b
4271   %retval = or i1 %cmp, %cmp1
4272   ret i1 %retval
4275 define i1 @auto_gen_126_logical(double %a, double %b) {
4276 ; CHECK-LABEL: @auto_gen_126_logical(
4277 ; CHECK-NEXT:    ret i1 true
4279   %cmp = fcmp true double %a, %b
4280   %cmp1 = fcmp one double %a, %b
4281   %retval = select i1 %cmp, i1 true, i1 %cmp1
4282   ret i1 %retval
4285 define i1 @auto_gen_126_logical_fmf(double %a, double %b) {
4286 ; CHECK-LABEL: @auto_gen_126_logical_fmf(
4287 ; CHECK-NEXT:    ret i1 true
4289   %cmp = fcmp true double %a, %b
4290   %cmp1 = fcmp fast one double %a, %b
4291   %retval = select i1 %cmp, i1 true, i1 %cmp1
4292   ret i1 %retval
4295 define i1 @auto_gen_127(double %a, double %b) {
4296 ; CHECK-LABEL: @auto_gen_127(
4297 ; CHECK-NEXT:    ret i1 true
4299   %cmp = fcmp true double %a, %b
4300   %cmp1 = fcmp ord double %a, %b
4301   %retval = or i1 %cmp, %cmp1
4302   ret i1 %retval
4305 define i1 @auto_gen_127_logical(double %a, double %b) {
4306 ; CHECK-LABEL: @auto_gen_127_logical(
4307 ; CHECK-NEXT:    ret i1 true
4309   %cmp = fcmp true double %a, %b
4310   %cmp1 = fcmp ord double %a, %b
4311   %retval = select i1 %cmp, i1 true, i1 %cmp1
4312   ret i1 %retval
4315 define i1 @auto_gen_127_logical_fmf(double %a, double %b) {
4316 ; CHECK-LABEL: @auto_gen_127_logical_fmf(
4317 ; CHECK-NEXT:    ret i1 true
4319   %cmp = fcmp fast true double %a, %b
4320   %cmp1 = fcmp fast ord double %a, %b
4321   %retval = select i1 %cmp, i1 true, i1 %cmp1
4322   ret i1 %retval
4325 define i1 @auto_gen_128(double %a, double %b) {
4326 ; CHECK-LABEL: @auto_gen_128(
4327 ; CHECK-NEXT:    ret i1 true
4329   %cmp = fcmp true double %a, %b
4330   %cmp1 = fcmp ueq double %a, %b
4331   %retval = or i1 %cmp, %cmp1
4332   ret i1 %retval
4335 define i1 @auto_gen_128_logical(double %a, double %b) {
4336 ; CHECK-LABEL: @auto_gen_128_logical(
4337 ; CHECK-NEXT:    ret i1 true
4339   %cmp = fcmp true double %a, %b
4340   %cmp1 = fcmp ueq double %a, %b
4341   %retval = select i1 %cmp, i1 true, i1 %cmp1
4342   ret i1 %retval
4345 define i1 @auto_gen_128_logical_fmf(double %a, double %b) {
4346 ; CHECK-LABEL: @auto_gen_128_logical_fmf(
4347 ; CHECK-NEXT:    ret i1 true
4349   %cmp = fcmp true double %a, %b
4350   %cmp1 = fcmp fast ueq double %a, %b
4351   %retval = select i1 %cmp, i1 true, i1 %cmp1
4352   ret i1 %retval
4355 define i1 @auto_gen_129(double %a, double %b) {
4356 ; CHECK-LABEL: @auto_gen_129(
4357 ; CHECK-NEXT:    ret i1 true
4359   %cmp = fcmp true double %a, %b
4360   %cmp1 = fcmp ugt double %a, %b
4361   %retval = or i1 %cmp, %cmp1
4362   ret i1 %retval
4365 define i1 @auto_gen_129_logical(double %a, double %b) {
4366 ; CHECK-LABEL: @auto_gen_129_logical(
4367 ; CHECK-NEXT:    ret i1 true
4369   %cmp = fcmp true double %a, %b
4370   %cmp1 = fcmp ugt double %a, %b
4371   %retval = select i1 %cmp, i1 true, i1 %cmp1
4372   ret i1 %retval
4375 define i1 @auto_gen_129_logical_fmf(double %a, double %b) {
4376 ; CHECK-LABEL: @auto_gen_129_logical_fmf(
4377 ; CHECK-NEXT:    ret i1 true
4379   %cmp = fcmp fast true double %a, %b
4380   %cmp1 = fcmp fast ugt double %a, %b
4381   %retval = select i1 %cmp, i1 true, i1 %cmp1
4382   ret i1 %retval
4385 define i1 @auto_gen_130(double %a, double %b) {
4386 ; CHECK-LABEL: @auto_gen_130(
4387 ; CHECK-NEXT:    ret i1 true
4389   %cmp = fcmp true double %a, %b
4390   %cmp1 = fcmp uge double %a, %b
4391   %retval = or i1 %cmp, %cmp1
4392   ret i1 %retval
4395 define i1 @auto_gen_130_logical(double %a, double %b) {
4396 ; CHECK-LABEL: @auto_gen_130_logical(
4397 ; CHECK-NEXT:    ret i1 true
4399   %cmp = fcmp true double %a, %b
4400   %cmp1 = fcmp uge double %a, %b
4401   %retval = select i1 %cmp, i1 true, i1 %cmp1
4402   ret i1 %retval
4405 define i1 @auto_gen_130_logical_fmf(double %a, double %b) {
4406 ; CHECK-LABEL: @auto_gen_130_logical_fmf(
4407 ; CHECK-NEXT:    ret i1 true
4409   %cmp = fcmp true double %a, %b
4410   %cmp1 = fcmp fast uge double %a, %b
4411   %retval = select i1 %cmp, i1 true, i1 %cmp1
4412   ret i1 %retval
4415 define i1 @auto_gen_131(double %a, double %b) {
4416 ; CHECK-LABEL: @auto_gen_131(
4417 ; CHECK-NEXT:    ret i1 true
4419   %cmp = fcmp true double %a, %b
4420   %cmp1 = fcmp ult double %a, %b
4421   %retval = or i1 %cmp, %cmp1
4422   ret i1 %retval
4425 define i1 @auto_gen_131_logical(double %a, double %b) {
4426 ; CHECK-LABEL: @auto_gen_131_logical(
4427 ; CHECK-NEXT:    ret i1 true
4429   %cmp = fcmp true double %a, %b
4430   %cmp1 = fcmp ult double %a, %b
4431   %retval = select i1 %cmp, i1 true, i1 %cmp1
4432   ret i1 %retval
4435 define i1 @auto_gen_131_logical_fmf(double %a, double %b) {
4436 ; CHECK-LABEL: @auto_gen_131_logical_fmf(
4437 ; CHECK-NEXT:    ret i1 true
4439   %cmp = fcmp fast true double %a, %b
4440   %cmp1 = fcmp fast ult double %a, %b
4441   %retval = select i1 %cmp, i1 true, i1 %cmp1
4442   ret i1 %retval
4445 define i1 @auto_gen_132(double %a, double %b) {
4446 ; CHECK-LABEL: @auto_gen_132(
4447 ; CHECK-NEXT:    ret i1 true
4449   %cmp = fcmp true double %a, %b
4450   %cmp1 = fcmp ule double %a, %b
4451   %retval = or i1 %cmp, %cmp1
4452   ret i1 %retval
4455 define i1 @auto_gen_132_logical(double %a, double %b) {
4456 ; CHECK-LABEL: @auto_gen_132_logical(
4457 ; CHECK-NEXT:    ret i1 true
4459   %cmp = fcmp true double %a, %b
4460   %cmp1 = fcmp ule double %a, %b
4461   %retval = select i1 %cmp, i1 true, i1 %cmp1
4462   ret i1 %retval
4465 define i1 @auto_gen_132_logical_fmf(double %a, double %b) {
4466 ; CHECK-LABEL: @auto_gen_132_logical_fmf(
4467 ; CHECK-NEXT:    ret i1 true
4469   %cmp = fcmp true double %a, %b
4470   %cmp1 = fcmp fast ule double %a, %b
4471   %retval = select i1 %cmp, i1 true, i1 %cmp1
4472   ret i1 %retval
4475 define i1 @auto_gen_133(double %a, double %b) {
4476 ; CHECK-LABEL: @auto_gen_133(
4477 ; CHECK-NEXT:    ret i1 true
4479   %cmp = fcmp true double %a, %b
4480   %cmp1 = fcmp une double %a, %b
4481   %retval = or i1 %cmp, %cmp1
4482   ret i1 %retval
4485 define i1 @auto_gen_133_logical(double %a, double %b) {
4486 ; CHECK-LABEL: @auto_gen_133_logical(
4487 ; CHECK-NEXT:    ret i1 true
4489   %cmp = fcmp true double %a, %b
4490   %cmp1 = fcmp une double %a, %b
4491   %retval = select i1 %cmp, i1 true, i1 %cmp1
4492   ret i1 %retval
4495 define i1 @auto_gen_133_logical_fmf(double %a, double %b) {
4496 ; CHECK-LABEL: @auto_gen_133_logical_fmf(
4497 ; CHECK-NEXT:    ret i1 true
4499   %cmp = fcmp fast true double %a, %b
4500   %cmp1 = fcmp fast une double %a, %b
4501   %retval = select i1 %cmp, i1 true, i1 %cmp1
4502   ret i1 %retval
4505 define i1 @auto_gen_134(double %a, double %b) {
4506 ; CHECK-LABEL: @auto_gen_134(
4507 ; CHECK-NEXT:    ret i1 true
4509   %cmp = fcmp true double %a, %b
4510   %cmp1 = fcmp uno double %a, %b
4511   %retval = or i1 %cmp, %cmp1
4512   ret i1 %retval
4515 define i1 @auto_gen_134_logical(double %a, double %b) {
4516 ; CHECK-LABEL: @auto_gen_134_logical(
4517 ; CHECK-NEXT:    ret i1 true
4519   %cmp = fcmp true double %a, %b
4520   %cmp1 = fcmp uno double %a, %b
4521   %retval = select i1 %cmp, i1 true, i1 %cmp1
4522   ret i1 %retval
4525 define i1 @auto_gen_134_logical_fmf(double %a, double %b) {
4526 ; CHECK-LABEL: @auto_gen_134_logical_fmf(
4527 ; CHECK-NEXT:    ret i1 true
4529   %cmp = fcmp true double %a, %b
4530   %cmp1 = fcmp fast uno double %a, %b
4531   %retval = select i1 %cmp, i1 true, i1 %cmp1
4532   ret i1 %retval
4535 define i1 @auto_gen_135(double %a, double %b) {
4536 ; CHECK-LABEL: @auto_gen_135(
4537 ; CHECK-NEXT:    ret i1 true
4539   %cmp = fcmp true double %a, %b
4540   %cmp1 = fcmp true double %a, %b
4541   %retval = or i1 %cmp, %cmp1
4542   ret i1 %retval
4545 define i1 @auto_gen_135_logical(double %a, double %b) {
4546 ; CHECK-LABEL: @auto_gen_135_logical(
4547 ; CHECK-NEXT:    ret i1 true
4549   %cmp = fcmp true double %a, %b
4550   %cmp1 = fcmp true double %a, %b
4551   %retval = select i1 %cmp, i1 true, i1 %cmp1
4552   ret i1 %retval
4555 define i1 @auto_gen_135_logical_fmf(double %a, double %b) {
4556 ; CHECK-LABEL: @auto_gen_135_logical_fmf(
4557 ; CHECK-NEXT:    ret i1 true
4559   %cmp = fcmp fast true double %a, %b
4560   %cmp1 = fcmp fast true double %a, %b
4561   %retval = select i1 %cmp, i1 true, i1 %cmp1
4562   ret i1 %retval
4565 define i1 @intersect_fmf_1(double %a, double %b) {
4566 ; CHECK-LABEL: @intersect_fmf_1(
4567 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
4568 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4570   %cmp = fcmp fast olt double %a, %b
4571   %cmp1 = fcmp fast ogt double %a, %b
4572   %retval = or i1 %cmp, %cmp1
4573   ret i1 %retval
4576 define i1 @intersect_fmf_2(double %a, double %b) {
4577 ; CHECK-LABEL: @intersect_fmf_2(
4578 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
4579 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4581   %cmp = fcmp fast olt double %a, %b
4582   %cmp1 = fcmp ogt double %a, %b
4583   %retval = or i1 %cmp, %cmp1
4584   ret i1 %retval
4587 define i1 @intersect_fmf_3(double %a, double %b) {
4588 ; CHECK-LABEL: @intersect_fmf_3(
4589 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
4590 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4592   %cmp = fcmp olt double %a, %b
4593   %cmp1 = fcmp fast ogt double %a, %b
4594   %retval = or i1 %cmp, %cmp1
4595   ret i1 %retval
4598 define i1 @intersect_fmf_4(double %a, double %b) {
4599 ; CHECK-LABEL: @intersect_fmf_4(
4600 ; CHECK-NEXT:    [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
4601 ; CHECK-NEXT:    ret i1 [[RETVAL]]
4603   %cmp = fcmp ninf olt double %a, %b
4604   %cmp1 = fcmp nnan ogt double %a, %b
4605   %retval = or i1 %cmp, %cmp1
4606   ret i1 %retval
4609 define i1 @or_fcmp_reassoc1(i1 %x, double %a, double %b) {
4610 ; CHECK-LABEL: @or_fcmp_reassoc1(
4611 ; CHECK-NEXT:    [[OR:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
4612 ; CHECK-NEXT:    [[CMP2:%.*]] = fcmp ogt double [[A]], [[B]]
4613 ; CHECK-NEXT:    [[RETVAL:%.*]] = or i1 [[OR]], [[CMP1:%.*]]
4614 ; CHECK-NEXT:    [[RETVAL1:%.*]] = or i1 [[RETVAL]], [[CMP2]]
4615 ; CHECK-NEXT:    ret i1 [[RETVAL1]]
4617   %cmp = fcmp olt double %a, %b
4618   %cmp1 = fcmp ogt double %a, %b
4619   %or = or i1 %cmp, %x
4620   %retval = or i1 %or, %cmp1
4621   ret i1 %retval
4624 define i1 @or_fcmp_reassoc2(i1 %x, double %a, double %b) {
4625 ; CHECK-LABEL: @or_fcmp_reassoc2(
4626 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
4627 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ogt double [[A]], [[B]]
4628 ; CHECK-NEXT:    [[RETVAL:%.*]] = or i1 [[X:%.*]], [[TMP1]]
4629 ; CHECK-NEXT:    [[RETVAL1:%.*]] = or i1 [[RETVAL]], [[CMP1]]
4630 ; CHECK-NEXT:    ret i1 [[RETVAL1]]
4632   %cmp = fcmp olt double %a, %b
4633   %cmp1 = fcmp ogt double %a, %b
4634   %or = or i1 %x, %cmp
4635   %retval = or i1 %or, %cmp1
4636   ret i1 %retval
4639 define i1 @or_fcmp_reassoc3(i1 %x, double %a, double %b) {
4640 ; CHECK-LABEL: @or_fcmp_reassoc3(
4641 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
4642 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ogt double [[A]], [[B]]
4643 ; CHECK-NEXT:    [[RETVAL:%.*]] = or i1 [[TMP1]], [[X:%.*]]
4644 ; CHECK-NEXT:    [[RETVAL1:%.*]] = or i1 [[CMP1]], [[RETVAL]]
4645 ; CHECK-NEXT:    ret i1 [[RETVAL1]]
4647   %cmp = fcmp olt double %a, %b
4648   %cmp1 = fcmp ogt double %a, %b
4649   %or = or i1 %cmp, %x
4650   %retval = or i1 %cmp1, %or
4651   ret i1 %retval
4654 define i1 @or_fcmp_reassoc4(i1 %x, double %a, double %b) {
4655 ; CHECK-LABEL: @or_fcmp_reassoc4(
4656 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
4657 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ogt double [[A]], [[B]]
4658 ; CHECK-NEXT:    [[RETVAL:%.*]] = or i1 [[X:%.*]], [[TMP1]]
4659 ; CHECK-NEXT:    [[RETVAL1:%.*]] = or i1 [[CMP1]], [[RETVAL]]
4660 ; CHECK-NEXT:    ret i1 [[RETVAL1]]
4662   %cmp = fcmp olt double %a, %b
4663   %cmp1 = fcmp ogt double %a, %b
4664   %or = or i1 %x, %cmp
4665   %retval = or i1 %cmp1, %or
4666   ret i1 %retval