1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -instcombine -S | FileCheck %s
4 define i1 @PR1738(double %x, double %y) {
5 ; CHECK-LABEL: @PR1738(
6 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]]
7 ; CHECK-NEXT: ret i1 [[TMP1]]
9 %cmp1 = fcmp ord double %x, 0.0
10 %cmp2 = fcmp ord double %y, 0.0
11 %and = and i1 %cmp1, %cmp2
15 define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) {
16 ; CHECK-LABEL: @PR1738_vec_undef(
17 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord <2 x double> [[X:%.*]], [[Y:%.*]]
18 ; CHECK-NEXT: ret <2 x i1> [[TMP1]]
20 %cmp1 = fcmp ord <2 x double> %x, <double 0.0, double undef>
21 %cmp2 = fcmp ord <2 x double> %y, <double undef, double 0.0>
22 %or = and <2 x i1> %cmp1, %cmp2
26 define i1 @PR41069(i1 %z, float %c, float %d) {
27 ; CHECK-LABEL: @PR41069(
28 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord float [[D:%.*]], [[C:%.*]]
29 ; CHECK-NEXT: [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]
30 ; CHECK-NEXT: ret i1 [[R]]
32 %ord1 = fcmp arcp ord float %c, 0.0
33 %and = and i1 %ord1, %z
34 %ord2 = fcmp afn ord float %d, 0.0
35 %r = and i1 %and, %ord2
39 define i1 @PR41069_commute(i1 %z, float %c, float %d) {
40 ; CHECK-LABEL: @PR41069_commute(
41 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ninf ord float [[D:%.*]], [[C:%.*]]
42 ; CHECK-NEXT: [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]
43 ; CHECK-NEXT: ret i1 [[R]]
45 %ord1 = fcmp ninf ord float %c, 0.0
46 %and = and i1 %ord1, %z
47 %ord2 = fcmp ninf reassoc ord float %d, 0.0
48 %r = and i1 %ord2, %and
52 ; Commute differently and make sure vectors work.
54 define <2 x i1> @PR41069_vec(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {
55 ; CHECK-LABEL: @PR41069_vec(
56 ; CHECK-NEXT: [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]
57 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord <2 x double> [[D:%.*]], [[C:%.*]]
58 ; CHECK-NEXT: [[R:%.*]] = and <2 x i1> [[TMP1]], [[ORD1]]
59 ; CHECK-NEXT: ret <2 x i1> [[R]]
61 %ord1 = fcmp ord <2 x double> %a, %b
62 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>
63 %and = and <2 x i1> %ord1, %ord2
64 %ord3 = fcmp ord <2 x double> %d, zeroinitializer
65 %r = and <2 x i1> %and, %ord3
69 define <2 x i1> @PR41069_vec_commute(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {
70 ; CHECK-LABEL: @PR41069_vec_commute(
71 ; CHECK-NEXT: [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]
72 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord <2 x double> [[D:%.*]], [[C:%.*]]
73 ; CHECK-NEXT: [[R:%.*]] = and <2 x i1> [[TMP1]], [[ORD1]]
74 ; CHECK-NEXT: ret <2 x i1> [[R]]
76 %ord1 = fcmp ord <2 x double> %a, %b
77 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>
78 %and = and <2 x i1> %ord1, %ord2
79 %ord3 = fcmp ord <2 x double> %d, zeroinitializer
80 %r = and <2 x i1> %ord3, %and
84 define i1 @PR15737(float %a, double %b) {
85 ; CHECK-LABEL: @PR15737(
86 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00
87 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00
88 ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP1]]
89 ; CHECK-NEXT: ret i1 [[AND]]
91 %cmp = fcmp ord float %a, 0.000000e+00
92 %cmp1 = fcmp ord double %b, 0.000000e+00
93 %and = and i1 %cmp, %cmp1
97 define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) {
99 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord <2 x float> [[A:%.*]], zeroinitializer
100 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> [[B:%.*]], zeroinitializer
101 ; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]]
102 ; CHECK-NEXT: ret <2 x i1> [[AND]]
104 %cmp = fcmp ord <2 x float> %a, zeroinitializer
105 %cmp1 = fcmp ord <2 x double> %b, zeroinitializer
106 %and = and <2 x i1> %cmp, %cmp1
110 define i1 @fcmp_ord_nonzero(float %x, float %y) {
111 ; CHECK-LABEL: @fcmp_ord_nonzero(
112 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord float [[X:%.*]], [[Y:%.*]]
113 ; CHECK-NEXT: ret i1 [[TMP1]]
115 %cmp1 = fcmp ord float %x, 1.0
116 %cmp2 = fcmp ord float %y, 2.0
117 %and = and i1 %cmp1, %cmp2
121 define <3 x i1> @fcmp_ord_nonzero_vec(<3 x float> %x, <3 x float> %y) {
122 ; CHECK-LABEL: @fcmp_ord_nonzero_vec(
123 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord <3 x float> [[X:%.*]], [[Y:%.*]]
124 ; CHECK-NEXT: ret <3 x i1> [[TMP1]]
126 %cmp1 = fcmp ord <3 x float> %x, <float 1.0, float 2.0, float 3.0>
127 %cmp2 = fcmp ord <3 x float> %y, <float 3.0, float 2.0, float 1.0>
128 %and = and <3 x i1> %cmp1, %cmp2
132 define i1 @auto_gen_0(double %a, double %b) {
133 ; CHECK-LABEL: @auto_gen_0(
134 ; CHECK-NEXT: ret i1 false
136 %cmp = fcmp false double %a, %b
137 %cmp1 = fcmp false double %a, %b
138 %retval = and i1 %cmp, %cmp1
142 define i1 @auto_gen_1(double %a, double %b) {
143 ; CHECK-LABEL: @auto_gen_1(
144 ; CHECK-NEXT: ret i1 false
146 %cmp = fcmp oeq double %a, %b
147 %cmp1 = fcmp false double %a, %b
148 %retval = and i1 %cmp, %cmp1
152 define i1 @auto_gen_2(double %a, double %b) {
153 ; CHECK-LABEL: @auto_gen_2(
154 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
155 ; CHECK-NEXT: ret i1 [[TMP1]]
157 %cmp = fcmp oeq double %a, %b
158 %cmp1 = fcmp oeq double %a, %b
159 %retval = and i1 %cmp, %cmp1
163 define i1 @auto_gen_3(double %a, double %b) {
164 ; CHECK-LABEL: @auto_gen_3(
165 ; CHECK-NEXT: ret i1 false
167 %cmp = fcmp ogt double %a, %b
168 %cmp1 = fcmp false double %a, %b
169 %retval = and i1 %cmp, %cmp1
173 define i1 @auto_gen_4(double %a, double %b) {
174 ; CHECK-LABEL: @auto_gen_4(
175 ; CHECK-NEXT: ret i1 false
177 %cmp = fcmp ogt double %a, %b
178 %cmp1 = fcmp oeq double %a, %b
179 %retval = and i1 %cmp, %cmp1
183 define i1 @auto_gen_5(double %a, double %b) {
184 ; CHECK-LABEL: @auto_gen_5(
185 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
186 ; CHECK-NEXT: ret i1 [[TMP1]]
188 %cmp = fcmp ogt double %a, %b
189 %cmp1 = fcmp ogt double %a, %b
190 %retval = and i1 %cmp, %cmp1
194 define i1 @auto_gen_6(double %a, double %b) {
195 ; CHECK-LABEL: @auto_gen_6(
196 ; CHECK-NEXT: ret i1 false
198 %cmp = fcmp oge double %a, %b
199 %cmp1 = fcmp false double %a, %b
200 %retval = and i1 %cmp, %cmp1
204 define i1 @auto_gen_7(double %a, double %b) {
205 ; CHECK-LABEL: @auto_gen_7(
206 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
207 ; CHECK-NEXT: ret i1 [[TMP1]]
209 %cmp = fcmp oge double %a, %b
210 %cmp1 = fcmp oeq double %a, %b
211 %retval = and i1 %cmp, %cmp1
215 define i1 @auto_gen_8(double %a, double %b) {
216 ; CHECK-LABEL: @auto_gen_8(
217 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
218 ; CHECK-NEXT: ret i1 [[TMP1]]
220 %cmp = fcmp oge double %a, %b
221 %cmp1 = fcmp ogt double %a, %b
222 %retval = and i1 %cmp, %cmp1
226 define i1 @auto_gen_9(double %a, double %b) {
227 ; CHECK-LABEL: @auto_gen_9(
228 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
229 ; CHECK-NEXT: ret i1 [[TMP1]]
231 %cmp = fcmp oge double %a, %b
232 %cmp1 = fcmp oge double %a, %b
233 %retval = and i1 %cmp, %cmp1
237 define i1 @auto_gen_10(double %a, double %b) {
238 ; CHECK-LABEL: @auto_gen_10(
239 ; CHECK-NEXT: ret i1 false
241 %cmp = fcmp olt double %a, %b
242 %cmp1 = fcmp false double %a, %b
243 %retval = and i1 %cmp, %cmp1
247 define i1 @auto_gen_11(double %a, double %b) {
248 ; CHECK-LABEL: @auto_gen_11(
249 ; CHECK-NEXT: ret i1 false
251 %cmp = fcmp olt double %a, %b
252 %cmp1 = fcmp oeq double %a, %b
253 %retval = and i1 %cmp, %cmp1
257 define i1 @auto_gen_12(double %a, double %b) {
258 ; CHECK-LABEL: @auto_gen_12(
259 ; CHECK-NEXT: ret i1 false
261 %cmp = fcmp olt double %a, %b
262 %cmp1 = fcmp ogt double %a, %b
263 %retval = and i1 %cmp, %cmp1
267 define i1 @auto_gen_13(double %a, double %b) {
268 ; CHECK-LABEL: @auto_gen_13(
269 ; CHECK-NEXT: ret i1 false
271 %cmp = fcmp olt double %a, %b
272 %cmp1 = fcmp oge double %a, %b
273 %retval = and i1 %cmp, %cmp1
277 define i1 @auto_gen_14(double %a, double %b) {
278 ; CHECK-LABEL: @auto_gen_14(
279 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
280 ; CHECK-NEXT: ret i1 [[TMP1]]
282 %cmp = fcmp olt double %a, %b
283 %cmp1 = fcmp olt double %a, %b
284 %retval = and i1 %cmp, %cmp1
288 define i1 @auto_gen_15(double %a, double %b) {
289 ; CHECK-LABEL: @auto_gen_15(
290 ; CHECK-NEXT: ret i1 false
292 %cmp = fcmp ole double %a, %b
293 %cmp1 = fcmp false double %a, %b
294 %retval = and i1 %cmp, %cmp1
298 define i1 @auto_gen_16(double %a, double %b) {
299 ; CHECK-LABEL: @auto_gen_16(
300 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
301 ; CHECK-NEXT: ret i1 [[TMP1]]
303 %cmp = fcmp ole double %a, %b
304 %cmp1 = fcmp oeq double %a, %b
305 %retval = and i1 %cmp, %cmp1
309 define i1 @auto_gen_17(double %a, double %b) {
310 ; CHECK-LABEL: @auto_gen_17(
311 ; CHECK-NEXT: ret i1 false
313 %cmp = fcmp ole double %a, %b
314 %cmp1 = fcmp ogt double %a, %b
315 %retval = and i1 %cmp, %cmp1
319 define i1 @auto_gen_18(double %a, double %b) {
320 ; CHECK-LABEL: @auto_gen_18(
321 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
322 ; CHECK-NEXT: ret i1 [[TMP1]]
324 %cmp = fcmp ole double %a, %b
325 %cmp1 = fcmp oge double %a, %b
326 %retval = and i1 %cmp, %cmp1
330 define i1 @auto_gen_19(double %a, double %b) {
331 ; CHECK-LABEL: @auto_gen_19(
332 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
333 ; CHECK-NEXT: ret i1 [[TMP1]]
335 %cmp = fcmp ole double %a, %b
336 %cmp1 = fcmp olt double %a, %b
337 %retval = and i1 %cmp, %cmp1
341 define i1 @auto_gen_20(double %a, double %b) {
342 ; CHECK-LABEL: @auto_gen_20(
343 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
344 ; CHECK-NEXT: ret i1 [[TMP1]]
346 %cmp = fcmp ole double %a, %b
347 %cmp1 = fcmp ole double %a, %b
348 %retval = and i1 %cmp, %cmp1
352 define i1 @auto_gen_21(double %a, double %b) {
353 ; CHECK-LABEL: @auto_gen_21(
354 ; CHECK-NEXT: ret i1 false
356 %cmp = fcmp one double %a, %b
357 %cmp1 = fcmp false double %a, %b
358 %retval = and i1 %cmp, %cmp1
362 define i1 @auto_gen_22(double %a, double %b) {
363 ; CHECK-LABEL: @auto_gen_22(
364 ; CHECK-NEXT: ret i1 false
366 %cmp = fcmp one double %a, %b
367 %cmp1 = fcmp oeq double %a, %b
368 %retval = and i1 %cmp, %cmp1
372 define i1 @auto_gen_23(double %a, double %b) {
373 ; CHECK-LABEL: @auto_gen_23(
374 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
375 ; CHECK-NEXT: ret i1 [[TMP1]]
377 %cmp = fcmp one double %a, %b
378 %cmp1 = fcmp ogt double %a, %b
379 %retval = and i1 %cmp, %cmp1
383 define i1 @auto_gen_24(double %a, double %b) {
384 ; CHECK-LABEL: @auto_gen_24(
385 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
386 ; CHECK-NEXT: ret i1 [[TMP1]]
388 %cmp = fcmp one double %a, %b
389 %cmp1 = fcmp oge double %a, %b
390 %retval = and i1 %cmp, %cmp1
394 define i1 @auto_gen_25(double %a, double %b) {
395 ; CHECK-LABEL: @auto_gen_25(
396 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
397 ; CHECK-NEXT: ret i1 [[TMP1]]
399 %cmp = fcmp one double %a, %b
400 %cmp1 = fcmp olt double %a, %b
401 %retval = and i1 %cmp, %cmp1
405 define i1 @auto_gen_26(double %a, double %b) {
406 ; CHECK-LABEL: @auto_gen_26(
407 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
408 ; CHECK-NEXT: ret i1 [[TMP1]]
410 %cmp = fcmp one double %a, %b
411 %cmp1 = fcmp ole double %a, %b
412 %retval = and i1 %cmp, %cmp1
416 define i1 @auto_gen_27(double %a, double %b) {
417 ; CHECK-LABEL: @auto_gen_27(
418 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
419 ; CHECK-NEXT: ret i1 [[TMP1]]
421 %cmp = fcmp one double %a, %b
422 %cmp1 = fcmp one double %a, %b
423 %retval = and i1 %cmp, %cmp1
427 define i1 @auto_gen_28(double %a, double %b) {
428 ; CHECK-LABEL: @auto_gen_28(
429 ; CHECK-NEXT: ret i1 false
431 %cmp = fcmp ord double %a, %b
432 %cmp1 = fcmp false double %a, %b
433 %retval = and i1 %cmp, %cmp1
437 define i1 @auto_gen_29(double %a, double %b) {
438 ; CHECK-LABEL: @auto_gen_29(
439 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
440 ; CHECK-NEXT: ret i1 [[TMP1]]
442 %cmp = fcmp ord double %a, %b
443 %cmp1 = fcmp oeq double %a, %b
444 %retval = and i1 %cmp, %cmp1
448 define i1 @auto_gen_30(double %a, double %b) {
449 ; CHECK-LABEL: @auto_gen_30(
450 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
451 ; CHECK-NEXT: ret i1 [[TMP1]]
453 %cmp = fcmp ord double %a, %b
454 %cmp1 = fcmp ogt double %a, %b
455 %retval = and i1 %cmp, %cmp1
459 define i1 @auto_gen_31(double %a, double %b) {
460 ; CHECK-LABEL: @auto_gen_31(
461 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
462 ; CHECK-NEXT: ret i1 [[TMP1]]
464 %cmp = fcmp ord double %a, %b
465 %cmp1 = fcmp oge double %a, %b
466 %retval = and i1 %cmp, %cmp1
470 define i1 @auto_gen_32(double %a, double %b) {
471 ; CHECK-LABEL: @auto_gen_32(
472 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
473 ; CHECK-NEXT: ret i1 [[TMP1]]
475 %cmp = fcmp ord double %a, %b
476 %cmp1 = fcmp olt double %a, %b
477 %retval = and i1 %cmp, %cmp1
481 define i1 @auto_gen_33(double %a, double %b) {
482 ; CHECK-LABEL: @auto_gen_33(
483 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
484 ; CHECK-NEXT: ret i1 [[TMP1]]
486 %cmp = fcmp ord double %a, %b
487 %cmp1 = fcmp ole double %a, %b
488 %retval = and i1 %cmp, %cmp1
492 define i1 @auto_gen_34(double %a, double %b) {
493 ; CHECK-LABEL: @auto_gen_34(
494 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
495 ; CHECK-NEXT: ret i1 [[TMP1]]
497 %cmp = fcmp ord double %a, %b
498 %cmp1 = fcmp one double %a, %b
499 %retval = and i1 %cmp, %cmp1
503 define i1 @auto_gen_35(double %a, double %b) {
504 ; CHECK-LABEL: @auto_gen_35(
505 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
506 ; CHECK-NEXT: ret i1 [[TMP1]]
508 %cmp = fcmp ord double %a, %b
509 %cmp1 = fcmp ord double %a, %b
510 %retval = and i1 %cmp, %cmp1
514 define i1 @auto_gen_36(double %a, double %b) {
515 ; CHECK-LABEL: @auto_gen_36(
516 ; CHECK-NEXT: ret i1 false
518 %cmp = fcmp ueq double %a, %b
519 %cmp1 = fcmp false double %a, %b
520 %retval = and i1 %cmp, %cmp1
524 define i1 @auto_gen_37(double %a, double %b) {
525 ; CHECK-LABEL: @auto_gen_37(
526 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
527 ; CHECK-NEXT: ret i1 [[TMP1]]
529 %cmp = fcmp ueq double %a, %b
530 %cmp1 = fcmp oeq double %a, %b
531 %retval = and i1 %cmp, %cmp1
535 define i1 @auto_gen_38(double %a, double %b) {
536 ; CHECK-LABEL: @auto_gen_38(
537 ; CHECK-NEXT: ret i1 false
539 %cmp = fcmp ueq double %a, %b
540 %cmp1 = fcmp ogt double %a, %b
541 %retval = and i1 %cmp, %cmp1
545 define i1 @auto_gen_39(double %a, double %b) {
546 ; CHECK-LABEL: @auto_gen_39(
547 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
548 ; CHECK-NEXT: ret i1 [[TMP1]]
550 %cmp = fcmp ueq double %a, %b
551 %cmp1 = fcmp oge double %a, %b
552 %retval = and i1 %cmp, %cmp1
556 define i1 @auto_gen_40(double %a, double %b) {
557 ; CHECK-LABEL: @auto_gen_40(
558 ; CHECK-NEXT: ret i1 false
560 %cmp = fcmp ueq double %a, %b
561 %cmp1 = fcmp olt double %a, %b
562 %retval = and i1 %cmp, %cmp1
566 define i1 @auto_gen_41(double %a, double %b) {
567 ; CHECK-LABEL: @auto_gen_41(
568 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
569 ; CHECK-NEXT: ret i1 [[TMP1]]
571 %cmp = fcmp ueq double %a, %b
572 %cmp1 = fcmp ole double %a, %b
573 %retval = and i1 %cmp, %cmp1
577 define i1 @auto_gen_42(double %a, double %b) {
578 ; CHECK-LABEL: @auto_gen_42(
579 ; CHECK-NEXT: ret i1 false
581 %cmp = fcmp ueq double %a, %b
582 %cmp1 = fcmp one double %a, %b
583 %retval = and i1 %cmp, %cmp1
587 define i1 @auto_gen_43(double %a, double %b) {
588 ; CHECK-LABEL: @auto_gen_43(
589 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
590 ; CHECK-NEXT: ret i1 [[TMP1]]
592 %cmp = fcmp ueq double %a, %b
593 %cmp1 = fcmp ord double %a, %b
594 %retval = and i1 %cmp, %cmp1
598 define i1 @auto_gen_44(double %a, double %b) {
599 ; CHECK-LABEL: @auto_gen_44(
600 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
601 ; CHECK-NEXT: ret i1 [[TMP1]]
603 %cmp = fcmp ueq double %a, %b
604 %cmp1 = fcmp ueq double %a, %b
605 %retval = and i1 %cmp, %cmp1
609 define i1 @auto_gen_45(double %a, double %b) {
610 ; CHECK-LABEL: @auto_gen_45(
611 ; CHECK-NEXT: ret i1 false
613 %cmp = fcmp ugt double %a, %b
614 %cmp1 = fcmp false double %a, %b
615 %retval = and i1 %cmp, %cmp1
619 define i1 @auto_gen_46(double %a, double %b) {
620 ; CHECK-LABEL: @auto_gen_46(
621 ; CHECK-NEXT: ret i1 false
623 %cmp = fcmp ugt double %a, %b
624 %cmp1 = fcmp oeq double %a, %b
625 %retval = and i1 %cmp, %cmp1
629 define i1 @auto_gen_47(double %a, double %b) {
630 ; CHECK-LABEL: @auto_gen_47(
631 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
632 ; CHECK-NEXT: ret i1 [[TMP1]]
634 %cmp = fcmp ugt double %a, %b
635 %cmp1 = fcmp ogt double %a, %b
636 %retval = and i1 %cmp, %cmp1
640 define i1 @auto_gen_48(double %a, double %b) {
641 ; CHECK-LABEL: @auto_gen_48(
642 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
643 ; CHECK-NEXT: ret i1 [[TMP1]]
645 %cmp = fcmp ugt double %a, %b
646 %cmp1 = fcmp oge double %a, %b
647 %retval = and i1 %cmp, %cmp1
651 define i1 @auto_gen_49(double %a, double %b) {
652 ; CHECK-LABEL: @auto_gen_49(
653 ; CHECK-NEXT: ret i1 false
655 %cmp = fcmp ugt double %a, %b
656 %cmp1 = fcmp olt double %a, %b
657 %retval = and i1 %cmp, %cmp1
661 define i1 @auto_gen_50(double %a, double %b) {
662 ; CHECK-LABEL: @auto_gen_50(
663 ; CHECK-NEXT: ret i1 false
665 %cmp = fcmp ugt double %a, %b
666 %cmp1 = fcmp ole double %a, %b
667 %retval = and i1 %cmp, %cmp1
671 define i1 @auto_gen_51(double %a, double %b) {
672 ; CHECK-LABEL: @auto_gen_51(
673 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
674 ; CHECK-NEXT: ret i1 [[TMP1]]
676 %cmp = fcmp ugt double %a, %b
677 %cmp1 = fcmp one double %a, %b
678 %retval = and i1 %cmp, %cmp1
682 define i1 @auto_gen_52(double %a, double %b) {
683 ; CHECK-LABEL: @auto_gen_52(
684 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
685 ; CHECK-NEXT: ret i1 [[TMP1]]
687 %cmp = fcmp ugt double %a, %b
688 %cmp1 = fcmp ord double %a, %b
689 %retval = and i1 %cmp, %cmp1
693 define i1 @auto_gen_53(double %a, double %b) {
694 ; CHECK-LABEL: @auto_gen_53(
695 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
696 ; CHECK-NEXT: ret i1 [[TMP1]]
698 %cmp = fcmp ugt double %a, %b
699 %cmp1 = fcmp ueq double %a, %b
700 %retval = and i1 %cmp, %cmp1
704 define i1 @auto_gen_54(double %a, double %b) {
705 ; CHECK-LABEL: @auto_gen_54(
706 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
707 ; CHECK-NEXT: ret i1 [[TMP1]]
709 %cmp = fcmp ugt double %a, %b
710 %cmp1 = fcmp ugt double %a, %b
711 %retval = and i1 %cmp, %cmp1
715 define i1 @auto_gen_55(double %a, double %b) {
716 ; CHECK-LABEL: @auto_gen_55(
717 ; CHECK-NEXT: ret i1 false
719 %cmp = fcmp uge double %a, %b
720 %cmp1 = fcmp false double %a, %b
721 %retval = and i1 %cmp, %cmp1
725 define i1 @auto_gen_56(double %a, double %b) {
726 ; CHECK-LABEL: @auto_gen_56(
727 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
728 ; CHECK-NEXT: ret i1 [[TMP1]]
730 %cmp = fcmp uge double %a, %b
731 %cmp1 = fcmp oeq double %a, %b
732 %retval = and i1 %cmp, %cmp1
736 define i1 @auto_gen_57(double %a, double %b) {
737 ; CHECK-LABEL: @auto_gen_57(
738 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
739 ; CHECK-NEXT: ret i1 [[TMP1]]
741 %cmp = fcmp uge double %a, %b
742 %cmp1 = fcmp ogt double %a, %b
743 %retval = and i1 %cmp, %cmp1
747 define i1 @auto_gen_58(double %a, double %b) {
748 ; CHECK-LABEL: @auto_gen_58(
749 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
750 ; CHECK-NEXT: ret i1 [[TMP1]]
752 %cmp = fcmp uge double %a, %b
753 %cmp1 = fcmp oge double %a, %b
754 %retval = and i1 %cmp, %cmp1
758 define i1 @auto_gen_59(double %a, double %b) {
759 ; CHECK-LABEL: @auto_gen_59(
760 ; CHECK-NEXT: ret i1 false
762 %cmp = fcmp uge double %a, %b
763 %cmp1 = fcmp olt double %a, %b
764 %retval = and i1 %cmp, %cmp1
768 define i1 @auto_gen_60(double %a, double %b) {
769 ; CHECK-LABEL: @auto_gen_60(
770 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
771 ; CHECK-NEXT: ret i1 [[TMP1]]
773 %cmp = fcmp uge double %a, %b
774 %cmp1 = fcmp ole double %a, %b
775 %retval = and i1 %cmp, %cmp1
779 define i1 @auto_gen_61(double %a, double %b) {
780 ; CHECK-LABEL: @auto_gen_61(
781 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
782 ; CHECK-NEXT: ret i1 [[TMP1]]
784 %cmp = fcmp uge double %a, %b
785 %cmp1 = fcmp one double %a, %b
786 %retval = and i1 %cmp, %cmp1
790 define i1 @auto_gen_62(double %a, double %b) {
791 ; CHECK-LABEL: @auto_gen_62(
792 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
793 ; CHECK-NEXT: ret i1 [[TMP1]]
795 %cmp = fcmp uge double %a, %b
796 %cmp1 = fcmp ord double %a, %b
797 %retval = and i1 %cmp, %cmp1
801 define i1 @auto_gen_63(double %a, double %b) {
802 ; CHECK-LABEL: @auto_gen_63(
803 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
804 ; CHECK-NEXT: ret i1 [[TMP1]]
806 %cmp = fcmp uge double %a, %b
807 %cmp1 = fcmp ueq double %a, %b
808 %retval = and i1 %cmp, %cmp1
812 define i1 @auto_gen_64(double %a, double %b) {
813 ; CHECK-LABEL: @auto_gen_64(
814 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
815 ; CHECK-NEXT: ret i1 [[TMP1]]
817 %cmp = fcmp uge double %a, %b
818 %cmp1 = fcmp ugt double %a, %b
819 %retval = and i1 %cmp, %cmp1
823 define i1 @auto_gen_65(double %a, double %b) {
824 ; CHECK-LABEL: @auto_gen_65(
825 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
826 ; CHECK-NEXT: ret i1 [[TMP1]]
828 %cmp = fcmp uge double %a, %b
829 %cmp1 = fcmp uge double %a, %b
830 %retval = and i1 %cmp, %cmp1
834 define i1 @auto_gen_66(double %a, double %b) {
835 ; CHECK-LABEL: @auto_gen_66(
836 ; CHECK-NEXT: ret i1 false
838 %cmp = fcmp ult double %a, %b
839 %cmp1 = fcmp false double %a, %b
840 %retval = and i1 %cmp, %cmp1
844 define i1 @auto_gen_67(double %a, double %b) {
845 ; CHECK-LABEL: @auto_gen_67(
846 ; CHECK-NEXT: ret i1 false
848 %cmp = fcmp ult double %a, %b
849 %cmp1 = fcmp oeq double %a, %b
850 %retval = and i1 %cmp, %cmp1
854 define i1 @auto_gen_68(double %a, double %b) {
855 ; CHECK-LABEL: @auto_gen_68(
856 ; CHECK-NEXT: ret i1 false
858 %cmp = fcmp ult double %a, %b
859 %cmp1 = fcmp ogt double %a, %b
860 %retval = and i1 %cmp, %cmp1
864 define i1 @auto_gen_69(double %a, double %b) {
865 ; CHECK-LABEL: @auto_gen_69(
866 ; CHECK-NEXT: ret i1 false
868 %cmp = fcmp ult double %a, %b
869 %cmp1 = fcmp oge double %a, %b
870 %retval = and i1 %cmp, %cmp1
874 define i1 @auto_gen_70(double %a, double %b) {
875 ; CHECK-LABEL: @auto_gen_70(
876 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
877 ; CHECK-NEXT: ret i1 [[TMP1]]
879 %cmp = fcmp ult double %a, %b
880 %cmp1 = fcmp olt double %a, %b
881 %retval = and i1 %cmp, %cmp1
885 define i1 @auto_gen_71(double %a, double %b) {
886 ; CHECK-LABEL: @auto_gen_71(
887 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
888 ; CHECK-NEXT: ret i1 [[TMP1]]
890 %cmp = fcmp ult double %a, %b
891 %cmp1 = fcmp ole double %a, %b
892 %retval = and i1 %cmp, %cmp1
896 define i1 @auto_gen_72(double %a, double %b) {
897 ; CHECK-LABEL: @auto_gen_72(
898 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
899 ; CHECK-NEXT: ret i1 [[TMP1]]
901 %cmp = fcmp ult double %a, %b
902 %cmp1 = fcmp one double %a, %b
903 %retval = and i1 %cmp, %cmp1
907 define i1 @auto_gen_73(double %a, double %b) {
908 ; CHECK-LABEL: @auto_gen_73(
909 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
910 ; CHECK-NEXT: ret i1 [[TMP1]]
912 %cmp = fcmp ult double %a, %b
913 %cmp1 = fcmp ord double %a, %b
914 %retval = and i1 %cmp, %cmp1
918 define i1 @auto_gen_74(double %a, double %b) {
919 ; CHECK-LABEL: @auto_gen_74(
920 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
921 ; CHECK-NEXT: ret i1 [[TMP1]]
923 %cmp = fcmp ult double %a, %b
924 %cmp1 = fcmp ueq double %a, %b
925 %retval = and i1 %cmp, %cmp1
929 define i1 @auto_gen_75(double %a, double %b) {
930 ; CHECK-LABEL: @auto_gen_75(
931 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
932 ; CHECK-NEXT: ret i1 [[TMP1]]
934 %cmp = fcmp ult double %a, %b
935 %cmp1 = fcmp ugt double %a, %b
936 %retval = and i1 %cmp, %cmp1
940 define i1 @auto_gen_76(double %a, double %b) {
941 ; CHECK-LABEL: @auto_gen_76(
942 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
943 ; CHECK-NEXT: ret i1 [[TMP1]]
945 %cmp = fcmp ult double %a, %b
946 %cmp1 = fcmp uge double %a, %b
947 %retval = and i1 %cmp, %cmp1
951 define i1 @auto_gen_77(double %a, double %b) {
952 ; CHECK-LABEL: @auto_gen_77(
953 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
954 ; CHECK-NEXT: ret i1 [[TMP1]]
956 %cmp = fcmp ult double %a, %b
957 %cmp1 = fcmp ult double %a, %b
958 %retval = and i1 %cmp, %cmp1
962 define i1 @auto_gen_78(double %a, double %b) {
963 ; CHECK-LABEL: @auto_gen_78(
964 ; CHECK-NEXT: ret i1 false
966 %cmp = fcmp ule double %a, %b
967 %cmp1 = fcmp false double %a, %b
968 %retval = and i1 %cmp, %cmp1
972 define i1 @auto_gen_79(double %a, double %b) {
973 ; CHECK-LABEL: @auto_gen_79(
974 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
975 ; CHECK-NEXT: ret i1 [[TMP1]]
977 %cmp = fcmp ule double %a, %b
978 %cmp1 = fcmp oeq double %a, %b
979 %retval = and i1 %cmp, %cmp1
983 define i1 @auto_gen_80(double %a, double %b) {
984 ; CHECK-LABEL: @auto_gen_80(
985 ; CHECK-NEXT: ret i1 false
987 %cmp = fcmp ule double %a, %b
988 %cmp1 = fcmp ogt double %a, %b
989 %retval = and i1 %cmp, %cmp1
993 define i1 @auto_gen_81(double %a, double %b) {
994 ; CHECK-LABEL: @auto_gen_81(
995 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
996 ; CHECK-NEXT: ret i1 [[TMP1]]
998 %cmp = fcmp ule double %a, %b
999 %cmp1 = fcmp oge double %a, %b
1000 %retval = and i1 %cmp, %cmp1
1004 define i1 @auto_gen_82(double %a, double %b) {
1005 ; CHECK-LABEL: @auto_gen_82(
1006 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1007 ; CHECK-NEXT: ret i1 [[TMP1]]
1009 %cmp = fcmp ule double %a, %b
1010 %cmp1 = fcmp olt double %a, %b
1011 %retval = and i1 %cmp, %cmp1
1015 define i1 @auto_gen_83(double %a, double %b) {
1016 ; CHECK-LABEL: @auto_gen_83(
1017 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1018 ; CHECK-NEXT: ret i1 [[TMP1]]
1020 %cmp = fcmp ule double %a, %b
1021 %cmp1 = fcmp ole double %a, %b
1022 %retval = and i1 %cmp, %cmp1
1026 define i1 @auto_gen_84(double %a, double %b) {
1027 ; CHECK-LABEL: @auto_gen_84(
1028 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1029 ; CHECK-NEXT: ret i1 [[TMP1]]
1031 %cmp = fcmp ule double %a, %b
1032 %cmp1 = fcmp one double %a, %b
1033 %retval = and i1 %cmp, %cmp1
1037 define i1 @auto_gen_85(double %a, double %b) {
1038 ; CHECK-LABEL: @auto_gen_85(
1039 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1040 ; CHECK-NEXT: ret i1 [[TMP1]]
1042 %cmp = fcmp ule double %a, %b
1043 %cmp1 = fcmp ord double %a, %b
1044 %retval = and i1 %cmp, %cmp1
1048 define i1 @auto_gen_86(double %a, double %b) {
1049 ; CHECK-LABEL: @auto_gen_86(
1050 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1051 ; CHECK-NEXT: ret i1 [[TMP1]]
1053 %cmp = fcmp ule double %a, %b
1054 %cmp1 = fcmp ueq double %a, %b
1055 %retval = and i1 %cmp, %cmp1
1059 define i1 @auto_gen_87(double %a, double %b) {
1060 ; CHECK-LABEL: @auto_gen_87(
1061 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1062 ; CHECK-NEXT: ret i1 [[TMP1]]
1064 %cmp = fcmp ule double %a, %b
1065 %cmp1 = fcmp ugt double %a, %b
1066 %retval = and i1 %cmp, %cmp1
1070 define i1 @auto_gen_88(double %a, double %b) {
1071 ; CHECK-LABEL: @auto_gen_88(
1072 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1073 ; CHECK-NEXT: ret i1 [[TMP1]]
1075 %cmp = fcmp ule double %a, %b
1076 %cmp1 = fcmp uge double %a, %b
1077 %retval = and i1 %cmp, %cmp1
1081 define i1 @auto_gen_89(double %a, double %b) {
1082 ; CHECK-LABEL: @auto_gen_89(
1083 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1084 ; CHECK-NEXT: ret i1 [[TMP1]]
1086 %cmp = fcmp ule double %a, %b
1087 %cmp1 = fcmp ult double %a, %b
1088 %retval = and i1 %cmp, %cmp1
1092 define i1 @auto_gen_90(double %a, double %b) {
1093 ; CHECK-LABEL: @auto_gen_90(
1094 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1095 ; CHECK-NEXT: ret i1 [[TMP1]]
1097 %cmp = fcmp ule double %a, %b
1098 %cmp1 = fcmp ule double %a, %b
1099 %retval = and i1 %cmp, %cmp1
1103 define i1 @auto_gen_91(double %a, double %b) {
1104 ; CHECK-LABEL: @auto_gen_91(
1105 ; CHECK-NEXT: ret i1 false
1107 %cmp = fcmp une double %a, %b
1108 %cmp1 = fcmp false double %a, %b
1109 %retval = and i1 %cmp, %cmp1
1113 define i1 @auto_gen_92(double %a, double %b) {
1114 ; CHECK-LABEL: @auto_gen_92(
1115 ; CHECK-NEXT: ret i1 false
1117 %cmp = fcmp une double %a, %b
1118 %cmp1 = fcmp oeq double %a, %b
1119 %retval = and i1 %cmp, %cmp1
1123 define i1 @auto_gen_93(double %a, double %b) {
1124 ; CHECK-LABEL: @auto_gen_93(
1125 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1126 ; CHECK-NEXT: ret i1 [[TMP1]]
1128 %cmp = fcmp une double %a, %b
1129 %cmp1 = fcmp ogt double %a, %b
1130 %retval = and i1 %cmp, %cmp1
1134 define i1 @auto_gen_94(double %a, double %b) {
1135 ; CHECK-LABEL: @auto_gen_94(
1136 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1137 ; CHECK-NEXT: ret i1 [[TMP1]]
1139 %cmp = fcmp une double %a, %b
1140 %cmp1 = fcmp oge double %a, %b
1141 %retval = and i1 %cmp, %cmp1
1145 define i1 @auto_gen_95(double %a, double %b) {
1146 ; CHECK-LABEL: @auto_gen_95(
1147 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1148 ; CHECK-NEXT: ret i1 [[TMP1]]
1150 %cmp = fcmp une double %a, %b
1151 %cmp1 = fcmp olt double %a, %b
1152 %retval = and i1 %cmp, %cmp1
1156 define i1 @auto_gen_96(double %a, double %b) {
1157 ; CHECK-LABEL: @auto_gen_96(
1158 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1159 ; CHECK-NEXT: ret i1 [[TMP1]]
1161 %cmp = fcmp une double %a, %b
1162 %cmp1 = fcmp ole double %a, %b
1163 %retval = and i1 %cmp, %cmp1
1167 define i1 @auto_gen_97(double %a, double %b) {
1168 ; CHECK-LABEL: @auto_gen_97(
1169 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1170 ; CHECK-NEXT: ret i1 [[TMP1]]
1172 %cmp = fcmp une double %a, %b
1173 %cmp1 = fcmp one double %a, %b
1174 %retval = and i1 %cmp, %cmp1
1178 define i1 @auto_gen_98(double %a, double %b) {
1179 ; CHECK-LABEL: @auto_gen_98(
1180 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1181 ; CHECK-NEXT: ret i1 [[TMP1]]
1183 %cmp = fcmp une double %a, %b
1184 %cmp1 = fcmp ord double %a, %b
1185 %retval = and i1 %cmp, %cmp1
1189 define i1 @auto_gen_99(double %a, double %b) {
1190 ; CHECK-LABEL: @auto_gen_99(
1191 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1192 ; CHECK-NEXT: ret i1 [[TMP1]]
1194 %cmp = fcmp une double %a, %b
1195 %cmp1 = fcmp ueq double %a, %b
1196 %retval = and i1 %cmp, %cmp1
1200 define i1 @auto_gen_100(double %a, double %b) {
1201 ; CHECK-LABEL: @auto_gen_100(
1202 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1203 ; CHECK-NEXT: ret i1 [[TMP1]]
1205 %cmp = fcmp une double %a, %b
1206 %cmp1 = fcmp ugt double %a, %b
1207 %retval = and i1 %cmp, %cmp1
1211 define i1 @auto_gen_101(double %a, double %b) {
1212 ; CHECK-LABEL: @auto_gen_101(
1213 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1214 ; CHECK-NEXT: ret i1 [[TMP1]]
1216 %cmp = fcmp une double %a, %b
1217 %cmp1 = fcmp uge double %a, %b
1218 %retval = and i1 %cmp, %cmp1
1222 define i1 @auto_gen_102(double %a, double %b) {
1223 ; CHECK-LABEL: @auto_gen_102(
1224 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1225 ; CHECK-NEXT: ret i1 [[TMP1]]
1227 %cmp = fcmp une double %a, %b
1228 %cmp1 = fcmp ult double %a, %b
1229 %retval = and i1 %cmp, %cmp1
1233 define i1 @auto_gen_103(double %a, double %b) {
1234 ; CHECK-LABEL: @auto_gen_103(
1235 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1236 ; CHECK-NEXT: ret i1 [[TMP1]]
1238 %cmp = fcmp une double %a, %b
1239 %cmp1 = fcmp ule double %a, %b
1240 %retval = and i1 %cmp, %cmp1
1244 define i1 @auto_gen_104(double %a, double %b) {
1245 ; CHECK-LABEL: @auto_gen_104(
1246 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1247 ; CHECK-NEXT: ret i1 [[TMP1]]
1249 %cmp = fcmp une double %a, %b
1250 %cmp1 = fcmp une double %a, %b
1251 %retval = and i1 %cmp, %cmp1
1255 define i1 @auto_gen_105(double %a, double %b) {
1256 ; CHECK-LABEL: @auto_gen_105(
1257 ; CHECK-NEXT: ret i1 false
1259 %cmp = fcmp uno double %a, %b
1260 %cmp1 = fcmp false double %a, %b
1261 %retval = and i1 %cmp, %cmp1
1265 define i1 @auto_gen_106(double %a, double %b) {
1266 ; CHECK-LABEL: @auto_gen_106(
1267 ; CHECK-NEXT: ret i1 false
1269 %cmp = fcmp uno double %a, %b
1270 %cmp1 = fcmp oeq double %a, %b
1271 %retval = and i1 %cmp, %cmp1
1275 define i1 @auto_gen_107(double %a, double %b) {
1276 ; CHECK-LABEL: @auto_gen_107(
1277 ; CHECK-NEXT: ret i1 false
1279 %cmp = fcmp uno double %a, %b
1280 %cmp1 = fcmp ogt double %a, %b
1281 %retval = and i1 %cmp, %cmp1
1285 define i1 @auto_gen_108(double %a, double %b) {
1286 ; CHECK-LABEL: @auto_gen_108(
1287 ; CHECK-NEXT: ret i1 false
1289 %cmp = fcmp uno double %a, %b
1290 %cmp1 = fcmp oge double %a, %b
1291 %retval = and i1 %cmp, %cmp1
1295 define i1 @auto_gen_109(double %a, double %b) {
1296 ; CHECK-LABEL: @auto_gen_109(
1297 ; CHECK-NEXT: ret i1 false
1299 %cmp = fcmp uno double %a, %b
1300 %cmp1 = fcmp olt double %a, %b
1301 %retval = and i1 %cmp, %cmp1
1305 define i1 @auto_gen_110(double %a, double %b) {
1306 ; CHECK-LABEL: @auto_gen_110(
1307 ; CHECK-NEXT: ret i1 false
1309 %cmp = fcmp uno double %a, %b
1310 %cmp1 = fcmp ole double %a, %b
1311 %retval = and i1 %cmp, %cmp1
1315 define i1 @auto_gen_111(double %a, double %b) {
1316 ; CHECK-LABEL: @auto_gen_111(
1317 ; CHECK-NEXT: ret i1 false
1319 %cmp = fcmp uno double %a, %b
1320 %cmp1 = fcmp one double %a, %b
1321 %retval = and i1 %cmp, %cmp1
1325 define i1 @auto_gen_112(double %a, double %b) {
1326 ; CHECK-LABEL: @auto_gen_112(
1327 ; CHECK-NEXT: ret i1 false
1329 %cmp = fcmp uno double %a, %b
1330 %cmp1 = fcmp ord double %a, %b
1331 %retval = and i1 %cmp, %cmp1
1335 define i1 @auto_gen_113(double %a, double %b) {
1336 ; CHECK-LABEL: @auto_gen_113(
1337 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1338 ; CHECK-NEXT: ret i1 [[TMP1]]
1340 %cmp = fcmp uno double %a, %b
1341 %cmp1 = fcmp ueq double %a, %b
1342 %retval = and i1 %cmp, %cmp1
1346 define i1 @auto_gen_114(double %a, double %b) {
1347 ; CHECK-LABEL: @auto_gen_114(
1348 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1349 ; CHECK-NEXT: ret i1 [[TMP1]]
1351 %cmp = fcmp uno double %a, %b
1352 %cmp1 = fcmp ugt double %a, %b
1353 %retval = and i1 %cmp, %cmp1
1357 define i1 @auto_gen_115(double %a, double %b) {
1358 ; CHECK-LABEL: @auto_gen_115(
1359 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1360 ; CHECK-NEXT: ret i1 [[TMP1]]
1362 %cmp = fcmp uno double %a, %b
1363 %cmp1 = fcmp uge double %a, %b
1364 %retval = and i1 %cmp, %cmp1
1368 define i1 @auto_gen_116(double %a, double %b) {
1369 ; CHECK-LABEL: @auto_gen_116(
1370 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1371 ; CHECK-NEXT: ret i1 [[TMP1]]
1373 %cmp = fcmp uno double %a, %b
1374 %cmp1 = fcmp ult double %a, %b
1375 %retval = and i1 %cmp, %cmp1
1379 define i1 @auto_gen_117(double %a, double %b) {
1380 ; CHECK-LABEL: @auto_gen_117(
1381 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1382 ; CHECK-NEXT: ret i1 [[TMP1]]
1384 %cmp = fcmp uno double %a, %b
1385 %cmp1 = fcmp ule double %a, %b
1386 %retval = and i1 %cmp, %cmp1
1390 define i1 @auto_gen_118(double %a, double %b) {
1391 ; CHECK-LABEL: @auto_gen_118(
1392 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1393 ; CHECK-NEXT: ret i1 [[TMP1]]
1395 %cmp = fcmp uno double %a, %b
1396 %cmp1 = fcmp une double %a, %b
1397 %retval = and i1 %cmp, %cmp1
1401 define i1 @auto_gen_119(double %a, double %b) {
1402 ; CHECK-LABEL: @auto_gen_119(
1403 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1404 ; CHECK-NEXT: ret i1 [[TMP1]]
1406 %cmp = fcmp uno double %a, %b
1407 %cmp1 = fcmp uno double %a, %b
1408 %retval = and i1 %cmp, %cmp1
1412 define i1 @auto_gen_120(double %a, double %b) {
1413 ; CHECK-LABEL: @auto_gen_120(
1414 ; CHECK-NEXT: ret i1 false
1416 %cmp = fcmp true double %a, %b
1417 %cmp1 = fcmp false double %a, %b
1418 %retval = and i1 %cmp, %cmp1
1422 define i1 @auto_gen_121(double %a, double %b) {
1423 ; CHECK-LABEL: @auto_gen_121(
1424 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1425 ; CHECK-NEXT: ret i1 [[CMP1]]
1427 %cmp = fcmp true double %a, %b
1428 %cmp1 = fcmp oeq double %a, %b
1429 %retval = and i1 %cmp, %cmp1
1433 define i1 @auto_gen_122(double %a, double %b) {
1434 ; CHECK-LABEL: @auto_gen_122(
1435 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1436 ; CHECK-NEXT: ret i1 [[CMP1]]
1438 %cmp = fcmp true double %a, %b
1439 %cmp1 = fcmp ogt double %a, %b
1440 %retval = and i1 %cmp, %cmp1
1444 define i1 @auto_gen_123(double %a, double %b) {
1445 ; CHECK-LABEL: @auto_gen_123(
1446 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1447 ; CHECK-NEXT: ret i1 [[CMP1]]
1449 %cmp = fcmp true double %a, %b
1450 %cmp1 = fcmp oge double %a, %b
1451 %retval = and i1 %cmp, %cmp1
1455 define i1 @auto_gen_124(double %a, double %b) {
1456 ; CHECK-LABEL: @auto_gen_124(
1457 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1458 ; CHECK-NEXT: ret i1 [[CMP1]]
1460 %cmp = fcmp true double %a, %b
1461 %cmp1 = fcmp olt double %a, %b
1462 %retval = and i1 %cmp, %cmp1
1466 define i1 @auto_gen_125(double %a, double %b) {
1467 ; CHECK-LABEL: @auto_gen_125(
1468 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1469 ; CHECK-NEXT: ret i1 [[CMP1]]
1471 %cmp = fcmp true double %a, %b
1472 %cmp1 = fcmp ole double %a, %b
1473 %retval = and i1 %cmp, %cmp1
1477 define i1 @auto_gen_126(double %a, double %b) {
1478 ; CHECK-LABEL: @auto_gen_126(
1479 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1480 ; CHECK-NEXT: ret i1 [[CMP1]]
1482 %cmp = fcmp true double %a, %b
1483 %cmp1 = fcmp one double %a, %b
1484 %retval = and i1 %cmp, %cmp1
1488 define i1 @auto_gen_127(double %a, double %b) {
1489 ; CHECK-LABEL: @auto_gen_127(
1490 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1491 ; CHECK-NEXT: ret i1 [[CMP1]]
1493 %cmp = fcmp true double %a, %b
1494 %cmp1 = fcmp ord double %a, %b
1495 %retval = and i1 %cmp, %cmp1
1499 define i1 @auto_gen_128(double %a, double %b) {
1500 ; CHECK-LABEL: @auto_gen_128(
1501 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1502 ; CHECK-NEXT: ret i1 [[CMP1]]
1504 %cmp = fcmp true double %a, %b
1505 %cmp1 = fcmp ueq double %a, %b
1506 %retval = and i1 %cmp, %cmp1
1510 define i1 @auto_gen_129(double %a, double %b) {
1511 ; CHECK-LABEL: @auto_gen_129(
1512 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1513 ; CHECK-NEXT: ret i1 [[CMP1]]
1515 %cmp = fcmp true double %a, %b
1516 %cmp1 = fcmp ugt double %a, %b
1517 %retval = and i1 %cmp, %cmp1
1521 define i1 @auto_gen_130(double %a, double %b) {
1522 ; CHECK-LABEL: @auto_gen_130(
1523 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
1524 ; CHECK-NEXT: ret i1 [[CMP1]]
1526 %cmp = fcmp true double %a, %b
1527 %cmp1 = fcmp uge double %a, %b
1528 %retval = and i1 %cmp, %cmp1
1532 define i1 @auto_gen_131(double %a, double %b) {
1533 ; CHECK-LABEL: @auto_gen_131(
1534 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
1535 ; CHECK-NEXT: ret i1 [[CMP1]]
1537 %cmp = fcmp true double %a, %b
1538 %cmp1 = fcmp ult double %a, %b
1539 %retval = and i1 %cmp, %cmp1
1543 define i1 @auto_gen_132(double %a, double %b) {
1544 ; CHECK-LABEL: @auto_gen_132(
1545 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
1546 ; CHECK-NEXT: ret i1 [[CMP1]]
1548 %cmp = fcmp true double %a, %b
1549 %cmp1 = fcmp ule double %a, %b
1550 %retval = and i1 %cmp, %cmp1
1554 define i1 @auto_gen_133(double %a, double %b) {
1555 ; CHECK-LABEL: @auto_gen_133(
1556 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
1557 ; CHECK-NEXT: ret i1 [[CMP1]]
1559 %cmp = fcmp true double %a, %b
1560 %cmp1 = fcmp une double %a, %b
1561 %retval = and i1 %cmp, %cmp1
1565 define i1 @auto_gen_134(double %a, double %b) {
1566 ; CHECK-LABEL: @auto_gen_134(
1567 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1568 ; CHECK-NEXT: ret i1 [[CMP1]]
1570 %cmp = fcmp true double %a, %b
1571 %cmp1 = fcmp uno double %a, %b
1572 %retval = and i1 %cmp, %cmp1
1576 define i1 @auto_gen_135(double %a, double %b) {
1577 ; CHECK-LABEL: @auto_gen_135(
1578 ; CHECK-NEXT: ret i1 true
1580 %cmp = fcmp true double %a, %b
1581 %cmp1 = fcmp true double %a, %b
1582 %retval = and i1 %cmp, %cmp1