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: [[AND:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]]
7 ; CHECK-NEXT: ret i1 [[AND]]
9 %cmp1 = fcmp ord double %x, 0.0
10 %cmp2 = fcmp ord double %y, 0.0
11 %and = and i1 %cmp1, %cmp2
15 ; TODO: this can be supported by freezing %y
16 define i1 @PR1738_logical(double %x, double %y) {
17 ; CHECK-LABEL: @PR1738_logical(
18 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[X:%.*]], 0.000000e+00
19 ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord double [[Y:%.*]], 0.000000e+00
20 ; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false
21 ; CHECK-NEXT: ret i1 [[AND]]
23 %cmp1 = fcmp ord double %x, 0.0
24 %cmp2 = fcmp ord double %y, 0.0
25 %and = select i1 %cmp1, i1 %cmp2, i1 false
29 define i1 @PR1738_logical_noundef(double %x, double noundef %y) {
30 ; CHECK-LABEL: @PR1738_logical_noundef(
31 ; CHECK-NEXT: [[AND:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]]
32 ; CHECK-NEXT: ret i1 [[AND]]
34 %cmp1 = fcmp ord double %x, 0.0
35 %cmp2 = fcmp ord double %y, 0.0
36 %and = select i1 %cmp1, i1 %cmp2, i1 false
40 define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) {
41 ; CHECK-LABEL: @PR1738_vec_undef(
42 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> [[X:%.*]], <double 0.000000e+00, double undef>
43 ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord <2 x double> [[Y:%.*]], <double undef, double 0.000000e+00>
44 ; CHECK-NEXT: [[OR:%.*]] = and <2 x i1> [[CMP1]], [[CMP2]]
45 ; CHECK-NEXT: ret <2 x i1> [[OR]]
47 %cmp1 = fcmp ord <2 x double> %x, <double 0.0, double undef>
48 %cmp2 = fcmp ord <2 x double> %y, <double undef, double 0.0>
49 %or = and <2 x i1> %cmp1, %cmp2
53 define <2 x i1> @PR1738_vec_poison(<2 x double> %x, <2 x double> %y) {
54 ; CHECK-LABEL: @PR1738_vec_poison(
55 ; CHECK-NEXT: [[OR:%.*]] = fcmp ord <2 x double> [[X:%.*]], [[Y:%.*]]
56 ; CHECK-NEXT: ret <2 x i1> [[OR]]
58 %cmp1 = fcmp ord <2 x double> %x, <double 0.0, double poison>
59 %cmp2 = fcmp ord <2 x double> %y, <double poison, double 0.0>
60 %or = and <2 x i1> %cmp1, %cmp2
64 define i1 @PR41069(i1 %z, float %c, float %d) {
65 ; CHECK-LABEL: @PR41069(
66 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord float [[D:%.*]], [[C:%.*]]
67 ; CHECK-NEXT: [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]
68 ; CHECK-NEXT: ret i1 [[R]]
70 %ord1 = fcmp arcp ord float %c, 0.0
71 %and = and i1 %ord1, %z
72 %ord2 = fcmp afn ord float %d, 0.0
73 %r = and i1 %and, %ord2
77 ; FIXME: this can be supported by freezing %d
78 define i1 @PR41069_logical(i1 %z, float %c, float %d) {
79 ; CHECK-LABEL: @PR41069_logical(
80 ; CHECK-NEXT: [[ORD1:%.*]] = fcmp arcp ord float [[C:%.*]], 0.000000e+00
81 ; CHECK-NEXT: [[AND:%.*]] = select i1 [[ORD1]], i1 [[Z:%.*]], i1 false
82 ; CHECK-NEXT: [[ORD2:%.*]] = fcmp afn ord float [[D:%.*]], 0.000000e+00
83 ; CHECK-NEXT: [[R:%.*]] = select i1 [[AND]], i1 [[ORD2]], i1 false
84 ; CHECK-NEXT: ret i1 [[R]]
86 %ord1 = fcmp arcp ord float %c, 0.0
87 %and = select i1 %ord1, i1 %z, i1 false
88 %ord2 = fcmp afn ord float %d, 0.0
89 %r = select i1 %and, i1 %ord2, i1 false
93 define i1 @PR41069_commute(i1 %z, float %c, float %d) {
94 ; CHECK-LABEL: @PR41069_commute(
95 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ninf ord float [[D:%.*]], [[C:%.*]]
96 ; CHECK-NEXT: [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]
97 ; CHECK-NEXT: ret i1 [[R]]
99 %ord1 = fcmp ninf ord float %c, 0.0
100 %and = and i1 %ord1, %z
101 %ord2 = fcmp ninf reassoc ord float %d, 0.0
102 %r = and i1 %ord2, %and
106 ; TODO: this should be fixed using freeze
107 define i1 @PR41069_commute_logical(i1 %z, float %c, float %d) {
108 ; CHECK-LABEL: @PR41069_commute_logical(
109 ; CHECK-NEXT: [[ORD1:%.*]] = fcmp ninf ord float [[C:%.*]], 0.000000e+00
110 ; CHECK-NEXT: [[ORD2:%.*]] = fcmp reassoc ninf ord float [[D:%.*]], 0.000000e+00
111 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[ORD2]], i1 [[ORD1]], i1 false
112 ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP1]], i1 [[Z:%.*]], i1 false
113 ; CHECK-NEXT: ret i1 [[R]]
115 %ord1 = fcmp ninf ord float %c, 0.0
116 %and = select i1 %ord1, i1 %z, i1 false
117 %ord2 = fcmp ninf reassoc ord float %d, 0.0
118 %r = select i1 %ord2, i1 %and, i1 false
122 ; Commute differently and make sure vectors work.
124 define <2 x i1> @PR41069_vec(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {
125 ; CHECK-LABEL: @PR41069_vec(
126 ; CHECK-NEXT: [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]
127 ; CHECK-NEXT: [[ORD2:%.*]] = fcmp ord <2 x double> [[C:%.*]], <double 0.000000e+00, double undef>
128 ; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[ORD1]], [[ORD2]]
129 ; CHECK-NEXT: [[ORD3:%.*]] = fcmp ord <2 x double> [[D:%.*]], zeroinitializer
130 ; CHECK-NEXT: [[R:%.*]] = and <2 x i1> [[AND]], [[ORD3]]
131 ; CHECK-NEXT: ret <2 x i1> [[R]]
133 %ord1 = fcmp ord <2 x double> %a, %b
134 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>
135 %and = and <2 x i1> %ord1, %ord2
136 %ord3 = fcmp ord <2 x double> %d, zeroinitializer
137 %r = and <2 x i1> %and, %ord3
141 define <2 x i1> @PR41069_vec_commute(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {
142 ; CHECK-LABEL: @PR41069_vec_commute(
143 ; CHECK-NEXT: [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]
144 ; CHECK-NEXT: [[ORD2:%.*]] = fcmp ord <2 x double> [[C:%.*]], <double 0.000000e+00, double undef>
145 ; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[ORD1]], [[ORD2]]
146 ; CHECK-NEXT: [[ORD3:%.*]] = fcmp ord <2 x double> [[D:%.*]], zeroinitializer
147 ; CHECK-NEXT: [[R:%.*]] = and <2 x i1> [[ORD3]], [[AND]]
148 ; CHECK-NEXT: ret <2 x i1> [[R]]
150 %ord1 = fcmp ord <2 x double> %a, %b
151 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>
152 %and = and <2 x i1> %ord1, %ord2
153 %ord3 = fcmp ord <2 x double> %d, zeroinitializer
154 %r = and <2 x i1> %ord3, %and
158 define i1 @PR15737(float %a, double %b) {
159 ; CHECK-LABEL: @PR15737(
160 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00
161 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00
162 ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP1]]
163 ; CHECK-NEXT: ret i1 [[AND]]
165 %cmp = fcmp ord float %a, 0.000000e+00
166 %cmp1 = fcmp ord double %b, 0.000000e+00
167 %and = and i1 %cmp, %cmp1
171 define i1 @PR15737_logical(float %a, double %b) {
172 ; CHECK-LABEL: @PR15737_logical(
173 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00
174 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00
175 ; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP]], i1 [[CMP1]], i1 false
176 ; CHECK-NEXT: ret i1 [[AND]]
178 %cmp = fcmp ord float %a, 0.000000e+00
179 %cmp1 = fcmp ord double %b, 0.000000e+00
180 %and = select i1 %cmp, i1 %cmp1, i1 false
184 define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) {
186 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord <2 x float> [[A:%.*]], zeroinitializer
187 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> [[B:%.*]], zeroinitializer
188 ; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]]
189 ; CHECK-NEXT: ret <2 x i1> [[AND]]
191 %cmp = fcmp ord <2 x float> %a, zeroinitializer
192 %cmp1 = fcmp ord <2 x double> %b, zeroinitializer
193 %and = and <2 x i1> %cmp, %cmp1
197 define i1 @fcmp_ord_nonzero(float %x, float %y) {
198 ; CHECK-LABEL: @fcmp_ord_nonzero(
199 ; CHECK-NEXT: [[AND:%.*]] = fcmp ord float [[X:%.*]], [[Y:%.*]]
200 ; CHECK-NEXT: ret i1 [[AND]]
202 %cmp1 = fcmp ord float %x, 1.0
203 %cmp2 = fcmp ord float %y, 2.0
204 %and = and i1 %cmp1, %cmp2
208 ; TODO: this can be supported by freezing %y
209 define i1 @fcmp_ord_nonzero_logical(float %x, float %y) {
210 ; CHECK-LABEL: @fcmp_ord_nonzero_logical(
211 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord float [[X:%.*]], 0.000000e+00
212 ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord float [[Y:%.*]], 0.000000e+00
213 ; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false
214 ; CHECK-NEXT: ret i1 [[AND]]
216 %cmp1 = fcmp ord float %x, 1.0
217 %cmp2 = fcmp ord float %y, 2.0
218 %and = select i1 %cmp1, i1 %cmp2, i1 false
222 define <3 x i1> @fcmp_ord_nonzero_vec(<3 x float> %x, <3 x float> %y) {
223 ; CHECK-LABEL: @fcmp_ord_nonzero_vec(
224 ; CHECK-NEXT: [[AND:%.*]] = fcmp ord <3 x float> [[X:%.*]], [[Y:%.*]]
225 ; CHECK-NEXT: ret <3 x i1> [[AND]]
227 %cmp1 = fcmp ord <3 x float> %x, <float 1.0, float 2.0, float 3.0>
228 %cmp2 = fcmp ord <3 x float> %y, <float 3.0, float 2.0, float 1.0>
229 %and = and <3 x i1> %cmp1, %cmp2
233 define i1 @auto_gen_0(double %a, double %b) {
234 ; CHECK-LABEL: @auto_gen_0(
235 ; CHECK-NEXT: ret i1 false
237 %cmp = fcmp false double %a, %b
238 %cmp1 = fcmp false double %a, %b
239 %retval = and i1 %cmp, %cmp1
243 define i1 @auto_gen_0_logical(double %a, double %b) {
244 ; CHECK-LABEL: @auto_gen_0_logical(
245 ; CHECK-NEXT: ret i1 false
247 %cmp = fcmp false double %a, %b
248 %cmp1 = fcmp false double %a, %b
249 %retval = select i1 %cmp, i1 %cmp1, i1 false
253 define i1 @auto_gen_0_logical_fmf(double %a, double %b) {
254 ; CHECK-LABEL: @auto_gen_0_logical_fmf(
255 ; CHECK-NEXT: ret i1 false
257 %cmp = fcmp false double %a, %b
258 %cmp1 = fcmp fast false double %a, %b
259 %retval = select i1 %cmp, i1 %cmp1, i1 false
263 define i1 @auto_gen_1(double %a, double %b) {
264 ; CHECK-LABEL: @auto_gen_1(
265 ; CHECK-NEXT: ret i1 false
267 %cmp = fcmp oeq double %a, %b
268 %cmp1 = fcmp false double %a, %b
269 %retval = and i1 %cmp, %cmp1
273 define i1 @auto_gen_1_logical(double %a, double %b) {
274 ; CHECK-LABEL: @auto_gen_1_logical(
275 ; CHECK-NEXT: ret i1 false
277 %cmp = fcmp oeq double %a, %b
278 %cmp1 = fcmp false double %a, %b
279 %retval = select i1 %cmp, i1 %cmp1, i1 false
283 define i1 @auto_gen_1_logical_fmf(double %a, double %b) {
284 ; CHECK-LABEL: @auto_gen_1_logical_fmf(
285 ; CHECK-NEXT: ret i1 false
287 %cmp = fcmp fast oeq double %a, %b
288 %cmp1 = fcmp fast false double %a, %b
289 %retval = select i1 %cmp, i1 %cmp1, i1 false
293 define i1 @auto_gen_2(double %a, double %b) {
294 ; CHECK-LABEL: @auto_gen_2(
295 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
296 ; CHECK-NEXT: ret i1 [[RETVAL]]
298 %cmp = fcmp oeq double %a, %b
299 %cmp1 = fcmp oeq double %a, %b
300 %retval = and i1 %cmp, %cmp1
304 define i1 @auto_gen_2_logical(double %a, double %b) {
305 ; CHECK-LABEL: @auto_gen_2_logical(
306 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
307 ; CHECK-NEXT: ret i1 [[RETVAL]]
309 %cmp = fcmp oeq double %a, %b
310 %cmp1 = fcmp oeq double %a, %b
311 %retval = select i1 %cmp, i1 %cmp1, i1 false
315 define i1 @auto_gen_2_logical_fmf(double %a, double %b) {
316 ; CHECK-LABEL: @auto_gen_2_logical_fmf(
317 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
318 ; CHECK-NEXT: ret i1 [[RETVAL]]
320 %cmp = fcmp oeq double %a, %b
321 %cmp1 = fcmp fast oeq double %a, %b
322 %retval = select i1 %cmp, i1 %cmp1, i1 false
326 define i1 @auto_gen_3(double %a, double %b) {
327 ; CHECK-LABEL: @auto_gen_3(
328 ; CHECK-NEXT: ret i1 false
330 %cmp = fcmp ogt double %a, %b
331 %cmp1 = fcmp false double %a, %b
332 %retval = and i1 %cmp, %cmp1
336 define i1 @auto_gen_3_logical(double %a, double %b) {
337 ; CHECK-LABEL: @auto_gen_3_logical(
338 ; CHECK-NEXT: ret i1 false
340 %cmp = fcmp ogt double %a, %b
341 %cmp1 = fcmp false double %a, %b
342 %retval = select i1 %cmp, i1 %cmp1, i1 false
346 define i1 @auto_gen_3_logical_fmf(double %a, double %b) {
347 ; CHECK-LABEL: @auto_gen_3_logical_fmf(
348 ; CHECK-NEXT: ret i1 false
350 %cmp = fcmp fast ogt double %a, %b
351 %cmp1 = fcmp fast false double %a, %b
352 %retval = select i1 %cmp, i1 %cmp1, i1 false
356 define i1 @auto_gen_4(double %a, double %b) {
357 ; CHECK-LABEL: @auto_gen_4(
358 ; CHECK-NEXT: ret i1 false
360 %cmp = fcmp ogt double %a, %b
361 %cmp1 = fcmp oeq double %a, %b
362 %retval = and i1 %cmp, %cmp1
366 define i1 @auto_gen_4_logical(double %a, double %b) {
367 ; CHECK-LABEL: @auto_gen_4_logical(
368 ; CHECK-NEXT: ret i1 false
370 %cmp = fcmp ogt double %a, %b
371 %cmp1 = fcmp oeq double %a, %b
372 %retval = select i1 %cmp, i1 %cmp1, i1 false
376 define i1 @auto_gen_4_logical_fmf(double %a, double %b) {
377 ; CHECK-LABEL: @auto_gen_4_logical_fmf(
378 ; CHECK-NEXT: ret i1 false
380 %cmp = fcmp ogt double %a, %b
381 %cmp1 = fcmp fast oeq double %a, %b
382 %retval = select i1 %cmp, i1 %cmp1, i1 false
386 define i1 @auto_gen_5(double %a, double %b) {
387 ; CHECK-LABEL: @auto_gen_5(
388 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
389 ; CHECK-NEXT: ret i1 [[RETVAL]]
391 %cmp = fcmp ogt double %a, %b
392 %cmp1 = fcmp ogt double %a, %b
393 %retval = and i1 %cmp, %cmp1
397 define i1 @auto_gen_5_logical(double %a, double %b) {
398 ; CHECK-LABEL: @auto_gen_5_logical(
399 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
400 ; CHECK-NEXT: ret i1 [[RETVAL]]
402 %cmp = fcmp ogt double %a, %b
403 %cmp1 = fcmp ogt double %a, %b
404 %retval = select i1 %cmp, i1 %cmp1, i1 false
408 define i1 @auto_gen_5_logical_fmf(double %a, double %b) {
409 ; CHECK-LABEL: @auto_gen_5_logical_fmf(
410 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
411 ; CHECK-NEXT: ret i1 [[RETVAL]]
413 %cmp = fcmp fast ogt double %a, %b
414 %cmp1 = fcmp fast ogt double %a, %b
415 %retval = select i1 %cmp, i1 %cmp1, i1 false
419 define i1 @auto_gen_6(double %a, double %b) {
420 ; CHECK-LABEL: @auto_gen_6(
421 ; CHECK-NEXT: ret i1 false
423 %cmp = fcmp oge double %a, %b
424 %cmp1 = fcmp false double %a, %b
425 %retval = and i1 %cmp, %cmp1
429 define i1 @auto_gen_6_logical(double %a, double %b) {
430 ; CHECK-LABEL: @auto_gen_6_logical(
431 ; CHECK-NEXT: ret i1 false
433 %cmp = fcmp oge double %a, %b
434 %cmp1 = fcmp false double %a, %b
435 %retval = select i1 %cmp, i1 %cmp1, i1 false
439 define i1 @auto_gen_6_logical_fmf(double %a, double %b) {
440 ; CHECK-LABEL: @auto_gen_6_logical_fmf(
441 ; CHECK-NEXT: ret i1 false
443 %cmp = fcmp oge double %a, %b
444 %cmp1 = fcmp fast false double %a, %b
445 %retval = select i1 %cmp, i1 %cmp1, i1 false
449 define i1 @auto_gen_7(double %a, double %b) {
450 ; CHECK-LABEL: @auto_gen_7(
451 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
452 ; CHECK-NEXT: ret i1 [[RETVAL]]
454 %cmp = fcmp oge double %a, %b
455 %cmp1 = fcmp oeq double %a, %b
456 %retval = and i1 %cmp, %cmp1
460 define i1 @auto_gen_7_logical(double %a, double %b) {
461 ; CHECK-LABEL: @auto_gen_7_logical(
462 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
463 ; CHECK-NEXT: ret i1 [[RETVAL]]
465 %cmp = fcmp oge double %a, %b
466 %cmp1 = fcmp oeq double %a, %b
467 %retval = select i1 %cmp, i1 %cmp1, i1 false
471 define i1 @auto_gen_7_logical_fmf(double %a, double %b) {
472 ; CHECK-LABEL: @auto_gen_7_logical_fmf(
473 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
474 ; CHECK-NEXT: ret i1 [[RETVAL]]
476 %cmp = fcmp fast oge double %a, %b
477 %cmp1 = fcmp fast oeq double %a, %b
478 %retval = select i1 %cmp, i1 %cmp1, i1 false
482 define i1 @auto_gen_8(double %a, double %b) {
483 ; CHECK-LABEL: @auto_gen_8(
484 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
485 ; CHECK-NEXT: ret i1 [[RETVAL]]
487 %cmp = fcmp oge double %a, %b
488 %cmp1 = fcmp ogt double %a, %b
489 %retval = and i1 %cmp, %cmp1
493 define i1 @auto_gen_8_logical(double %a, double %b) {
494 ; CHECK-LABEL: @auto_gen_8_logical(
495 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
496 ; CHECK-NEXT: ret i1 [[RETVAL]]
498 %cmp = fcmp oge double %a, %b
499 %cmp1 = fcmp ogt double %a, %b
500 %retval = select i1 %cmp, i1 %cmp1, i1 false
504 define i1 @auto_gen_8_logical_fmf(double %a, double %b) {
505 ; CHECK-LABEL: @auto_gen_8_logical_fmf(
506 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
507 ; CHECK-NEXT: ret i1 [[RETVAL]]
509 %cmp = fcmp oge double %a, %b
510 %cmp1 = fcmp fast ogt double %a, %b
511 %retval = select i1 %cmp, i1 %cmp1, i1 false
515 define i1 @auto_gen_9(double %a, double %b) {
516 ; CHECK-LABEL: @auto_gen_9(
517 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
518 ; CHECK-NEXT: ret i1 [[RETVAL]]
520 %cmp = fcmp oge double %a, %b
521 %cmp1 = fcmp oge double %a, %b
522 %retval = and i1 %cmp, %cmp1
526 define i1 @auto_gen_9_logical(double %a, double %b) {
527 ; CHECK-LABEL: @auto_gen_9_logical(
528 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
529 ; CHECK-NEXT: ret i1 [[RETVAL]]
531 %cmp = fcmp oge double %a, %b
532 %cmp1 = fcmp oge double %a, %b
533 %retval = select i1 %cmp, i1 %cmp1, i1 false
537 define i1 @auto_gen_9_logical_fmf(double %a, double %b) {
538 ; CHECK-LABEL: @auto_gen_9_logical_fmf(
539 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]
540 ; CHECK-NEXT: ret i1 [[RETVAL]]
542 %cmp = fcmp fast oge double %a, %b
543 %cmp1 = fcmp fast oge double %a, %b
544 %retval = select i1 %cmp, i1 %cmp1, i1 false
548 define i1 @auto_gen_10(double %a, double %b) {
549 ; CHECK-LABEL: @auto_gen_10(
550 ; CHECK-NEXT: ret i1 false
552 %cmp = fcmp olt double %a, %b
553 %cmp1 = fcmp false double %a, %b
554 %retval = and i1 %cmp, %cmp1
558 define i1 @auto_gen_10_logical(double %a, double %b) {
559 ; CHECK-LABEL: @auto_gen_10_logical(
560 ; CHECK-NEXT: ret i1 false
562 %cmp = fcmp olt double %a, %b
563 %cmp1 = fcmp false double %a, %b
564 %retval = select i1 %cmp, i1 %cmp1, i1 false
568 define i1 @auto_gen_10_logical_fmf(double %a, double %b) {
569 ; CHECK-LABEL: @auto_gen_10_logical_fmf(
570 ; CHECK-NEXT: ret i1 false
572 %cmp = fcmp olt double %a, %b
573 %cmp1 = fcmp fast false double %a, %b
574 %retval = select i1 %cmp, i1 %cmp1, i1 false
578 define i1 @auto_gen_11(double %a, double %b) {
579 ; CHECK-LABEL: @auto_gen_11(
580 ; CHECK-NEXT: ret i1 false
582 %cmp = fcmp olt double %a, %b
583 %cmp1 = fcmp oeq double %a, %b
584 %retval = and i1 %cmp, %cmp1
588 define i1 @auto_gen_11_logical(double %a, double %b) {
589 ; CHECK-LABEL: @auto_gen_11_logical(
590 ; CHECK-NEXT: ret i1 false
592 %cmp = fcmp olt double %a, %b
593 %cmp1 = fcmp oeq double %a, %b
594 %retval = select i1 %cmp, i1 %cmp1, i1 false
598 define i1 @auto_gen_11_logical_fmf(double %a, double %b) {
599 ; CHECK-LABEL: @auto_gen_11_logical_fmf(
600 ; CHECK-NEXT: ret i1 false
602 %cmp = fcmp fast olt double %a, %b
603 %cmp1 = fcmp fast oeq double %a, %b
604 %retval = select i1 %cmp, i1 %cmp1, i1 false
608 define i1 @auto_gen_12(double %a, double %b) {
609 ; CHECK-LABEL: @auto_gen_12(
610 ; CHECK-NEXT: ret i1 false
612 %cmp = fcmp olt double %a, %b
613 %cmp1 = fcmp ogt double %a, %b
614 %retval = and i1 %cmp, %cmp1
618 define i1 @auto_gen_12_logical(double %a, double %b) {
619 ; CHECK-LABEL: @auto_gen_12_logical(
620 ; CHECK-NEXT: ret i1 false
622 %cmp = fcmp olt double %a, %b
623 %cmp1 = fcmp ogt double %a, %b
624 %retval = select i1 %cmp, i1 %cmp1, i1 false
628 define i1 @auto_gen_12_logical_fmf(double %a, double %b) {
629 ; CHECK-LABEL: @auto_gen_12_logical_fmf(
630 ; CHECK-NEXT: ret i1 false
632 %cmp = fcmp olt double %a, %b
633 %cmp1 = fcmp fast ogt double %a, %b
634 %retval = select i1 %cmp, i1 %cmp1, i1 false
638 define i1 @auto_gen_13(double %a, double %b) {
639 ; CHECK-LABEL: @auto_gen_13(
640 ; CHECK-NEXT: ret i1 false
642 %cmp = fcmp olt double %a, %b
643 %cmp1 = fcmp oge double %a, %b
644 %retval = and i1 %cmp, %cmp1
648 define i1 @auto_gen_13_logical(double %a, double %b) {
649 ; CHECK-LABEL: @auto_gen_13_logical(
650 ; CHECK-NEXT: ret i1 false
652 %cmp = fcmp olt double %a, %b
653 %cmp1 = fcmp oge double %a, %b
654 %retval = select i1 %cmp, i1 %cmp1, i1 false
658 define i1 @auto_gen_13_logical_fmf(double %a, double %b) {
659 ; CHECK-LABEL: @auto_gen_13_logical_fmf(
660 ; CHECK-NEXT: ret i1 false
662 %cmp = fcmp fast olt double %a, %b
663 %cmp1 = fcmp fast oge double %a, %b
664 %retval = select i1 %cmp, i1 %cmp1, i1 false
668 define i1 @auto_gen_14(double %a, double %b) {
669 ; CHECK-LABEL: @auto_gen_14(
670 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
671 ; CHECK-NEXT: ret i1 [[RETVAL]]
673 %cmp = fcmp olt double %a, %b
674 %cmp1 = fcmp olt double %a, %b
675 %retval = and i1 %cmp, %cmp1
679 define i1 @auto_gen_14_logical(double %a, double %b) {
680 ; CHECK-LABEL: @auto_gen_14_logical(
681 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
682 ; CHECK-NEXT: ret i1 [[RETVAL]]
684 %cmp = fcmp olt double %a, %b
685 %cmp1 = fcmp olt double %a, %b
686 %retval = select i1 %cmp, i1 %cmp1, i1 false
690 define i1 @auto_gen_14_logical_fmf(double %a, double %b) {
691 ; CHECK-LABEL: @auto_gen_14_logical_fmf(
692 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
693 ; CHECK-NEXT: ret i1 [[RETVAL]]
695 %cmp = fcmp olt double %a, %b
696 %cmp1 = fcmp fast olt double %a, %b
697 %retval = select i1 %cmp, i1 %cmp1, i1 false
701 define i1 @auto_gen_15(double %a, double %b) {
702 ; CHECK-LABEL: @auto_gen_15(
703 ; CHECK-NEXT: ret i1 false
705 %cmp = fcmp ole double %a, %b
706 %cmp1 = fcmp false double %a, %b
707 %retval = and i1 %cmp, %cmp1
711 define i1 @auto_gen_15_logical(double %a, double %b) {
712 ; CHECK-LABEL: @auto_gen_15_logical(
713 ; CHECK-NEXT: ret i1 false
715 %cmp = fcmp ole double %a, %b
716 %cmp1 = fcmp false double %a, %b
717 %retval = select i1 %cmp, i1 %cmp1, i1 false
721 define i1 @auto_gen_15_logical_fmf(double %a, double %b) {
722 ; CHECK-LABEL: @auto_gen_15_logical_fmf(
723 ; CHECK-NEXT: ret i1 false
725 %cmp = fcmp fast ole double %a, %b
726 %cmp1 = fcmp fast false double %a, %b
727 %retval = select i1 %cmp, i1 %cmp1, i1 false
731 define i1 @auto_gen_16(double %a, double %b) {
732 ; CHECK-LABEL: @auto_gen_16(
733 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
734 ; CHECK-NEXT: ret i1 [[RETVAL]]
736 %cmp = fcmp ole double %a, %b
737 %cmp1 = fcmp oeq double %a, %b
738 %retval = and i1 %cmp, %cmp1
742 define i1 @auto_gen_16_logical(double %a, double %b) {
743 ; CHECK-LABEL: @auto_gen_16_logical(
744 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
745 ; CHECK-NEXT: ret i1 [[RETVAL]]
747 %cmp = fcmp ole double %a, %b
748 %cmp1 = fcmp oeq double %a, %b
749 %retval = select i1 %cmp, i1 %cmp1, i1 false
753 define i1 @auto_gen_16_logical_fmf(double %a, double %b) {
754 ; CHECK-LABEL: @auto_gen_16_logical_fmf(
755 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
756 ; CHECK-NEXT: ret i1 [[RETVAL]]
758 %cmp = fcmp ole double %a, %b
759 %cmp1 = fcmp fast oeq double %a, %b
760 %retval = select i1 %cmp, i1 %cmp1, i1 false
764 define i1 @auto_gen_17(double %a, double %b) {
765 ; CHECK-LABEL: @auto_gen_17(
766 ; CHECK-NEXT: ret i1 false
768 %cmp = fcmp ole double %a, %b
769 %cmp1 = fcmp ogt double %a, %b
770 %retval = and i1 %cmp, %cmp1
774 define i1 @auto_gen_17_logical(double %a, double %b) {
775 ; CHECK-LABEL: @auto_gen_17_logical(
776 ; CHECK-NEXT: ret i1 false
778 %cmp = fcmp ole double %a, %b
779 %cmp1 = fcmp ogt double %a, %b
780 %retval = select i1 %cmp, i1 %cmp1, i1 false
784 define i1 @auto_gen_17_logical_fmf(double %a, double %b) {
785 ; CHECK-LABEL: @auto_gen_17_logical_fmf(
786 ; CHECK-NEXT: ret i1 false
788 %cmp = fcmp fast ole double %a, %b
789 %cmp1 = fcmp fast ogt double %a, %b
790 %retval = select i1 %cmp, i1 %cmp1, i1 false
794 define i1 @auto_gen_18(double %a, double %b) {
795 ; CHECK-LABEL: @auto_gen_18(
796 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
797 ; CHECK-NEXT: ret i1 [[RETVAL]]
799 %cmp = fcmp ole double %a, %b
800 %cmp1 = fcmp oge double %a, %b
801 %retval = and i1 %cmp, %cmp1
805 define i1 @auto_gen_18_logical(double %a, double %b) {
806 ; CHECK-LABEL: @auto_gen_18_logical(
807 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
808 ; CHECK-NEXT: ret i1 [[RETVAL]]
810 %cmp = fcmp ole double %a, %b
811 %cmp1 = fcmp oge double %a, %b
812 %retval = select i1 %cmp, i1 %cmp1, i1 false
816 define i1 @auto_gen_18_logical_fmf(double %a, double %b) {
817 ; CHECK-LABEL: @auto_gen_18_logical_fmf(
818 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
819 ; CHECK-NEXT: ret i1 [[RETVAL]]
821 %cmp = fcmp ole double %a, %b
822 %cmp1 = fcmp fast oge double %a, %b
823 %retval = select i1 %cmp, i1 %cmp1, i1 false
827 define i1 @auto_gen_19(double %a, double %b) {
828 ; CHECK-LABEL: @auto_gen_19(
829 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
830 ; CHECK-NEXT: ret i1 [[RETVAL]]
832 %cmp = fcmp ole double %a, %b
833 %cmp1 = fcmp olt double %a, %b
834 %retval = and i1 %cmp, %cmp1
838 define i1 @auto_gen_19_logical(double %a, double %b) {
839 ; CHECK-LABEL: @auto_gen_19_logical(
840 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
841 ; CHECK-NEXT: ret i1 [[RETVAL]]
843 %cmp = fcmp ole double %a, %b
844 %cmp1 = fcmp olt double %a, %b
845 %retval = select i1 %cmp, i1 %cmp1, i1 false
849 define i1 @auto_gen_19_logical_fmf(double %a, double %b) {
850 ; CHECK-LABEL: @auto_gen_19_logical_fmf(
851 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]
852 ; CHECK-NEXT: ret i1 [[RETVAL]]
854 %cmp = fcmp fast ole double %a, %b
855 %cmp1 = fcmp fast olt double %a, %b
856 %retval = select i1 %cmp, i1 %cmp1, i1 false
860 define i1 @auto_gen_20(double %a, double %b) {
861 ; CHECK-LABEL: @auto_gen_20(
862 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
863 ; CHECK-NEXT: ret i1 [[RETVAL]]
865 %cmp = fcmp ole double %a, %b
866 %cmp1 = fcmp ole double %a, %b
867 %retval = and i1 %cmp, %cmp1
871 define i1 @auto_gen_20_logical(double %a, double %b) {
872 ; CHECK-LABEL: @auto_gen_20_logical(
873 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
874 ; CHECK-NEXT: ret i1 [[RETVAL]]
876 %cmp = fcmp ole double %a, %b
877 %cmp1 = fcmp ole double %a, %b
878 %retval = select i1 %cmp, i1 %cmp1, i1 false
882 define i1 @auto_gen_20_logical_fmf(double %a, double %b) {
883 ; CHECK-LABEL: @auto_gen_20_logical_fmf(
884 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
885 ; CHECK-NEXT: ret i1 [[RETVAL]]
887 %cmp = fcmp ole double %a, %b
888 %cmp1 = fcmp fast ole double %a, %b
889 %retval = select i1 %cmp, i1 %cmp1, i1 false
893 define i1 @auto_gen_21(double %a, double %b) {
894 ; CHECK-LABEL: @auto_gen_21(
895 ; CHECK-NEXT: ret i1 false
897 %cmp = fcmp one double %a, %b
898 %cmp1 = fcmp false double %a, %b
899 %retval = and i1 %cmp, %cmp1
903 define i1 @auto_gen_21_logical(double %a, double %b) {
904 ; CHECK-LABEL: @auto_gen_21_logical(
905 ; CHECK-NEXT: ret i1 false
907 %cmp = fcmp one double %a, %b
908 %cmp1 = fcmp false double %a, %b
909 %retval = select i1 %cmp, i1 %cmp1, i1 false
913 define i1 @auto_gen_21_logical_fmf(double %a, double %b) {
914 ; CHECK-LABEL: @auto_gen_21_logical_fmf(
915 ; CHECK-NEXT: ret i1 false
917 %cmp = fcmp fast one double %a, %b
918 %cmp1 = fcmp fast false double %a, %b
919 %retval = select i1 %cmp, i1 %cmp1, i1 false
923 define i1 @auto_gen_22(double %a, double %b) {
924 ; CHECK-LABEL: @auto_gen_22(
925 ; CHECK-NEXT: ret i1 false
927 %cmp = fcmp one double %a, %b
928 %cmp1 = fcmp oeq double %a, %b
929 %retval = and i1 %cmp, %cmp1
933 define i1 @auto_gen_22_logical(double %a, double %b) {
934 ; CHECK-LABEL: @auto_gen_22_logical(
935 ; CHECK-NEXT: ret i1 false
937 %cmp = fcmp one double %a, %b
938 %cmp1 = fcmp oeq double %a, %b
939 %retval = select i1 %cmp, i1 %cmp1, i1 false
943 define i1 @auto_gen_22_logical_fmf(double %a, double %b) {
944 ; CHECK-LABEL: @auto_gen_22_logical_fmf(
945 ; CHECK-NEXT: ret i1 false
947 %cmp = fcmp one double %a, %b
948 %cmp1 = fcmp fast oeq double %a, %b
949 %retval = select i1 %cmp, i1 %cmp1, i1 false
953 define i1 @auto_gen_23(double %a, double %b) {
954 ; CHECK-LABEL: @auto_gen_23(
955 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
956 ; CHECK-NEXT: ret i1 [[RETVAL]]
958 %cmp = fcmp one double %a, %b
959 %cmp1 = fcmp ogt double %a, %b
960 %retval = and i1 %cmp, %cmp1
964 define i1 @auto_gen_23_logical(double %a, double %b) {
965 ; CHECK-LABEL: @auto_gen_23_logical(
966 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
967 ; CHECK-NEXT: ret i1 [[RETVAL]]
969 %cmp = fcmp one double %a, %b
970 %cmp1 = fcmp ogt double %a, %b
971 %retval = select i1 %cmp, i1 %cmp1, i1 false
975 define i1 @auto_gen_23_logical_fmf(double %a, double %b) {
976 ; CHECK-LABEL: @auto_gen_23_logical_fmf(
977 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
978 ; CHECK-NEXT: ret i1 [[RETVAL]]
980 %cmp = fcmp fast one double %a, %b
981 %cmp1 = fcmp fast ogt double %a, %b
982 %retval = select i1 %cmp, i1 %cmp1, i1 false
986 define i1 @auto_gen_24(double %a, double %b) {
987 ; CHECK-LABEL: @auto_gen_24(
988 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
989 ; CHECK-NEXT: ret i1 [[RETVAL]]
991 %cmp = fcmp one double %a, %b
992 %cmp1 = fcmp oge double %a, %b
993 %retval = and i1 %cmp, %cmp1
997 define i1 @auto_gen_24_logical(double %a, double %b) {
998 ; CHECK-LABEL: @auto_gen_24_logical(
999 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1000 ; CHECK-NEXT: ret i1 [[RETVAL]]
1002 %cmp = fcmp one double %a, %b
1003 %cmp1 = fcmp oge double %a, %b
1004 %retval = select i1 %cmp, i1 %cmp1, i1 false
1008 define i1 @auto_gen_24_logical_fmf(double %a, double %b) {
1009 ; CHECK-LABEL: @auto_gen_24_logical_fmf(
1010 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1011 ; CHECK-NEXT: ret i1 [[RETVAL]]
1013 %cmp = fcmp one double %a, %b
1014 %cmp1 = fcmp fast oge double %a, %b
1015 %retval = select i1 %cmp, i1 %cmp1, i1 false
1019 define i1 @auto_gen_25(double %a, double %b) {
1020 ; CHECK-LABEL: @auto_gen_25(
1021 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1022 ; CHECK-NEXT: ret i1 [[RETVAL]]
1024 %cmp = fcmp one double %a, %b
1025 %cmp1 = fcmp olt double %a, %b
1026 %retval = and i1 %cmp, %cmp1
1030 define i1 @auto_gen_25_logical(double %a, double %b) {
1031 ; CHECK-LABEL: @auto_gen_25_logical(
1032 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1033 ; CHECK-NEXT: ret i1 [[RETVAL]]
1035 %cmp = fcmp one double %a, %b
1036 %cmp1 = fcmp olt double %a, %b
1037 %retval = select i1 %cmp, i1 %cmp1, i1 false
1041 define i1 @auto_gen_25_logical_fmf(double %a, double %b) {
1042 ; CHECK-LABEL: @auto_gen_25_logical_fmf(
1043 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]
1044 ; CHECK-NEXT: ret i1 [[RETVAL]]
1046 %cmp = fcmp fast one double %a, %b
1047 %cmp1 = fcmp fast olt double %a, %b
1048 %retval = select i1 %cmp, i1 %cmp1, i1 false
1052 define i1 @auto_gen_26(double %a, double %b) {
1053 ; CHECK-LABEL: @auto_gen_26(
1054 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1055 ; CHECK-NEXT: ret i1 [[RETVAL]]
1057 %cmp = fcmp one double %a, %b
1058 %cmp1 = fcmp ole double %a, %b
1059 %retval = and i1 %cmp, %cmp1
1063 define i1 @auto_gen_26_logical(double %a, double %b) {
1064 ; CHECK-LABEL: @auto_gen_26_logical(
1065 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1066 ; CHECK-NEXT: ret i1 [[RETVAL]]
1068 %cmp = fcmp one double %a, %b
1069 %cmp1 = fcmp ole double %a, %b
1070 %retval = select i1 %cmp, i1 %cmp1, i1 false
1074 define i1 @auto_gen_26_logical_fmf(double %a, double %b) {
1075 ; CHECK-LABEL: @auto_gen_26_logical_fmf(
1076 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1077 ; CHECK-NEXT: ret i1 [[RETVAL]]
1079 %cmp = fcmp one double %a, %b
1080 %cmp1 = fcmp fast ole double %a, %b
1081 %retval = select i1 %cmp, i1 %cmp1, i1 false
1085 define i1 @auto_gen_27(double %a, double %b) {
1086 ; CHECK-LABEL: @auto_gen_27(
1087 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1088 ; CHECK-NEXT: ret i1 [[RETVAL]]
1090 %cmp = fcmp one double %a, %b
1091 %cmp1 = fcmp one double %a, %b
1092 %retval = and i1 %cmp, %cmp1
1096 define i1 @auto_gen_27_logical(double %a, double %b) {
1097 ; CHECK-LABEL: @auto_gen_27_logical(
1098 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1099 ; CHECK-NEXT: ret i1 [[RETVAL]]
1101 %cmp = fcmp one double %a, %b
1102 %cmp1 = fcmp one double %a, %b
1103 %retval = select i1 %cmp, i1 %cmp1, i1 false
1107 define i1 @auto_gen_27_logical_fmf(double %a, double %b) {
1108 ; CHECK-LABEL: @auto_gen_27_logical_fmf(
1109 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
1110 ; CHECK-NEXT: ret i1 [[RETVAL]]
1112 %cmp = fcmp fast one double %a, %b
1113 %cmp1 = fcmp fast one double %a, %b
1114 %retval = select i1 %cmp, i1 %cmp1, i1 false
1118 define i1 @auto_gen_28(double %a, double %b) {
1119 ; CHECK-LABEL: @auto_gen_28(
1120 ; CHECK-NEXT: ret i1 false
1122 %cmp = fcmp ord double %a, %b
1123 %cmp1 = fcmp false double %a, %b
1124 %retval = and i1 %cmp, %cmp1
1128 define i1 @auto_gen_28_logical(double %a, double %b) {
1129 ; CHECK-LABEL: @auto_gen_28_logical(
1130 ; CHECK-NEXT: ret i1 false
1132 %cmp = fcmp ord double %a, %b
1133 %cmp1 = fcmp false double %a, %b
1134 %retval = select i1 %cmp, i1 %cmp1, i1 false
1138 define i1 @auto_gen_28_logical_fmf(double %a, double %b) {
1139 ; CHECK-LABEL: @auto_gen_28_logical_fmf(
1140 ; CHECK-NEXT: ret i1 false
1142 %cmp = fcmp ord double %a, %b
1143 %cmp1 = fcmp fast false double %a, %b
1144 %retval = select i1 %cmp, i1 %cmp1, i1 false
1148 define i1 @auto_gen_29(double %a, double %b) {
1149 ; CHECK-LABEL: @auto_gen_29(
1150 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1151 ; CHECK-NEXT: ret i1 [[RETVAL]]
1153 %cmp = fcmp ord double %a, %b
1154 %cmp1 = fcmp oeq double %a, %b
1155 %retval = and i1 %cmp, %cmp1
1159 define i1 @auto_gen_29_logical(double %a, double %b) {
1160 ; CHECK-LABEL: @auto_gen_29_logical(
1161 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1162 ; CHECK-NEXT: ret i1 [[RETVAL]]
1164 %cmp = fcmp ord double %a, %b
1165 %cmp1 = fcmp oeq double %a, %b
1166 %retval = select i1 %cmp, i1 %cmp1, i1 false
1170 define i1 @auto_gen_29_logical_fmf(double %a, double %b) {
1171 ; CHECK-LABEL: @auto_gen_29_logical_fmf(
1172 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
1173 ; CHECK-NEXT: ret i1 [[CMP1]]
1175 %cmp = fcmp fast ord double %a, %b
1176 %cmp1 = fcmp fast oeq double %a, %b
1177 %retval = select i1 %cmp, i1 %cmp1, i1 false
1181 define i1 @auto_gen_30(double %a, double %b) {
1182 ; CHECK-LABEL: @auto_gen_30(
1183 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1184 ; CHECK-NEXT: ret i1 [[RETVAL]]
1186 %cmp = fcmp ord double %a, %b
1187 %cmp1 = fcmp ogt double %a, %b
1188 %retval = and i1 %cmp, %cmp1
1192 define i1 @auto_gen_30_logical(double %a, double %b) {
1193 ; CHECK-LABEL: @auto_gen_30_logical(
1194 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1195 ; CHECK-NEXT: ret i1 [[RETVAL]]
1197 %cmp = fcmp ord double %a, %b
1198 %cmp1 = fcmp ogt double %a, %b
1199 %retval = select i1 %cmp, i1 %cmp1, i1 false
1203 define i1 @auto_gen_30_logical_fmf(double %a, double %b) {
1204 ; CHECK-LABEL: @auto_gen_30_logical_fmf(
1205 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1206 ; CHECK-NEXT: ret i1 [[RETVAL]]
1208 %cmp = fcmp ord double %a, %b
1209 %cmp1 = fcmp fast ogt double %a, %b
1210 %retval = select i1 %cmp, i1 %cmp1, i1 false
1214 define i1 @auto_gen_31(double %a, double %b) {
1215 ; CHECK-LABEL: @auto_gen_31(
1216 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1217 ; CHECK-NEXT: ret i1 [[RETVAL]]
1219 %cmp = fcmp ord double %a, %b
1220 %cmp1 = fcmp oge double %a, %b
1221 %retval = and i1 %cmp, %cmp1
1225 define i1 @auto_gen_31_logical(double %a, double %b) {
1226 ; CHECK-LABEL: @auto_gen_31_logical(
1227 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
1228 ; CHECK-NEXT: ret i1 [[RETVAL]]
1230 %cmp = fcmp ord double %a, %b
1231 %cmp1 = fcmp oge double %a, %b
1232 %retval = select i1 %cmp, i1 %cmp1, i1 false
1236 define i1 @auto_gen_31_logical_fmf(double %a, double %b) {
1237 ; CHECK-LABEL: @auto_gen_31_logical_fmf(
1238 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]
1239 ; CHECK-NEXT: ret i1 [[CMP1]]
1241 %cmp = fcmp fast ord double %a, %b
1242 %cmp1 = fcmp fast oge double %a, %b
1243 %retval = select i1 %cmp, i1 %cmp1, i1 false
1247 define i1 @auto_gen_32(double %a, double %b) {
1248 ; CHECK-LABEL: @auto_gen_32(
1249 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1250 ; CHECK-NEXT: ret i1 [[RETVAL]]
1252 %cmp = fcmp ord double %a, %b
1253 %cmp1 = fcmp olt double %a, %b
1254 %retval = and i1 %cmp, %cmp1
1258 define i1 @auto_gen_32_logical(double %a, double %b) {
1259 ; CHECK-LABEL: @auto_gen_32_logical(
1260 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1261 ; CHECK-NEXT: ret i1 [[RETVAL]]
1263 %cmp = fcmp ord double %a, %b
1264 %cmp1 = fcmp olt double %a, %b
1265 %retval = select i1 %cmp, i1 %cmp1, i1 false
1269 define i1 @auto_gen_32_logical_fmf(double %a, double %b) {
1270 ; CHECK-LABEL: @auto_gen_32_logical_fmf(
1271 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
1272 ; CHECK-NEXT: ret i1 [[RETVAL]]
1274 %cmp = fcmp ord double %a, %b
1275 %cmp1 = fcmp fast olt double %a, %b
1276 %retval = select i1 %cmp, i1 %cmp1, i1 false
1280 define i1 @auto_gen_33(double %a, double %b) {
1281 ; CHECK-LABEL: @auto_gen_33(
1282 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1283 ; CHECK-NEXT: ret i1 [[RETVAL]]
1285 %cmp = fcmp ord double %a, %b
1286 %cmp1 = fcmp ole double %a, %b
1287 %retval = and i1 %cmp, %cmp1
1291 define i1 @auto_gen_33_logical(double %a, double %b) {
1292 ; CHECK-LABEL: @auto_gen_33_logical(
1293 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
1294 ; CHECK-NEXT: ret i1 [[RETVAL]]
1296 %cmp = fcmp ord double %a, %b
1297 %cmp1 = fcmp ole double %a, %b
1298 %retval = select i1 %cmp, i1 %cmp1, i1 false
1302 define i1 @auto_gen_33_logical_fmf(double %a, double %b) {
1303 ; CHECK-LABEL: @auto_gen_33_logical_fmf(
1304 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]
1305 ; CHECK-NEXT: ret i1 [[CMP1]]
1307 %cmp = fcmp fast ord double %a, %b
1308 %cmp1 = fcmp fast ole double %a, %b
1309 %retval = select i1 %cmp, i1 %cmp1, i1 false
1313 define i1 @auto_gen_34(double %a, double %b) {
1314 ; CHECK-LABEL: @auto_gen_34(
1315 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1316 ; CHECK-NEXT: ret i1 [[RETVAL]]
1318 %cmp = fcmp ord double %a, %b
1319 %cmp1 = fcmp one double %a, %b
1320 %retval = and i1 %cmp, %cmp1
1324 define i1 @auto_gen_34_logical(double %a, double %b) {
1325 ; CHECK-LABEL: @auto_gen_34_logical(
1326 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1327 ; CHECK-NEXT: ret i1 [[RETVAL]]
1329 %cmp = fcmp ord double %a, %b
1330 %cmp1 = fcmp one double %a, %b
1331 %retval = select i1 %cmp, i1 %cmp1, i1 false
1335 define i1 @auto_gen_34_logical_fmf(double %a, double %b) {
1336 ; CHECK-LABEL: @auto_gen_34_logical_fmf(
1337 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
1338 ; CHECK-NEXT: ret i1 [[RETVAL]]
1340 %cmp = fcmp ord double %a, %b
1341 %cmp1 = fcmp fast one double %a, %b
1342 %retval = select i1 %cmp, i1 %cmp1, i1 false
1346 define i1 @auto_gen_35(double %a, double %b) {
1347 ; CHECK-LABEL: @auto_gen_35(
1348 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1349 ; CHECK-NEXT: ret i1 [[RETVAL]]
1351 %cmp = fcmp ord double %a, %b
1352 %cmp1 = fcmp ord double %a, %b
1353 %retval = and i1 %cmp, %cmp1
1357 define i1 @auto_gen_35_logical(double %a, double %b) {
1358 ; CHECK-LABEL: @auto_gen_35_logical(
1359 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
1360 ; CHECK-NEXT: ret i1 [[RETVAL]]
1362 %cmp = fcmp ord double %a, %b
1363 %cmp1 = fcmp ord double %a, %b
1364 %retval = select i1 %cmp, i1 %cmp1, i1 false
1368 define i1 @auto_gen_35_logical_fmf(double %a, double %b) {
1369 ; CHECK-LABEL: @auto_gen_35_logical_fmf(
1370 ; CHECK-NEXT: ret i1 true
1372 %cmp = fcmp fast ord double %a, %b
1373 %cmp1 = fcmp fast ord double %a, %b
1374 %retval = select i1 %cmp, i1 %cmp1, i1 false
1378 define i1 @auto_gen_36(double %a, double %b) {
1379 ; CHECK-LABEL: @auto_gen_36(
1380 ; CHECK-NEXT: ret i1 false
1382 %cmp = fcmp ueq double %a, %b
1383 %cmp1 = fcmp false double %a, %b
1384 %retval = and i1 %cmp, %cmp1
1388 define i1 @auto_gen_36_logical(double %a, double %b) {
1389 ; CHECK-LABEL: @auto_gen_36_logical(
1390 ; CHECK-NEXT: ret i1 false
1392 %cmp = fcmp ueq double %a, %b
1393 %cmp1 = fcmp false double %a, %b
1394 %retval = select i1 %cmp, i1 %cmp1, i1 false
1398 define i1 @auto_gen_36_logical_fmf(double %a, double %b) {
1399 ; CHECK-LABEL: @auto_gen_36_logical_fmf(
1400 ; CHECK-NEXT: ret i1 false
1402 %cmp = fcmp ueq double %a, %b
1403 %cmp1 = fcmp fast false double %a, %b
1404 %retval = select i1 %cmp, i1 %cmp1, i1 false
1408 define i1 @auto_gen_37(double %a, double %b) {
1409 ; CHECK-LABEL: @auto_gen_37(
1410 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1411 ; CHECK-NEXT: ret i1 [[RETVAL]]
1413 %cmp = fcmp ueq double %a, %b
1414 %cmp1 = fcmp oeq double %a, %b
1415 %retval = and i1 %cmp, %cmp1
1419 define i1 @auto_gen_37_logical(double %a, double %b) {
1420 ; CHECK-LABEL: @auto_gen_37_logical(
1421 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1422 ; CHECK-NEXT: ret i1 [[RETVAL]]
1424 %cmp = fcmp ueq double %a, %b
1425 %cmp1 = fcmp oeq double %a, %b
1426 %retval = select i1 %cmp, i1 %cmp1, i1 false
1430 define i1 @auto_gen_37_logical_fmf(double %a, double %b) {
1431 ; CHECK-LABEL: @auto_gen_37_logical_fmf(
1432 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
1433 ; CHECK-NEXT: ret i1 [[RETVAL]]
1435 %cmp = fcmp fast ueq double %a, %b
1436 %cmp1 = fcmp fast oeq double %a, %b
1437 %retval = select i1 %cmp, i1 %cmp1, i1 false
1441 define i1 @auto_gen_38(double %a, double %b) {
1442 ; CHECK-LABEL: @auto_gen_38(
1443 ; CHECK-NEXT: ret i1 false
1445 %cmp = fcmp ueq double %a, %b
1446 %cmp1 = fcmp ogt double %a, %b
1447 %retval = and i1 %cmp, %cmp1
1451 define i1 @auto_gen_38_logical(double %a, double %b) {
1452 ; CHECK-LABEL: @auto_gen_38_logical(
1453 ; CHECK-NEXT: ret i1 false
1455 %cmp = fcmp ueq double %a, %b
1456 %cmp1 = fcmp ogt double %a, %b
1457 %retval = select i1 %cmp, i1 %cmp1, i1 false
1461 define i1 @auto_gen_38_logical_fmf(double %a, double %b) {
1462 ; CHECK-LABEL: @auto_gen_38_logical_fmf(
1463 ; CHECK-NEXT: ret i1 false
1465 %cmp = fcmp ueq double %a, %b
1466 %cmp1 = fcmp fast ogt double %a, %b
1467 %retval = select i1 %cmp, i1 %cmp1, i1 false
1471 define i1 @auto_gen_39(double %a, double %b) {
1472 ; CHECK-LABEL: @auto_gen_39(
1473 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1474 ; CHECK-NEXT: ret i1 [[RETVAL]]
1476 %cmp = fcmp ueq double %a, %b
1477 %cmp1 = fcmp oge double %a, %b
1478 %retval = and i1 %cmp, %cmp1
1482 define i1 @auto_gen_39_logical(double %a, double %b) {
1483 ; CHECK-LABEL: @auto_gen_39_logical(
1484 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1485 ; CHECK-NEXT: ret i1 [[RETVAL]]
1487 %cmp = fcmp ueq double %a, %b
1488 %cmp1 = fcmp oge double %a, %b
1489 %retval = select i1 %cmp, i1 %cmp1, i1 false
1493 define i1 @auto_gen_39_logical_fmf(double %a, double %b) {
1494 ; CHECK-LABEL: @auto_gen_39_logical_fmf(
1495 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
1496 ; CHECK-NEXT: ret i1 [[RETVAL]]
1498 %cmp = fcmp fast ueq double %a, %b
1499 %cmp1 = fcmp fast oge double %a, %b
1500 %retval = select i1 %cmp, i1 %cmp1, i1 false
1504 define i1 @auto_gen_40(double %a, double %b) {
1505 ; CHECK-LABEL: @auto_gen_40(
1506 ; CHECK-NEXT: ret i1 false
1508 %cmp = fcmp ueq double %a, %b
1509 %cmp1 = fcmp olt double %a, %b
1510 %retval = and i1 %cmp, %cmp1
1514 define i1 @auto_gen_40_logical(double %a, double %b) {
1515 ; CHECK-LABEL: @auto_gen_40_logical(
1516 ; CHECK-NEXT: ret i1 false
1518 %cmp = fcmp ueq double %a, %b
1519 %cmp1 = fcmp olt double %a, %b
1520 %retval = select i1 %cmp, i1 %cmp1, i1 false
1524 define i1 @auto_gen_40_logical_fmf(double %a, double %b) {
1525 ; CHECK-LABEL: @auto_gen_40_logical_fmf(
1526 ; CHECK-NEXT: ret i1 false
1528 %cmp = fcmp ueq double %a, %b
1529 %cmp1 = fcmp fast olt double %a, %b
1530 %retval = select i1 %cmp, i1 %cmp1, i1 false
1534 define i1 @auto_gen_41(double %a, double %b) {
1535 ; CHECK-LABEL: @auto_gen_41(
1536 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1537 ; CHECK-NEXT: ret i1 [[RETVAL]]
1539 %cmp = fcmp ueq double %a, %b
1540 %cmp1 = fcmp ole double %a, %b
1541 %retval = and i1 %cmp, %cmp1
1545 define i1 @auto_gen_41_logical(double %a, double %b) {
1546 ; CHECK-LABEL: @auto_gen_41_logical(
1547 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1548 ; CHECK-NEXT: ret i1 [[RETVAL]]
1550 %cmp = fcmp ueq double %a, %b
1551 %cmp1 = fcmp ole double %a, %b
1552 %retval = select i1 %cmp, i1 %cmp1, i1 false
1556 define i1 @auto_gen_41_logical_fmf(double %a, double %b) {
1557 ; CHECK-LABEL: @auto_gen_41_logical_fmf(
1558 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
1559 ; CHECK-NEXT: ret i1 [[RETVAL]]
1561 %cmp = fcmp fast ueq double %a, %b
1562 %cmp1 = fcmp fast ole double %a, %b
1563 %retval = select i1 %cmp, i1 %cmp1, i1 false
1567 define i1 @auto_gen_42(double %a, double %b) {
1568 ; CHECK-LABEL: @auto_gen_42(
1569 ; CHECK-NEXT: ret i1 false
1571 %cmp = fcmp ueq double %a, %b
1572 %cmp1 = fcmp one double %a, %b
1573 %retval = and i1 %cmp, %cmp1
1577 define i1 @auto_gen_42_logical(double %a, double %b) {
1578 ; CHECK-LABEL: @auto_gen_42_logical(
1579 ; CHECK-NEXT: ret i1 false
1581 %cmp = fcmp ueq double %a, %b
1582 %cmp1 = fcmp one double %a, %b
1583 %retval = select i1 %cmp, i1 %cmp1, i1 false
1587 define i1 @auto_gen_42_logical_fmf(double %a, double %b) {
1588 ; CHECK-LABEL: @auto_gen_42_logical_fmf(
1589 ; CHECK-NEXT: ret i1 false
1591 %cmp = fcmp ueq double %a, %b
1592 %cmp1 = fcmp fast one double %a, %b
1593 %retval = select i1 %cmp, i1 %cmp1, i1 false
1597 define i1 @auto_gen_43(double %a, double %b) {
1598 ; CHECK-LABEL: @auto_gen_43(
1599 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1600 ; CHECK-NEXT: ret i1 [[RETVAL]]
1602 %cmp = fcmp ueq double %a, %b
1603 %cmp1 = fcmp ord double %a, %b
1604 %retval = and i1 %cmp, %cmp1
1608 define i1 @auto_gen_43_logical(double %a, double %b) {
1609 ; CHECK-LABEL: @auto_gen_43_logical(
1610 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
1611 ; CHECK-NEXT: ret i1 [[RETVAL]]
1613 %cmp = fcmp ueq double %a, %b
1614 %cmp1 = fcmp ord double %a, %b
1615 %retval = select i1 %cmp, i1 %cmp1, i1 false
1619 define i1 @auto_gen_43_logical_fmf(double %a, double %b) {
1620 ; CHECK-LABEL: @auto_gen_43_logical_fmf(
1621 ; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]
1622 ; CHECK-NEXT: ret i1 [[CMP]]
1624 %cmp = fcmp fast ueq double %a, %b
1625 %cmp1 = fcmp fast ord double %a, %b
1626 %retval = select i1 %cmp, i1 %cmp1, i1 false
1630 define i1 @auto_gen_44(double %a, double %b) {
1631 ; CHECK-LABEL: @auto_gen_44(
1632 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1633 ; CHECK-NEXT: ret i1 [[RETVAL]]
1635 %cmp = fcmp ueq double %a, %b
1636 %cmp1 = fcmp ueq double %a, %b
1637 %retval = and i1 %cmp, %cmp1
1641 define i1 @auto_gen_44_logical(double %a, double %b) {
1642 ; CHECK-LABEL: @auto_gen_44_logical(
1643 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1644 ; CHECK-NEXT: ret i1 [[RETVAL]]
1646 %cmp = fcmp ueq double %a, %b
1647 %cmp1 = fcmp ueq double %a, %b
1648 %retval = select i1 %cmp, i1 %cmp1, i1 false
1652 define i1 @auto_gen_44_logical_fmf(double %a, double %b) {
1653 ; CHECK-LABEL: @auto_gen_44_logical_fmf(
1654 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
1655 ; CHECK-NEXT: ret i1 [[RETVAL]]
1657 %cmp = fcmp ueq double %a, %b
1658 %cmp1 = fcmp fast ueq double %a, %b
1659 %retval = select i1 %cmp, i1 %cmp1, i1 false
1663 define i1 @auto_gen_45(double %a, double %b) {
1664 ; CHECK-LABEL: @auto_gen_45(
1665 ; CHECK-NEXT: ret i1 false
1667 %cmp = fcmp ugt double %a, %b
1668 %cmp1 = fcmp false double %a, %b
1669 %retval = and i1 %cmp, %cmp1
1673 define i1 @auto_gen_45_logical(double %a, double %b) {
1674 ; CHECK-LABEL: @auto_gen_45_logical(
1675 ; CHECK-NEXT: ret i1 false
1677 %cmp = fcmp ugt double %a, %b
1678 %cmp1 = fcmp false double %a, %b
1679 %retval = select i1 %cmp, i1 %cmp1, i1 false
1683 define i1 @auto_gen_45_logical_fmf(double %a, double %b) {
1684 ; CHECK-LABEL: @auto_gen_45_logical_fmf(
1685 ; CHECK-NEXT: ret i1 false
1687 %cmp = fcmp fast ugt double %a, %b
1688 %cmp1 = fcmp fast false double %a, %b
1689 %retval = select i1 %cmp, i1 %cmp1, i1 false
1693 define i1 @auto_gen_46(double %a, double %b) {
1694 ; CHECK-LABEL: @auto_gen_46(
1695 ; CHECK-NEXT: ret i1 false
1697 %cmp = fcmp ugt double %a, %b
1698 %cmp1 = fcmp oeq double %a, %b
1699 %retval = and i1 %cmp, %cmp1
1703 define i1 @auto_gen_46_logical(double %a, double %b) {
1704 ; CHECK-LABEL: @auto_gen_46_logical(
1705 ; CHECK-NEXT: ret i1 false
1707 %cmp = fcmp ugt double %a, %b
1708 %cmp1 = fcmp oeq double %a, %b
1709 %retval = select i1 %cmp, i1 %cmp1, i1 false
1713 define i1 @auto_gen_46_logical_fmf(double %a, double %b) {
1714 ; CHECK-LABEL: @auto_gen_46_logical_fmf(
1715 ; CHECK-NEXT: ret i1 false
1717 %cmp = fcmp ugt double %a, %b
1718 %cmp1 = fcmp fast oeq double %a, %b
1719 %retval = select i1 %cmp, i1 %cmp1, i1 false
1723 define i1 @auto_gen_47(double %a, double %b) {
1724 ; CHECK-LABEL: @auto_gen_47(
1725 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1726 ; CHECK-NEXT: ret i1 [[RETVAL]]
1728 %cmp = fcmp ugt double %a, %b
1729 %cmp1 = fcmp ogt double %a, %b
1730 %retval = and i1 %cmp, %cmp1
1734 define i1 @auto_gen_47_logical(double %a, double %b) {
1735 ; CHECK-LABEL: @auto_gen_47_logical(
1736 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1737 ; CHECK-NEXT: ret i1 [[RETVAL]]
1739 %cmp = fcmp ugt double %a, %b
1740 %cmp1 = fcmp ogt double %a, %b
1741 %retval = select i1 %cmp, i1 %cmp1, i1 false
1745 define i1 @auto_gen_47_logical_fmf(double %a, double %b) {
1746 ; CHECK-LABEL: @auto_gen_47_logical_fmf(
1747 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
1748 ; CHECK-NEXT: ret i1 [[RETVAL]]
1750 %cmp = fcmp fast ugt double %a, %b
1751 %cmp1 = fcmp fast ogt double %a, %b
1752 %retval = select i1 %cmp, i1 %cmp1, i1 false
1756 define i1 @auto_gen_48(double %a, double %b) {
1757 ; CHECK-LABEL: @auto_gen_48(
1758 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1759 ; CHECK-NEXT: ret i1 [[RETVAL]]
1761 %cmp = fcmp ugt double %a, %b
1762 %cmp1 = fcmp oge double %a, %b
1763 %retval = and i1 %cmp, %cmp1
1767 define i1 @auto_gen_48_logical(double %a, double %b) {
1768 ; CHECK-LABEL: @auto_gen_48_logical(
1769 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1770 ; CHECK-NEXT: ret i1 [[RETVAL]]
1772 %cmp = fcmp ugt double %a, %b
1773 %cmp1 = fcmp oge double %a, %b
1774 %retval = select i1 %cmp, i1 %cmp1, i1 false
1778 define i1 @auto_gen_48_logical_fmf(double %a, double %b) {
1779 ; CHECK-LABEL: @auto_gen_48_logical_fmf(
1780 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1781 ; CHECK-NEXT: ret i1 [[RETVAL]]
1783 %cmp = fcmp ugt double %a, %b
1784 %cmp1 = fcmp fast oge double %a, %b
1785 %retval = select i1 %cmp, i1 %cmp1, i1 false
1789 define i1 @auto_gen_49(double %a, double %b) {
1790 ; CHECK-LABEL: @auto_gen_49(
1791 ; CHECK-NEXT: ret i1 false
1793 %cmp = fcmp ugt double %a, %b
1794 %cmp1 = fcmp olt double %a, %b
1795 %retval = and i1 %cmp, %cmp1
1799 define i1 @auto_gen_49_logical(double %a, double %b) {
1800 ; CHECK-LABEL: @auto_gen_49_logical(
1801 ; CHECK-NEXT: ret i1 false
1803 %cmp = fcmp ugt double %a, %b
1804 %cmp1 = fcmp olt double %a, %b
1805 %retval = select i1 %cmp, i1 %cmp1, i1 false
1809 define i1 @auto_gen_49_logical_fmf(double %a, double %b) {
1810 ; CHECK-LABEL: @auto_gen_49_logical_fmf(
1811 ; CHECK-NEXT: ret i1 false
1813 %cmp = fcmp fast ugt double %a, %b
1814 %cmp1 = fcmp fast olt double %a, %b
1815 %retval = select i1 %cmp, i1 %cmp1, i1 false
1819 define i1 @auto_gen_50(double %a, double %b) {
1820 ; CHECK-LABEL: @auto_gen_50(
1821 ; CHECK-NEXT: ret i1 false
1823 %cmp = fcmp ugt double %a, %b
1824 %cmp1 = fcmp ole double %a, %b
1825 %retval = and i1 %cmp, %cmp1
1829 define i1 @auto_gen_50_logical(double %a, double %b) {
1830 ; CHECK-LABEL: @auto_gen_50_logical(
1831 ; CHECK-NEXT: ret i1 false
1833 %cmp = fcmp ugt double %a, %b
1834 %cmp1 = fcmp ole double %a, %b
1835 %retval = select i1 %cmp, i1 %cmp1, i1 false
1839 define i1 @auto_gen_50_logical_fmf(double %a, double %b) {
1840 ; CHECK-LABEL: @auto_gen_50_logical_fmf(
1841 ; CHECK-NEXT: ret i1 false
1843 %cmp = fcmp ugt double %a, %b
1844 %cmp1 = fcmp fast ole double %a, %b
1845 %retval = select i1 %cmp, i1 %cmp1, i1 false
1849 define i1 @auto_gen_51(double %a, double %b) {
1850 ; CHECK-LABEL: @auto_gen_51(
1851 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1852 ; CHECK-NEXT: ret i1 [[RETVAL]]
1854 %cmp = fcmp ugt double %a, %b
1855 %cmp1 = fcmp one double %a, %b
1856 %retval = and i1 %cmp, %cmp1
1860 define i1 @auto_gen_51_logical(double %a, double %b) {
1861 ; CHECK-LABEL: @auto_gen_51_logical(
1862 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1863 ; CHECK-NEXT: ret i1 [[RETVAL]]
1865 %cmp = fcmp ugt double %a, %b
1866 %cmp1 = fcmp one double %a, %b
1867 %retval = select i1 %cmp, i1 %cmp1, i1 false
1871 define i1 @auto_gen_51_logical_fmf(double %a, double %b) {
1872 ; CHECK-LABEL: @auto_gen_51_logical_fmf(
1873 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
1874 ; CHECK-NEXT: ret i1 [[RETVAL]]
1876 %cmp = fcmp fast ugt double %a, %b
1877 %cmp1 = fcmp fast one double %a, %b
1878 %retval = select i1 %cmp, i1 %cmp1, i1 false
1882 define i1 @auto_gen_52(double %a, double %b) {
1883 ; CHECK-LABEL: @auto_gen_52(
1884 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1885 ; CHECK-NEXT: ret i1 [[RETVAL]]
1887 %cmp = fcmp ugt double %a, %b
1888 %cmp1 = fcmp ord double %a, %b
1889 %retval = and i1 %cmp, %cmp1
1893 define i1 @auto_gen_52_logical(double %a, double %b) {
1894 ; CHECK-LABEL: @auto_gen_52_logical(
1895 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
1896 ; CHECK-NEXT: ret i1 [[RETVAL]]
1898 %cmp = fcmp ugt double %a, %b
1899 %cmp1 = fcmp ord double %a, %b
1900 %retval = select i1 %cmp, i1 %cmp1, i1 false
1904 define i1 @auto_gen_52_logical_fmf(double %a, double %b) {
1905 ; CHECK-LABEL: @auto_gen_52_logical_fmf(
1906 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1907 ; CHECK-NEXT: ret i1 [[CMP]]
1909 %cmp = fcmp ugt double %a, %b
1910 %cmp1 = fcmp fast ord double %a, %b
1911 %retval = select i1 %cmp, i1 %cmp1, i1 false
1915 define i1 @auto_gen_53(double %a, double %b) {
1916 ; CHECK-LABEL: @auto_gen_53(
1917 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1918 ; CHECK-NEXT: ret i1 [[RETVAL]]
1920 %cmp = fcmp ugt double %a, %b
1921 %cmp1 = fcmp ueq double %a, %b
1922 %retval = and i1 %cmp, %cmp1
1926 define i1 @auto_gen_53_logical(double %a, double %b) {
1927 ; CHECK-LABEL: @auto_gen_53_logical(
1928 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
1929 ; CHECK-NEXT: ret i1 [[RETVAL]]
1931 %cmp = fcmp ugt double %a, %b
1932 %cmp1 = fcmp ueq double %a, %b
1933 %retval = select i1 %cmp, i1 %cmp1, i1 false
1937 define i1 @auto_gen_53_logical_fmf(double %a, double %b) {
1938 ; CHECK-LABEL: @auto_gen_53_logical_fmf(
1939 ; CHECK-NEXT: ret i1 false
1941 %cmp = fcmp fast ugt double %a, %b
1942 %cmp1 = fcmp fast ueq double %a, %b
1943 %retval = select i1 %cmp, i1 %cmp1, i1 false
1947 define i1 @auto_gen_54(double %a, double %b) {
1948 ; CHECK-LABEL: @auto_gen_54(
1949 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1950 ; CHECK-NEXT: ret i1 [[RETVAL]]
1952 %cmp = fcmp ugt double %a, %b
1953 %cmp1 = fcmp ugt double %a, %b
1954 %retval = and i1 %cmp, %cmp1
1958 define i1 @auto_gen_54_logical(double %a, double %b) {
1959 ; CHECK-LABEL: @auto_gen_54_logical(
1960 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1961 ; CHECK-NEXT: ret i1 [[RETVAL]]
1963 %cmp = fcmp ugt double %a, %b
1964 %cmp1 = fcmp ugt double %a, %b
1965 %retval = select i1 %cmp, i1 %cmp1, i1 false
1969 define i1 @auto_gen_54_logical_fmf(double %a, double %b) {
1970 ; CHECK-LABEL: @auto_gen_54_logical_fmf(
1971 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
1972 ; CHECK-NEXT: ret i1 [[RETVAL]]
1974 %cmp = fcmp ugt double %a, %b
1975 %cmp1 = fcmp fast ugt double %a, %b
1976 %retval = select i1 %cmp, i1 %cmp1, i1 false
1980 define i1 @auto_gen_55(double %a, double %b) {
1981 ; CHECK-LABEL: @auto_gen_55(
1982 ; CHECK-NEXT: ret i1 false
1984 %cmp = fcmp uge double %a, %b
1985 %cmp1 = fcmp false double %a, %b
1986 %retval = and i1 %cmp, %cmp1
1990 define i1 @auto_gen_55_logical(double %a, double %b) {
1991 ; CHECK-LABEL: @auto_gen_55_logical(
1992 ; CHECK-NEXT: ret i1 false
1994 %cmp = fcmp uge double %a, %b
1995 %cmp1 = fcmp false double %a, %b
1996 %retval = select i1 %cmp, i1 %cmp1, i1 false
2000 define i1 @auto_gen_55_logical_fmf(double %a, double %b) {
2001 ; CHECK-LABEL: @auto_gen_55_logical_fmf(
2002 ; CHECK-NEXT: ret i1 false
2004 %cmp = fcmp fast uge double %a, %b
2005 %cmp1 = fcmp fast false double %a, %b
2006 %retval = select i1 %cmp, i1 %cmp1, i1 false
2010 define i1 @auto_gen_56(double %a, double %b) {
2011 ; CHECK-LABEL: @auto_gen_56(
2012 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2013 ; CHECK-NEXT: ret i1 [[RETVAL]]
2015 %cmp = fcmp uge double %a, %b
2016 %cmp1 = fcmp oeq double %a, %b
2017 %retval = and i1 %cmp, %cmp1
2021 define i1 @auto_gen_56_logical(double %a, double %b) {
2022 ; CHECK-LABEL: @auto_gen_56_logical(
2023 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2024 ; CHECK-NEXT: ret i1 [[RETVAL]]
2026 %cmp = fcmp uge double %a, %b
2027 %cmp1 = fcmp oeq double %a, %b
2028 %retval = select i1 %cmp, i1 %cmp1, i1 false
2032 define i1 @auto_gen_56_logical_fmf(double %a, double %b) {
2033 ; CHECK-LABEL: @auto_gen_56_logical_fmf(
2034 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2035 ; CHECK-NEXT: ret i1 [[RETVAL]]
2037 %cmp = fcmp uge double %a, %b
2038 %cmp1 = fcmp fast oeq double %a, %b
2039 %retval = select i1 %cmp, i1 %cmp1, i1 false
2043 define i1 @auto_gen_57(double %a, double %b) {
2044 ; CHECK-LABEL: @auto_gen_57(
2045 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2046 ; CHECK-NEXT: ret i1 [[RETVAL]]
2048 %cmp = fcmp uge double %a, %b
2049 %cmp1 = fcmp ogt double %a, %b
2050 %retval = and i1 %cmp, %cmp1
2054 define i1 @auto_gen_57_logical(double %a, double %b) {
2055 ; CHECK-LABEL: @auto_gen_57_logical(
2056 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2057 ; CHECK-NEXT: ret i1 [[RETVAL]]
2059 %cmp = fcmp uge double %a, %b
2060 %cmp1 = fcmp ogt double %a, %b
2061 %retval = select i1 %cmp, i1 %cmp1, i1 false
2065 define i1 @auto_gen_57_logical_fmf(double %a, double %b) {
2066 ; CHECK-LABEL: @auto_gen_57_logical_fmf(
2067 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
2068 ; CHECK-NEXT: ret i1 [[RETVAL]]
2070 %cmp = fcmp fast uge double %a, %b
2071 %cmp1 = fcmp fast ogt double %a, %b
2072 %retval = select i1 %cmp, i1 %cmp1, i1 false
2076 define i1 @auto_gen_58(double %a, double %b) {
2077 ; CHECK-LABEL: @auto_gen_58(
2078 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
2079 ; CHECK-NEXT: ret i1 [[RETVAL]]
2081 %cmp = fcmp uge double %a, %b
2082 %cmp1 = fcmp oge double %a, %b
2083 %retval = and i1 %cmp, %cmp1
2087 define i1 @auto_gen_58_logical(double %a, double %b) {
2088 ; CHECK-LABEL: @auto_gen_58_logical(
2089 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
2090 ; CHECK-NEXT: ret i1 [[RETVAL]]
2092 %cmp = fcmp uge double %a, %b
2093 %cmp1 = fcmp oge double %a, %b
2094 %retval = select i1 %cmp, i1 %cmp1, i1 false
2098 define i1 @auto_gen_58_logical_fmf(double %a, double %b) {
2099 ; CHECK-LABEL: @auto_gen_58_logical_fmf(
2100 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
2101 ; CHECK-NEXT: ret i1 [[RETVAL]]
2103 %cmp = fcmp uge double %a, %b
2104 %cmp1 = fcmp fast oge double %a, %b
2105 %retval = select i1 %cmp, i1 %cmp1, i1 false
2109 define i1 @auto_gen_59(double %a, double %b) {
2110 ; CHECK-LABEL: @auto_gen_59(
2111 ; CHECK-NEXT: ret i1 false
2113 %cmp = fcmp uge double %a, %b
2114 %cmp1 = fcmp olt double %a, %b
2115 %retval = and i1 %cmp, %cmp1
2119 define i1 @auto_gen_59_logical(double %a, double %b) {
2120 ; CHECK-LABEL: @auto_gen_59_logical(
2121 ; CHECK-NEXT: ret i1 false
2123 %cmp = fcmp uge double %a, %b
2124 %cmp1 = fcmp olt double %a, %b
2125 %retval = select i1 %cmp, i1 %cmp1, i1 false
2129 define i1 @auto_gen_59_logical_fmf(double %a, double %b) {
2130 ; CHECK-LABEL: @auto_gen_59_logical_fmf(
2131 ; CHECK-NEXT: ret i1 false
2133 %cmp = fcmp fast uge double %a, %b
2134 %cmp1 = fcmp fast olt double %a, %b
2135 %retval = select i1 %cmp, i1 %cmp1, i1 false
2139 define i1 @auto_gen_60(double %a, double %b) {
2140 ; CHECK-LABEL: @auto_gen_60(
2141 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2142 ; CHECK-NEXT: ret i1 [[RETVAL]]
2144 %cmp = fcmp uge double %a, %b
2145 %cmp1 = fcmp ole double %a, %b
2146 %retval = and i1 %cmp, %cmp1
2150 define i1 @auto_gen_60_logical(double %a, double %b) {
2151 ; CHECK-LABEL: @auto_gen_60_logical(
2152 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2153 ; CHECK-NEXT: ret i1 [[RETVAL]]
2155 %cmp = fcmp uge double %a, %b
2156 %cmp1 = fcmp ole double %a, %b
2157 %retval = select i1 %cmp, i1 %cmp1, i1 false
2161 define i1 @auto_gen_60_logical_fmf(double %a, double %b) {
2162 ; CHECK-LABEL: @auto_gen_60_logical_fmf(
2163 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2164 ; CHECK-NEXT: ret i1 [[RETVAL]]
2166 %cmp = fcmp uge double %a, %b
2167 %cmp1 = fcmp fast ole double %a, %b
2168 %retval = select i1 %cmp, i1 %cmp1, i1 false
2172 define i1 @auto_gen_61(double %a, double %b) {
2173 ; CHECK-LABEL: @auto_gen_61(
2174 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2175 ; CHECK-NEXT: ret i1 [[RETVAL]]
2177 %cmp = fcmp uge double %a, %b
2178 %cmp1 = fcmp one double %a, %b
2179 %retval = and i1 %cmp, %cmp1
2183 define i1 @auto_gen_61_logical(double %a, double %b) {
2184 ; CHECK-LABEL: @auto_gen_61_logical(
2185 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
2186 ; CHECK-NEXT: ret i1 [[RETVAL]]
2188 %cmp = fcmp uge double %a, %b
2189 %cmp1 = fcmp one double %a, %b
2190 %retval = select i1 %cmp, i1 %cmp1, i1 false
2194 define i1 @auto_gen_61_logical_fmf(double %a, double %b) {
2195 ; CHECK-LABEL: @auto_gen_61_logical_fmf(
2196 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
2197 ; CHECK-NEXT: ret i1 [[RETVAL]]
2199 %cmp = fcmp fast uge double %a, %b
2200 %cmp1 = fcmp fast one double %a, %b
2201 %retval = select i1 %cmp, i1 %cmp1, i1 false
2205 define i1 @auto_gen_62(double %a, double %b) {
2206 ; CHECK-LABEL: @auto_gen_62(
2207 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
2208 ; CHECK-NEXT: ret i1 [[RETVAL]]
2210 %cmp = fcmp uge double %a, %b
2211 %cmp1 = fcmp ord double %a, %b
2212 %retval = and i1 %cmp, %cmp1
2216 define i1 @auto_gen_62_logical(double %a, double %b) {
2217 ; CHECK-LABEL: @auto_gen_62_logical(
2218 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
2219 ; CHECK-NEXT: ret i1 [[RETVAL]]
2221 %cmp = fcmp uge double %a, %b
2222 %cmp1 = fcmp ord double %a, %b
2223 %retval = select i1 %cmp, i1 %cmp1, i1 false
2227 define i1 @auto_gen_62_logical_fmf(double %a, double %b) {
2228 ; CHECK-LABEL: @auto_gen_62_logical_fmf(
2229 ; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2230 ; CHECK-NEXT: ret i1 [[CMP]]
2232 %cmp = fcmp uge double %a, %b
2233 %cmp1 = fcmp fast ord double %a, %b
2234 %retval = select i1 %cmp, i1 %cmp1, i1 false
2238 define i1 @auto_gen_63(double %a, double %b) {
2239 ; CHECK-LABEL: @auto_gen_63(
2240 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2241 ; CHECK-NEXT: ret i1 [[RETVAL]]
2243 %cmp = fcmp uge double %a, %b
2244 %cmp1 = fcmp ueq double %a, %b
2245 %retval = and i1 %cmp, %cmp1
2249 define i1 @auto_gen_63_logical(double %a, double %b) {
2250 ; CHECK-LABEL: @auto_gen_63_logical(
2251 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2252 ; CHECK-NEXT: ret i1 [[RETVAL]]
2254 %cmp = fcmp uge double %a, %b
2255 %cmp1 = fcmp ueq double %a, %b
2256 %retval = select i1 %cmp, i1 %cmp1, i1 false
2260 define i1 @auto_gen_63_logical_fmf(double %a, double %b) {
2261 ; CHECK-LABEL: @auto_gen_63_logical_fmf(
2262 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]
2263 ; CHECK-NEXT: ret i1 [[RETVAL]]
2265 %cmp = fcmp fast uge double %a, %b
2266 %cmp1 = fcmp fast ueq double %a, %b
2267 %retval = select i1 %cmp, i1 %cmp1, i1 false
2271 define i1 @auto_gen_64(double %a, double %b) {
2272 ; CHECK-LABEL: @auto_gen_64(
2273 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2274 ; CHECK-NEXT: ret i1 [[RETVAL]]
2276 %cmp = fcmp uge double %a, %b
2277 %cmp1 = fcmp ugt double %a, %b
2278 %retval = and i1 %cmp, %cmp1
2282 define i1 @auto_gen_64_logical(double %a, double %b) {
2283 ; CHECK-LABEL: @auto_gen_64_logical(
2284 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2285 ; CHECK-NEXT: ret i1 [[RETVAL]]
2287 %cmp = fcmp uge double %a, %b
2288 %cmp1 = fcmp ugt double %a, %b
2289 %retval = select i1 %cmp, i1 %cmp1, i1 false
2293 define i1 @auto_gen_64_logical_fmf(double %a, double %b) {
2294 ; CHECK-LABEL: @auto_gen_64_logical_fmf(
2295 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
2296 ; CHECK-NEXT: ret i1 [[RETVAL]]
2298 %cmp = fcmp uge double %a, %b
2299 %cmp1 = fcmp fast ugt double %a, %b
2300 %retval = select i1 %cmp, i1 %cmp1, i1 false
2304 define i1 @auto_gen_65(double %a, double %b) {
2305 ; CHECK-LABEL: @auto_gen_65(
2306 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2307 ; CHECK-NEXT: ret i1 [[RETVAL]]
2309 %cmp = fcmp uge double %a, %b
2310 %cmp1 = fcmp uge double %a, %b
2311 %retval = and i1 %cmp, %cmp1
2315 define i1 @auto_gen_65_logical(double %a, double %b) {
2316 ; CHECK-LABEL: @auto_gen_65_logical(
2317 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
2318 ; CHECK-NEXT: ret i1 [[RETVAL]]
2320 %cmp = fcmp uge double %a, %b
2321 %cmp1 = fcmp uge double %a, %b
2322 %retval = select i1 %cmp, i1 %cmp1, i1 false
2326 define i1 @auto_gen_65_logical_fmf(double %a, double %b) {
2327 ; CHECK-LABEL: @auto_gen_65_logical_fmf(
2328 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
2329 ; CHECK-NEXT: ret i1 [[RETVAL]]
2331 %cmp = fcmp fast uge double %a, %b
2332 %cmp1 = fcmp fast uge double %a, %b
2333 %retval = select i1 %cmp, i1 %cmp1, i1 false
2337 define i1 @auto_gen_66(double %a, double %b) {
2338 ; CHECK-LABEL: @auto_gen_66(
2339 ; CHECK-NEXT: ret i1 false
2341 %cmp = fcmp ult double %a, %b
2342 %cmp1 = fcmp false double %a, %b
2343 %retval = and i1 %cmp, %cmp1
2347 define i1 @auto_gen_66_logical(double %a, double %b) {
2348 ; CHECK-LABEL: @auto_gen_66_logical(
2349 ; CHECK-NEXT: ret i1 false
2351 %cmp = fcmp ult double %a, %b
2352 %cmp1 = fcmp false double %a, %b
2353 %retval = select i1 %cmp, i1 %cmp1, i1 false
2357 define i1 @auto_gen_66_logical_fmf(double %a, double %b) {
2358 ; CHECK-LABEL: @auto_gen_66_logical_fmf(
2359 ; CHECK-NEXT: ret i1 false
2361 %cmp = fcmp ult double %a, %b
2362 %cmp1 = fcmp fast false double %a, %b
2363 %retval = select i1 %cmp, i1 %cmp1, i1 false
2367 define i1 @auto_gen_67(double %a, double %b) {
2368 ; CHECK-LABEL: @auto_gen_67(
2369 ; CHECK-NEXT: ret i1 false
2371 %cmp = fcmp ult double %a, %b
2372 %cmp1 = fcmp oeq double %a, %b
2373 %retval = and i1 %cmp, %cmp1
2377 define i1 @auto_gen_67_logical(double %a, double %b) {
2378 ; CHECK-LABEL: @auto_gen_67_logical(
2379 ; CHECK-NEXT: ret i1 false
2381 %cmp = fcmp ult double %a, %b
2382 %cmp1 = fcmp oeq double %a, %b
2383 %retval = select i1 %cmp, i1 %cmp1, i1 false
2387 define i1 @auto_gen_67_logical_fmf(double %a, double %b) {
2388 ; CHECK-LABEL: @auto_gen_67_logical_fmf(
2389 ; CHECK-NEXT: ret i1 false
2391 %cmp = fcmp fast ult double %a, %b
2392 %cmp1 = fcmp fast oeq double %a, %b
2393 %retval = select i1 %cmp, i1 %cmp1, i1 false
2397 define i1 @auto_gen_68(double %a, double %b) {
2398 ; CHECK-LABEL: @auto_gen_68(
2399 ; CHECK-NEXT: ret i1 false
2401 %cmp = fcmp ult double %a, %b
2402 %cmp1 = fcmp ogt double %a, %b
2403 %retval = and i1 %cmp, %cmp1
2407 define i1 @auto_gen_68_logical(double %a, double %b) {
2408 ; CHECK-LABEL: @auto_gen_68_logical(
2409 ; CHECK-NEXT: ret i1 false
2411 %cmp = fcmp ult double %a, %b
2412 %cmp1 = fcmp ogt double %a, %b
2413 %retval = select i1 %cmp, i1 %cmp1, i1 false
2417 define i1 @auto_gen_68_logical_fmf(double %a, double %b) {
2418 ; CHECK-LABEL: @auto_gen_68_logical_fmf(
2419 ; CHECK-NEXT: ret i1 false
2421 %cmp = fcmp ult double %a, %b
2422 %cmp1 = fcmp fast ogt double %a, %b
2423 %retval = select i1 %cmp, i1 %cmp1, i1 false
2427 define i1 @auto_gen_69(double %a, double %b) {
2428 ; CHECK-LABEL: @auto_gen_69(
2429 ; CHECK-NEXT: ret i1 false
2431 %cmp = fcmp ult double %a, %b
2432 %cmp1 = fcmp oge double %a, %b
2433 %retval = and i1 %cmp, %cmp1
2437 define i1 @auto_gen_69_logical(double %a, double %b) {
2438 ; CHECK-LABEL: @auto_gen_69_logical(
2439 ; CHECK-NEXT: ret i1 false
2441 %cmp = fcmp ult double %a, %b
2442 %cmp1 = fcmp oge double %a, %b
2443 %retval = select i1 %cmp, i1 %cmp1, i1 false
2447 define i1 @auto_gen_69_logical_fmf(double %a, double %b) {
2448 ; CHECK-LABEL: @auto_gen_69_logical_fmf(
2449 ; CHECK-NEXT: ret i1 false
2451 %cmp = fcmp fast ult double %a, %b
2452 %cmp1 = fcmp fast oge double %a, %b
2453 %retval = select i1 %cmp, i1 %cmp1, i1 false
2457 define i1 @auto_gen_70(double %a, double %b) {
2458 ; CHECK-LABEL: @auto_gen_70(
2459 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2460 ; CHECK-NEXT: ret i1 [[RETVAL]]
2462 %cmp = fcmp ult double %a, %b
2463 %cmp1 = fcmp olt double %a, %b
2464 %retval = and i1 %cmp, %cmp1
2468 define i1 @auto_gen_70_logical(double %a, double %b) {
2469 ; CHECK-LABEL: @auto_gen_70_logical(
2470 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2471 ; CHECK-NEXT: ret i1 [[RETVAL]]
2473 %cmp = fcmp ult double %a, %b
2474 %cmp1 = fcmp olt double %a, %b
2475 %retval = select i1 %cmp, i1 %cmp1, i1 false
2479 define i1 @auto_gen_70_logical_fmf(double %a, double %b) {
2480 ; CHECK-LABEL: @auto_gen_70_logical_fmf(
2481 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2482 ; CHECK-NEXT: ret i1 [[RETVAL]]
2484 %cmp = fcmp ult double %a, %b
2485 %cmp1 = fcmp fast olt double %a, %b
2486 %retval = select i1 %cmp, i1 %cmp1, i1 false
2490 define i1 @auto_gen_71(double %a, double %b) {
2491 ; CHECK-LABEL: @auto_gen_71(
2492 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2493 ; CHECK-NEXT: ret i1 [[RETVAL]]
2495 %cmp = fcmp ult double %a, %b
2496 %cmp1 = fcmp ole double %a, %b
2497 %retval = and i1 %cmp, %cmp1
2501 define i1 @auto_gen_71_logical(double %a, double %b) {
2502 ; CHECK-LABEL: @auto_gen_71_logical(
2503 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2504 ; CHECK-NEXT: ret i1 [[RETVAL]]
2506 %cmp = fcmp ult double %a, %b
2507 %cmp1 = fcmp ole double %a, %b
2508 %retval = select i1 %cmp, i1 %cmp1, i1 false
2512 define i1 @auto_gen_71_logical_fmf(double %a, double %b) {
2513 ; CHECK-LABEL: @auto_gen_71_logical_fmf(
2514 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]
2515 ; CHECK-NEXT: ret i1 [[RETVAL]]
2517 %cmp = fcmp fast ult double %a, %b
2518 %cmp1 = fcmp fast ole double %a, %b
2519 %retval = select i1 %cmp, i1 %cmp1, i1 false
2523 define i1 @auto_gen_72(double %a, double %b) {
2524 ; CHECK-LABEL: @auto_gen_72(
2525 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2526 ; CHECK-NEXT: ret i1 [[RETVAL]]
2528 %cmp = fcmp ult double %a, %b
2529 %cmp1 = fcmp one double %a, %b
2530 %retval = and i1 %cmp, %cmp1
2534 define i1 @auto_gen_72_logical(double %a, double %b) {
2535 ; CHECK-LABEL: @auto_gen_72_logical(
2536 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2537 ; CHECK-NEXT: ret i1 [[RETVAL]]
2539 %cmp = fcmp ult double %a, %b
2540 %cmp1 = fcmp one double %a, %b
2541 %retval = select i1 %cmp, i1 %cmp1, i1 false
2545 define i1 @auto_gen_72_logical_fmf(double %a, double %b) {
2546 ; CHECK-LABEL: @auto_gen_72_logical_fmf(
2547 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2548 ; CHECK-NEXT: ret i1 [[RETVAL]]
2550 %cmp = fcmp ult double %a, %b
2551 %cmp1 = fcmp fast one double %a, %b
2552 %retval = select i1 %cmp, i1 %cmp1, i1 false
2556 define i1 @auto_gen_73(double %a, double %b) {
2557 ; CHECK-LABEL: @auto_gen_73(
2558 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2559 ; CHECK-NEXT: ret i1 [[RETVAL]]
2561 %cmp = fcmp ult double %a, %b
2562 %cmp1 = fcmp ord double %a, %b
2563 %retval = and i1 %cmp, %cmp1
2567 define i1 @auto_gen_73_logical(double %a, double %b) {
2568 ; CHECK-LABEL: @auto_gen_73_logical(
2569 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2570 ; CHECK-NEXT: ret i1 [[RETVAL]]
2572 %cmp = fcmp ult double %a, %b
2573 %cmp1 = fcmp ord double %a, %b
2574 %retval = select i1 %cmp, i1 %cmp1, i1 false
2578 define i1 @auto_gen_73_logical_fmf(double %a, double %b) {
2579 ; CHECK-LABEL: @auto_gen_73_logical_fmf(
2580 ; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]
2581 ; CHECK-NEXT: ret i1 [[CMP]]
2583 %cmp = fcmp fast ult double %a, %b
2584 %cmp1 = fcmp fast ord double %a, %b
2585 %retval = select i1 %cmp, i1 %cmp1, i1 false
2589 define i1 @auto_gen_74(double %a, double %b) {
2590 ; CHECK-LABEL: @auto_gen_74(
2591 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2592 ; CHECK-NEXT: ret i1 [[RETVAL]]
2594 %cmp = fcmp ult double %a, %b
2595 %cmp1 = fcmp ueq double %a, %b
2596 %retval = and i1 %cmp, %cmp1
2600 define i1 @auto_gen_74_logical(double %a, double %b) {
2601 ; CHECK-LABEL: @auto_gen_74_logical(
2602 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2603 ; CHECK-NEXT: ret i1 [[RETVAL]]
2605 %cmp = fcmp ult double %a, %b
2606 %cmp1 = fcmp ueq double %a, %b
2607 %retval = select i1 %cmp, i1 %cmp1, i1 false
2611 define i1 @auto_gen_74_logical_fmf(double %a, double %b) {
2612 ; CHECK-LABEL: @auto_gen_74_logical_fmf(
2613 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2614 ; CHECK-NEXT: ret i1 [[RETVAL]]
2616 %cmp = fcmp ult double %a, %b
2617 %cmp1 = fcmp fast ueq double %a, %b
2618 %retval = select i1 %cmp, i1 %cmp1, i1 false
2622 define i1 @auto_gen_75(double %a, double %b) {
2623 ; CHECK-LABEL: @auto_gen_75(
2624 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2625 ; CHECK-NEXT: ret i1 [[RETVAL]]
2627 %cmp = fcmp ult double %a, %b
2628 %cmp1 = fcmp ugt double %a, %b
2629 %retval = and i1 %cmp, %cmp1
2633 define i1 @auto_gen_75_logical(double %a, double %b) {
2634 ; CHECK-LABEL: @auto_gen_75_logical(
2635 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2636 ; CHECK-NEXT: ret i1 [[RETVAL]]
2638 %cmp = fcmp ult double %a, %b
2639 %cmp1 = fcmp ugt double %a, %b
2640 %retval = select i1 %cmp, i1 %cmp1, i1 false
2644 define i1 @auto_gen_75_logical_fmf(double %a, double %b) {
2645 ; CHECK-LABEL: @auto_gen_75_logical_fmf(
2646 ; CHECK-NEXT: ret i1 false
2648 %cmp = fcmp fast ult double %a, %b
2649 %cmp1 = fcmp fast ugt double %a, %b
2650 %retval = select i1 %cmp, i1 %cmp1, i1 false
2654 define i1 @auto_gen_76(double %a, double %b) {
2655 ; CHECK-LABEL: @auto_gen_76(
2656 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2657 ; CHECK-NEXT: ret i1 [[RETVAL]]
2659 %cmp = fcmp ult double %a, %b
2660 %cmp1 = fcmp uge double %a, %b
2661 %retval = and i1 %cmp, %cmp1
2665 define i1 @auto_gen_76_logical(double %a, double %b) {
2666 ; CHECK-LABEL: @auto_gen_76_logical(
2667 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2668 ; CHECK-NEXT: ret i1 [[RETVAL]]
2670 %cmp = fcmp ult double %a, %b
2671 %cmp1 = fcmp uge double %a, %b
2672 %retval = select i1 %cmp, i1 %cmp1, i1 false
2676 define i1 @auto_gen_76_logical_fmf(double %a, double %b) {
2677 ; CHECK-LABEL: @auto_gen_76_logical_fmf(
2678 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
2679 ; CHECK-NEXT: ret i1 [[RETVAL]]
2681 %cmp = fcmp ult double %a, %b
2682 %cmp1 = fcmp fast uge double %a, %b
2683 %retval = select i1 %cmp, i1 %cmp1, i1 false
2687 define i1 @auto_gen_77(double %a, double %b) {
2688 ; CHECK-LABEL: @auto_gen_77(
2689 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2690 ; CHECK-NEXT: ret i1 [[RETVAL]]
2692 %cmp = fcmp ult double %a, %b
2693 %cmp1 = fcmp ult double %a, %b
2694 %retval = and i1 %cmp, %cmp1
2698 define i1 @auto_gen_77_logical(double %a, double %b) {
2699 ; CHECK-LABEL: @auto_gen_77_logical(
2700 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
2701 ; CHECK-NEXT: ret i1 [[RETVAL]]
2703 %cmp = fcmp ult double %a, %b
2704 %cmp1 = fcmp ult double %a, %b
2705 %retval = select i1 %cmp, i1 %cmp1, i1 false
2709 define i1 @auto_gen_77_logical_fmf(double %a, double %b) {
2710 ; CHECK-LABEL: @auto_gen_77_logical_fmf(
2711 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]
2712 ; CHECK-NEXT: ret i1 [[RETVAL]]
2714 %cmp = fcmp fast ult double %a, %b
2715 %cmp1 = fcmp fast ult double %a, %b
2716 %retval = select i1 %cmp, i1 %cmp1, i1 false
2720 define i1 @auto_gen_78(double %a, double %b) {
2721 ; CHECK-LABEL: @auto_gen_78(
2722 ; CHECK-NEXT: ret i1 false
2724 %cmp = fcmp ule double %a, %b
2725 %cmp1 = fcmp false double %a, %b
2726 %retval = and i1 %cmp, %cmp1
2730 define i1 @auto_gen_78_logical(double %a, double %b) {
2731 ; CHECK-LABEL: @auto_gen_78_logical(
2732 ; CHECK-NEXT: ret i1 false
2734 %cmp = fcmp ule double %a, %b
2735 %cmp1 = fcmp false double %a, %b
2736 %retval = select i1 %cmp, i1 %cmp1, i1 false
2740 define i1 @auto_gen_78_logical_fmf(double %a, double %b) {
2741 ; CHECK-LABEL: @auto_gen_78_logical_fmf(
2742 ; CHECK-NEXT: ret i1 false
2744 %cmp = fcmp ule double %a, %b
2745 %cmp1 = fcmp fast false double %a, %b
2746 %retval = select i1 %cmp, i1 %cmp1, i1 false
2750 define i1 @auto_gen_79(double %a, double %b) {
2751 ; CHECK-LABEL: @auto_gen_79(
2752 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2753 ; CHECK-NEXT: ret i1 [[RETVAL]]
2755 %cmp = fcmp ule double %a, %b
2756 %cmp1 = fcmp oeq double %a, %b
2757 %retval = and i1 %cmp, %cmp1
2761 define i1 @auto_gen_79_logical(double %a, double %b) {
2762 ; CHECK-LABEL: @auto_gen_79_logical(
2763 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2764 ; CHECK-NEXT: ret i1 [[RETVAL]]
2766 %cmp = fcmp ule double %a, %b
2767 %cmp1 = fcmp oeq double %a, %b
2768 %retval = select i1 %cmp, i1 %cmp1, i1 false
2772 define i1 @auto_gen_79_logical_fmf(double %a, double %b) {
2773 ; CHECK-LABEL: @auto_gen_79_logical_fmf(
2774 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
2775 ; CHECK-NEXT: ret i1 [[RETVAL]]
2777 %cmp = fcmp fast ule double %a, %b
2778 %cmp1 = fcmp fast oeq double %a, %b
2779 %retval = select i1 %cmp, i1 %cmp1, i1 false
2783 define i1 @auto_gen_80(double %a, double %b) {
2784 ; CHECK-LABEL: @auto_gen_80(
2785 ; CHECK-NEXT: ret i1 false
2787 %cmp = fcmp ule double %a, %b
2788 %cmp1 = fcmp ogt double %a, %b
2789 %retval = and i1 %cmp, %cmp1
2793 define i1 @auto_gen_80_logical(double %a, double %b) {
2794 ; CHECK-LABEL: @auto_gen_80_logical(
2795 ; CHECK-NEXT: ret i1 false
2797 %cmp = fcmp ule double %a, %b
2798 %cmp1 = fcmp ogt double %a, %b
2799 %retval = select i1 %cmp, i1 %cmp1, i1 false
2803 define i1 @auto_gen_80_logical_fmf(double %a, double %b) {
2804 ; CHECK-LABEL: @auto_gen_80_logical_fmf(
2805 ; CHECK-NEXT: ret i1 false
2807 %cmp = fcmp ule double %a, %b
2808 %cmp1 = fcmp fast ogt double %a, %b
2809 %retval = select i1 %cmp, i1 %cmp1, i1 false
2813 define i1 @auto_gen_81(double %a, double %b) {
2814 ; CHECK-LABEL: @auto_gen_81(
2815 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2816 ; CHECK-NEXT: ret i1 [[RETVAL]]
2818 %cmp = fcmp ule double %a, %b
2819 %cmp1 = fcmp oge double %a, %b
2820 %retval = and i1 %cmp, %cmp1
2824 define i1 @auto_gen_81_logical(double %a, double %b) {
2825 ; CHECK-LABEL: @auto_gen_81_logical(
2826 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
2827 ; CHECK-NEXT: ret i1 [[RETVAL]]
2829 %cmp = fcmp ule double %a, %b
2830 %cmp1 = fcmp oge double %a, %b
2831 %retval = select i1 %cmp, i1 %cmp1, i1 false
2835 define i1 @auto_gen_81_logical_fmf(double %a, double %b) {
2836 ; CHECK-LABEL: @auto_gen_81_logical_fmf(
2837 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
2838 ; CHECK-NEXT: ret i1 [[RETVAL]]
2840 %cmp = fcmp fast ule double %a, %b
2841 %cmp1 = fcmp fast oge double %a, %b
2842 %retval = select i1 %cmp, i1 %cmp1, i1 false
2846 define i1 @auto_gen_82(double %a, double %b) {
2847 ; CHECK-LABEL: @auto_gen_82(
2848 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2849 ; CHECK-NEXT: ret i1 [[RETVAL]]
2851 %cmp = fcmp ule double %a, %b
2852 %cmp1 = fcmp olt double %a, %b
2853 %retval = and i1 %cmp, %cmp1
2857 define i1 @auto_gen_82_logical(double %a, double %b) {
2858 ; CHECK-LABEL: @auto_gen_82_logical(
2859 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2860 ; CHECK-NEXT: ret i1 [[RETVAL]]
2862 %cmp = fcmp ule double %a, %b
2863 %cmp1 = fcmp olt double %a, %b
2864 %retval = select i1 %cmp, i1 %cmp1, i1 false
2868 define i1 @auto_gen_82_logical_fmf(double %a, double %b) {
2869 ; CHECK-LABEL: @auto_gen_82_logical_fmf(
2870 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2871 ; CHECK-NEXT: ret i1 [[RETVAL]]
2873 %cmp = fcmp ule double %a, %b
2874 %cmp1 = fcmp fast olt double %a, %b
2875 %retval = select i1 %cmp, i1 %cmp1, i1 false
2879 define i1 @auto_gen_83(double %a, double %b) {
2880 ; CHECK-LABEL: @auto_gen_83(
2881 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2882 ; CHECK-NEXT: ret i1 [[RETVAL]]
2884 %cmp = fcmp ule double %a, %b
2885 %cmp1 = fcmp ole double %a, %b
2886 %retval = and i1 %cmp, %cmp1
2890 define i1 @auto_gen_83_logical(double %a, double %b) {
2891 ; CHECK-LABEL: @auto_gen_83_logical(
2892 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2893 ; CHECK-NEXT: ret i1 [[RETVAL]]
2895 %cmp = fcmp ule double %a, %b
2896 %cmp1 = fcmp ole double %a, %b
2897 %retval = select i1 %cmp, i1 %cmp1, i1 false
2901 define i1 @auto_gen_83_logical_fmf(double %a, double %b) {
2902 ; CHECK-LABEL: @auto_gen_83_logical_fmf(
2903 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]
2904 ; CHECK-NEXT: ret i1 [[RETVAL]]
2906 %cmp = fcmp fast ule double %a, %b
2907 %cmp1 = fcmp fast ole double %a, %b
2908 %retval = select i1 %cmp, i1 %cmp1, i1 false
2912 define i1 @auto_gen_84(double %a, double %b) {
2913 ; CHECK-LABEL: @auto_gen_84(
2914 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2915 ; CHECK-NEXT: ret i1 [[RETVAL]]
2917 %cmp = fcmp ule double %a, %b
2918 %cmp1 = fcmp one double %a, %b
2919 %retval = and i1 %cmp, %cmp1
2923 define i1 @auto_gen_84_logical(double %a, double %b) {
2924 ; CHECK-LABEL: @auto_gen_84_logical(
2925 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2926 ; CHECK-NEXT: ret i1 [[RETVAL]]
2928 %cmp = fcmp ule double %a, %b
2929 %cmp1 = fcmp one double %a, %b
2930 %retval = select i1 %cmp, i1 %cmp1, i1 false
2934 define i1 @auto_gen_84_logical_fmf(double %a, double %b) {
2935 ; CHECK-LABEL: @auto_gen_84_logical_fmf(
2936 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
2937 ; CHECK-NEXT: ret i1 [[RETVAL]]
2939 %cmp = fcmp ule double %a, %b
2940 %cmp1 = fcmp fast one double %a, %b
2941 %retval = select i1 %cmp, i1 %cmp1, i1 false
2945 define i1 @auto_gen_85(double %a, double %b) {
2946 ; CHECK-LABEL: @auto_gen_85(
2947 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2948 ; CHECK-NEXT: ret i1 [[RETVAL]]
2950 %cmp = fcmp ule double %a, %b
2951 %cmp1 = fcmp ord double %a, %b
2952 %retval = and i1 %cmp, %cmp1
2956 define i1 @auto_gen_85_logical(double %a, double %b) {
2957 ; CHECK-LABEL: @auto_gen_85_logical(
2958 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
2959 ; CHECK-NEXT: ret i1 [[RETVAL]]
2961 %cmp = fcmp ule double %a, %b
2962 %cmp1 = fcmp ord double %a, %b
2963 %retval = select i1 %cmp, i1 %cmp1, i1 false
2967 define i1 @auto_gen_85_logical_fmf(double %a, double %b) {
2968 ; CHECK-LABEL: @auto_gen_85_logical_fmf(
2969 ; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
2970 ; CHECK-NEXT: ret i1 [[CMP]]
2972 %cmp = fcmp fast ule double %a, %b
2973 %cmp1 = fcmp fast ord double %a, %b
2974 %retval = select i1 %cmp, i1 %cmp1, i1 false
2978 define i1 @auto_gen_86(double %a, double %b) {
2979 ; CHECK-LABEL: @auto_gen_86(
2980 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2981 ; CHECK-NEXT: ret i1 [[RETVAL]]
2983 %cmp = fcmp ule double %a, %b
2984 %cmp1 = fcmp ueq double %a, %b
2985 %retval = and i1 %cmp, %cmp1
2989 define i1 @auto_gen_86_logical(double %a, double %b) {
2990 ; CHECK-LABEL: @auto_gen_86_logical(
2991 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
2992 ; CHECK-NEXT: ret i1 [[RETVAL]]
2994 %cmp = fcmp ule double %a, %b
2995 %cmp1 = fcmp ueq double %a, %b
2996 %retval = select i1 %cmp, i1 %cmp1, i1 false
3000 define i1 @auto_gen_86_logical_fmf(double %a, double %b) {
3001 ; CHECK-LABEL: @auto_gen_86_logical_fmf(
3002 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3003 ; CHECK-NEXT: ret i1 [[RETVAL]]
3005 %cmp = fcmp ule double %a, %b
3006 %cmp1 = fcmp fast ueq double %a, %b
3007 %retval = select i1 %cmp, i1 %cmp1, i1 false
3011 define i1 @auto_gen_87(double %a, double %b) {
3012 ; CHECK-LABEL: @auto_gen_87(
3013 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3014 ; CHECK-NEXT: ret i1 [[RETVAL]]
3016 %cmp = fcmp ule double %a, %b
3017 %cmp1 = fcmp ugt double %a, %b
3018 %retval = and i1 %cmp, %cmp1
3022 define i1 @auto_gen_87_logical(double %a, double %b) {
3023 ; CHECK-LABEL: @auto_gen_87_logical(
3024 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3025 ; CHECK-NEXT: ret i1 [[RETVAL]]
3027 %cmp = fcmp ule double %a, %b
3028 %cmp1 = fcmp ugt double %a, %b
3029 %retval = select i1 %cmp, i1 %cmp1, i1 false
3033 define i1 @auto_gen_87_logical_fmf(double %a, double %b) {
3034 ; CHECK-LABEL: @auto_gen_87_logical_fmf(
3035 ; CHECK-NEXT: ret i1 false
3037 %cmp = fcmp fast ule double %a, %b
3038 %cmp1 = fcmp fast ugt double %a, %b
3039 %retval = select i1 %cmp, i1 %cmp1, i1 false
3043 define i1 @auto_gen_88(double %a, double %b) {
3044 ; CHECK-LABEL: @auto_gen_88(
3045 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3046 ; CHECK-NEXT: ret i1 [[RETVAL]]
3048 %cmp = fcmp ule double %a, %b
3049 %cmp1 = fcmp uge double %a, %b
3050 %retval = and i1 %cmp, %cmp1
3054 define i1 @auto_gen_88_logical(double %a, double %b) {
3055 ; CHECK-LABEL: @auto_gen_88_logical(
3056 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3057 ; CHECK-NEXT: ret i1 [[RETVAL]]
3059 %cmp = fcmp ule double %a, %b
3060 %cmp1 = fcmp uge double %a, %b
3061 %retval = select i1 %cmp, i1 %cmp1, i1 false
3065 define i1 @auto_gen_88_logical_fmf(double %a, double %b) {
3066 ; CHECK-LABEL: @auto_gen_88_logical_fmf(
3067 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
3068 ; CHECK-NEXT: ret i1 [[RETVAL]]
3070 %cmp = fcmp ule double %a, %b
3071 %cmp1 = fcmp fast uge double %a, %b
3072 %retval = select i1 %cmp, i1 %cmp1, i1 false
3076 define i1 @auto_gen_89(double %a, double %b) {
3077 ; CHECK-LABEL: @auto_gen_89(
3078 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3079 ; CHECK-NEXT: ret i1 [[RETVAL]]
3081 %cmp = fcmp ule double %a, %b
3082 %cmp1 = fcmp ult double %a, %b
3083 %retval = and i1 %cmp, %cmp1
3087 define i1 @auto_gen_89_logical(double %a, double %b) {
3088 ; CHECK-LABEL: @auto_gen_89_logical(
3089 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3090 ; CHECK-NEXT: ret i1 [[RETVAL]]
3092 %cmp = fcmp ule double %a, %b
3093 %cmp1 = fcmp ult double %a, %b
3094 %retval = select i1 %cmp, i1 %cmp1, i1 false
3098 define i1 @auto_gen_89_logical_fmf(double %a, double %b) {
3099 ; CHECK-LABEL: @auto_gen_89_logical_fmf(
3100 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]
3101 ; CHECK-NEXT: ret i1 [[RETVAL]]
3103 %cmp = fcmp fast ule double %a, %b
3104 %cmp1 = fcmp fast ult double %a, %b
3105 %retval = select i1 %cmp, i1 %cmp1, i1 false
3109 define i1 @auto_gen_90(double %a, double %b) {
3110 ; CHECK-LABEL: @auto_gen_90(
3111 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3112 ; CHECK-NEXT: ret i1 [[RETVAL]]
3114 %cmp = fcmp ule double %a, %b
3115 %cmp1 = fcmp ule double %a, %b
3116 %retval = and i1 %cmp, %cmp1
3120 define i1 @auto_gen_90_logical(double %a, double %b) {
3121 ; CHECK-LABEL: @auto_gen_90_logical(
3122 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3123 ; CHECK-NEXT: ret i1 [[RETVAL]]
3125 %cmp = fcmp ule double %a, %b
3126 %cmp1 = fcmp ule double %a, %b
3127 %retval = select i1 %cmp, i1 %cmp1, i1 false
3131 define i1 @auto_gen_90_logical_fmf(double %a, double %b) {
3132 ; CHECK-LABEL: @auto_gen_90_logical_fmf(
3133 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
3134 ; CHECK-NEXT: ret i1 [[RETVAL]]
3136 %cmp = fcmp ule double %a, %b
3137 %cmp1 = fcmp fast ule double %a, %b
3138 %retval = select i1 %cmp, i1 %cmp1, i1 false
3142 define i1 @auto_gen_91(double %a, double %b) {
3143 ; CHECK-LABEL: @auto_gen_91(
3144 ; CHECK-NEXT: ret i1 false
3146 %cmp = fcmp une double %a, %b
3147 %cmp1 = fcmp false double %a, %b
3148 %retval = and i1 %cmp, %cmp1
3152 define i1 @auto_gen_91_logical(double %a, double %b) {
3153 ; CHECK-LABEL: @auto_gen_91_logical(
3154 ; CHECK-NEXT: ret i1 false
3156 %cmp = fcmp une double %a, %b
3157 %cmp1 = fcmp false double %a, %b
3158 %retval = select i1 %cmp, i1 %cmp1, i1 false
3162 define i1 @auto_gen_91_logical_fmf(double %a, double %b) {
3163 ; CHECK-LABEL: @auto_gen_91_logical_fmf(
3164 ; CHECK-NEXT: ret i1 false
3166 %cmp = fcmp fast une double %a, %b
3167 %cmp1 = fcmp fast false double %a, %b
3168 %retval = select i1 %cmp, i1 %cmp1, i1 false
3172 define i1 @auto_gen_92(double %a, double %b) {
3173 ; CHECK-LABEL: @auto_gen_92(
3174 ; CHECK-NEXT: ret i1 false
3176 %cmp = fcmp une double %a, %b
3177 %cmp1 = fcmp oeq double %a, %b
3178 %retval = and i1 %cmp, %cmp1
3182 define i1 @auto_gen_92_logical(double %a, double %b) {
3183 ; CHECK-LABEL: @auto_gen_92_logical(
3184 ; CHECK-NEXT: ret i1 false
3186 %cmp = fcmp une double %a, %b
3187 %cmp1 = fcmp oeq double %a, %b
3188 %retval = select i1 %cmp, i1 %cmp1, i1 false
3192 define i1 @auto_gen_92_logical_fmf(double %a, double %b) {
3193 ; CHECK-LABEL: @auto_gen_92_logical_fmf(
3194 ; CHECK-NEXT: ret i1 false
3196 %cmp = fcmp une double %a, %b
3197 %cmp1 = fcmp fast oeq double %a, %b
3198 %retval = select i1 %cmp, i1 %cmp1, i1 false
3202 define i1 @auto_gen_93(double %a, double %b) {
3203 ; CHECK-LABEL: @auto_gen_93(
3204 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
3205 ; CHECK-NEXT: ret i1 [[RETVAL]]
3207 %cmp = fcmp une double %a, %b
3208 %cmp1 = fcmp ogt double %a, %b
3209 %retval = and i1 %cmp, %cmp1
3213 define i1 @auto_gen_93_logical(double %a, double %b) {
3214 ; CHECK-LABEL: @auto_gen_93_logical(
3215 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
3216 ; CHECK-NEXT: ret i1 [[RETVAL]]
3218 %cmp = fcmp une double %a, %b
3219 %cmp1 = fcmp ogt double %a, %b
3220 %retval = select i1 %cmp, i1 %cmp1, i1 false
3224 define i1 @auto_gen_93_logical_fmf(double %a, double %b) {
3225 ; CHECK-LABEL: @auto_gen_93_logical_fmf(
3226 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
3227 ; CHECK-NEXT: ret i1 [[RETVAL]]
3229 %cmp = fcmp fast une double %a, %b
3230 %cmp1 = fcmp fast ogt double %a, %b
3231 %retval = select i1 %cmp, i1 %cmp1, i1 false
3235 define i1 @auto_gen_94(double %a, double %b) {
3236 ; CHECK-LABEL: @auto_gen_94(
3237 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
3238 ; CHECK-NEXT: ret i1 [[RETVAL]]
3240 %cmp = fcmp une double %a, %b
3241 %cmp1 = fcmp oge double %a, %b
3242 %retval = and i1 %cmp, %cmp1
3246 define i1 @auto_gen_94_logical(double %a, double %b) {
3247 ; CHECK-LABEL: @auto_gen_94_logical(
3248 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
3249 ; CHECK-NEXT: ret i1 [[RETVAL]]
3251 %cmp = fcmp une double %a, %b
3252 %cmp1 = fcmp oge double %a, %b
3253 %retval = select i1 %cmp, i1 %cmp1, i1 false
3257 define i1 @auto_gen_94_logical_fmf(double %a, double %b) {
3258 ; CHECK-LABEL: @auto_gen_94_logical_fmf(
3259 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
3260 ; CHECK-NEXT: ret i1 [[RETVAL]]
3262 %cmp = fcmp une double %a, %b
3263 %cmp1 = fcmp fast oge double %a, %b
3264 %retval = select i1 %cmp, i1 %cmp1, i1 false
3268 define i1 @auto_gen_95(double %a, double %b) {
3269 ; CHECK-LABEL: @auto_gen_95(
3270 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
3271 ; CHECK-NEXT: ret i1 [[RETVAL]]
3273 %cmp = fcmp une double %a, %b
3274 %cmp1 = fcmp olt double %a, %b
3275 %retval = and i1 %cmp, %cmp1
3279 define i1 @auto_gen_95_logical(double %a, double %b) {
3280 ; CHECK-LABEL: @auto_gen_95_logical(
3281 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
3282 ; CHECK-NEXT: ret i1 [[RETVAL]]
3284 %cmp = fcmp une double %a, %b
3285 %cmp1 = fcmp olt double %a, %b
3286 %retval = select i1 %cmp, i1 %cmp1, i1 false
3290 define i1 @auto_gen_95_logical_fmf(double %a, double %b) {
3291 ; CHECK-LABEL: @auto_gen_95_logical_fmf(
3292 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]
3293 ; CHECK-NEXT: ret i1 [[RETVAL]]
3295 %cmp = fcmp fast une double %a, %b
3296 %cmp1 = fcmp fast olt double %a, %b
3297 %retval = select i1 %cmp, i1 %cmp1, i1 false
3301 define i1 @auto_gen_96(double %a, double %b) {
3302 ; CHECK-LABEL: @auto_gen_96(
3303 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
3304 ; CHECK-NEXT: ret i1 [[RETVAL]]
3306 %cmp = fcmp une double %a, %b
3307 %cmp1 = fcmp ole double %a, %b
3308 %retval = and i1 %cmp, %cmp1
3312 define i1 @auto_gen_96_logical(double %a, double %b) {
3313 ; CHECK-LABEL: @auto_gen_96_logical(
3314 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
3315 ; CHECK-NEXT: ret i1 [[RETVAL]]
3317 %cmp = fcmp une double %a, %b
3318 %cmp1 = fcmp ole double %a, %b
3319 %retval = select i1 %cmp, i1 %cmp1, i1 false
3323 define i1 @auto_gen_96_logical_fmf(double %a, double %b) {
3324 ; CHECK-LABEL: @auto_gen_96_logical_fmf(
3325 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
3326 ; CHECK-NEXT: ret i1 [[RETVAL]]
3328 %cmp = fcmp une double %a, %b
3329 %cmp1 = fcmp fast ole double %a, %b
3330 %retval = select i1 %cmp, i1 %cmp1, i1 false
3334 define i1 @auto_gen_97(double %a, double %b) {
3335 ; CHECK-LABEL: @auto_gen_97(
3336 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
3337 ; CHECK-NEXT: ret i1 [[RETVAL]]
3339 %cmp = fcmp une double %a, %b
3340 %cmp1 = fcmp one double %a, %b
3341 %retval = and i1 %cmp, %cmp1
3345 define i1 @auto_gen_97_logical(double %a, double %b) {
3346 ; CHECK-LABEL: @auto_gen_97_logical(
3347 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
3348 ; CHECK-NEXT: ret i1 [[RETVAL]]
3350 %cmp = fcmp une double %a, %b
3351 %cmp1 = fcmp one double %a, %b
3352 %retval = select i1 %cmp, i1 %cmp1, i1 false
3356 define i1 @auto_gen_97_logical_fmf(double %a, double %b) {
3357 ; CHECK-LABEL: @auto_gen_97_logical_fmf(
3358 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
3359 ; CHECK-NEXT: ret i1 [[RETVAL]]
3361 %cmp = fcmp fast une double %a, %b
3362 %cmp1 = fcmp fast one double %a, %b
3363 %retval = select i1 %cmp, i1 %cmp1, i1 false
3367 define i1 @auto_gen_98(double %a, double %b) {
3368 ; CHECK-LABEL: @auto_gen_98(
3369 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
3370 ; CHECK-NEXT: ret i1 [[RETVAL]]
3372 %cmp = fcmp une double %a, %b
3373 %cmp1 = fcmp ord double %a, %b
3374 %retval = and i1 %cmp, %cmp1
3378 define i1 @auto_gen_98_logical(double %a, double %b) {
3379 ; CHECK-LABEL: @auto_gen_98_logical(
3380 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
3381 ; CHECK-NEXT: ret i1 [[RETVAL]]
3383 %cmp = fcmp une double %a, %b
3384 %cmp1 = fcmp ord double %a, %b
3385 %retval = select i1 %cmp, i1 %cmp1, i1 false
3389 define i1 @auto_gen_98_logical_fmf(double %a, double %b) {
3390 ; CHECK-LABEL: @auto_gen_98_logical_fmf(
3391 ; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3392 ; CHECK-NEXT: ret i1 [[CMP]]
3394 %cmp = fcmp une double %a, %b
3395 %cmp1 = fcmp fast ord double %a, %b
3396 %retval = select i1 %cmp, i1 %cmp1, i1 false
3400 define i1 @auto_gen_99(double %a, double %b) {
3401 ; CHECK-LABEL: @auto_gen_99(
3402 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3403 ; CHECK-NEXT: ret i1 [[RETVAL]]
3405 %cmp = fcmp une double %a, %b
3406 %cmp1 = fcmp ueq double %a, %b
3407 %retval = and i1 %cmp, %cmp1
3411 define i1 @auto_gen_99_logical(double %a, double %b) {
3412 ; CHECK-LABEL: @auto_gen_99_logical(
3413 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3414 ; CHECK-NEXT: ret i1 [[RETVAL]]
3416 %cmp = fcmp une double %a, %b
3417 %cmp1 = fcmp ueq double %a, %b
3418 %retval = select i1 %cmp, i1 %cmp1, i1 false
3422 define i1 @auto_gen_99_logical_fmf(double %a, double %b) {
3423 ; CHECK-LABEL: @auto_gen_99_logical_fmf(
3424 ; CHECK-NEXT: ret i1 false
3426 %cmp = fcmp fast une double %a, %b
3427 %cmp1 = fcmp fast ueq double %a, %b
3428 %retval = select i1 %cmp, i1 %cmp1, i1 false
3432 define i1 @auto_gen_100(double %a, double %b) {
3433 ; CHECK-LABEL: @auto_gen_100(
3434 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3435 ; CHECK-NEXT: ret i1 [[RETVAL]]
3437 %cmp = fcmp une double %a, %b
3438 %cmp1 = fcmp ugt double %a, %b
3439 %retval = and i1 %cmp, %cmp1
3443 define i1 @auto_gen_100_logical(double %a, double %b) {
3444 ; CHECK-LABEL: @auto_gen_100_logical(
3445 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3446 ; CHECK-NEXT: ret i1 [[RETVAL]]
3448 %cmp = fcmp une double %a, %b
3449 %cmp1 = fcmp ugt double %a, %b
3450 %retval = select i1 %cmp, i1 %cmp1, i1 false
3454 define i1 @auto_gen_100_logical_fmf(double %a, double %b) {
3455 ; CHECK-LABEL: @auto_gen_100_logical_fmf(
3456 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3457 ; CHECK-NEXT: ret i1 [[RETVAL]]
3459 %cmp = fcmp une double %a, %b
3460 %cmp1 = fcmp fast ugt double %a, %b
3461 %retval = select i1 %cmp, i1 %cmp1, i1 false
3465 define i1 @auto_gen_101(double %a, double %b) {
3466 ; CHECK-LABEL: @auto_gen_101(
3467 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3468 ; CHECK-NEXT: ret i1 [[RETVAL]]
3470 %cmp = fcmp une double %a, %b
3471 %cmp1 = fcmp uge double %a, %b
3472 %retval = and i1 %cmp, %cmp1
3476 define i1 @auto_gen_101_logical(double %a, double %b) {
3477 ; CHECK-LABEL: @auto_gen_101_logical(
3478 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
3479 ; CHECK-NEXT: ret i1 [[RETVAL]]
3481 %cmp = fcmp une double %a, %b
3482 %cmp1 = fcmp uge double %a, %b
3483 %retval = select i1 %cmp, i1 %cmp1, i1 false
3487 define i1 @auto_gen_101_logical_fmf(double %a, double %b) {
3488 ; CHECK-LABEL: @auto_gen_101_logical_fmf(
3489 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]]
3490 ; CHECK-NEXT: ret i1 [[RETVAL]]
3492 %cmp = fcmp fast une double %a, %b
3493 %cmp1 = fcmp fast uge double %a, %b
3494 %retval = select i1 %cmp, i1 %cmp1, i1 false
3498 define i1 @auto_gen_102(double %a, double %b) {
3499 ; CHECK-LABEL: @auto_gen_102(
3500 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3501 ; CHECK-NEXT: ret i1 [[RETVAL]]
3503 %cmp = fcmp une double %a, %b
3504 %cmp1 = fcmp ult double %a, %b
3505 %retval = and i1 %cmp, %cmp1
3509 define i1 @auto_gen_102_logical(double %a, double %b) {
3510 ; CHECK-LABEL: @auto_gen_102_logical(
3511 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3512 ; CHECK-NEXT: ret i1 [[RETVAL]]
3514 %cmp = fcmp une double %a, %b
3515 %cmp1 = fcmp ult double %a, %b
3516 %retval = select i1 %cmp, i1 %cmp1, i1 false
3520 define i1 @auto_gen_102_logical_fmf(double %a, double %b) {
3521 ; CHECK-LABEL: @auto_gen_102_logical_fmf(
3522 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3523 ; CHECK-NEXT: ret i1 [[RETVAL]]
3525 %cmp = fcmp une double %a, %b
3526 %cmp1 = fcmp fast ult double %a, %b
3527 %retval = select i1 %cmp, i1 %cmp1, i1 false
3531 define i1 @auto_gen_103(double %a, double %b) {
3532 ; CHECK-LABEL: @auto_gen_103(
3533 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3534 ; CHECK-NEXT: ret i1 [[RETVAL]]
3536 %cmp = fcmp une double %a, %b
3537 %cmp1 = fcmp ule double %a, %b
3538 %retval = and i1 %cmp, %cmp1
3542 define i1 @auto_gen_103_logical(double %a, double %b) {
3543 ; CHECK-LABEL: @auto_gen_103_logical(
3544 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
3545 ; CHECK-NEXT: ret i1 [[RETVAL]]
3547 %cmp = fcmp une double %a, %b
3548 %cmp1 = fcmp ule double %a, %b
3549 %retval = select i1 %cmp, i1 %cmp1, i1 false
3553 define i1 @auto_gen_103_logical_fmf(double %a, double %b) {
3554 ; CHECK-LABEL: @auto_gen_103_logical_fmf(
3555 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]
3556 ; CHECK-NEXT: ret i1 [[RETVAL]]
3558 %cmp = fcmp fast une double %a, %b
3559 %cmp1 = fcmp fast ule double %a, %b
3560 %retval = select i1 %cmp, i1 %cmp1, i1 false
3564 define i1 @auto_gen_104(double %a, double %b) {
3565 ; CHECK-LABEL: @auto_gen_104(
3566 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3567 ; CHECK-NEXT: ret i1 [[RETVAL]]
3569 %cmp = fcmp une double %a, %b
3570 %cmp1 = fcmp une double %a, %b
3571 %retval = and i1 %cmp, %cmp1
3575 define i1 @auto_gen_104_logical(double %a, double %b) {
3576 ; CHECK-LABEL: @auto_gen_104_logical(
3577 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3578 ; CHECK-NEXT: ret i1 [[RETVAL]]
3580 %cmp = fcmp une double %a, %b
3581 %cmp1 = fcmp une double %a, %b
3582 %retval = select i1 %cmp, i1 %cmp1, i1 false
3586 define i1 @auto_gen_104_logical_fmf(double %a, double %b) {
3587 ; CHECK-LABEL: @auto_gen_104_logical_fmf(
3588 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
3589 ; CHECK-NEXT: ret i1 [[RETVAL]]
3591 %cmp = fcmp une double %a, %b
3592 %cmp1 = fcmp fast une double %a, %b
3593 %retval = select i1 %cmp, i1 %cmp1, i1 false
3597 define i1 @auto_gen_105(double %a, double %b) {
3598 ; CHECK-LABEL: @auto_gen_105(
3599 ; CHECK-NEXT: ret i1 false
3601 %cmp = fcmp uno double %a, %b
3602 %cmp1 = fcmp false double %a, %b
3603 %retval = and i1 %cmp, %cmp1
3607 define i1 @auto_gen_105_logical(double %a, double %b) {
3608 ; CHECK-LABEL: @auto_gen_105_logical(
3609 ; CHECK-NEXT: ret i1 false
3611 %cmp = fcmp uno double %a, %b
3612 %cmp1 = fcmp false double %a, %b
3613 %retval = select i1 %cmp, i1 %cmp1, i1 false
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 %cmp1, i1 false
3627 define i1 @auto_gen_106(double %a, double %b) {
3628 ; CHECK-LABEL: @auto_gen_106(
3629 ; CHECK-NEXT: ret i1 false
3631 %cmp = fcmp uno double %a, %b
3632 %cmp1 = fcmp oeq double %a, %b
3633 %retval = and i1 %cmp, %cmp1
3637 define i1 @auto_gen_106_logical(double %a, double %b) {
3638 ; CHECK-LABEL: @auto_gen_106_logical(
3639 ; CHECK-NEXT: ret i1 false
3641 %cmp = fcmp uno double %a, %b
3642 %cmp1 = fcmp oeq double %a, %b
3643 %retval = select i1 %cmp, i1 %cmp1, i1 false
3647 define i1 @auto_gen_106_logical_fmf(double %a, double %b) {
3648 ; CHECK-LABEL: @auto_gen_106_logical_fmf(
3649 ; CHECK-NEXT: ret i1 false
3651 %cmp = fcmp uno double %a, %b
3652 %cmp1 = fcmp fast oeq double %a, %b
3653 %retval = select i1 %cmp, i1 %cmp1, i1 false
3657 define i1 @auto_gen_107(double %a, double %b) {
3658 ; CHECK-LABEL: @auto_gen_107(
3659 ; CHECK-NEXT: ret i1 false
3661 %cmp = fcmp uno double %a, %b
3662 %cmp1 = fcmp ogt double %a, %b
3663 %retval = and i1 %cmp, %cmp1
3667 define i1 @auto_gen_107_logical(double %a, double %b) {
3668 ; CHECK-LABEL: @auto_gen_107_logical(
3669 ; CHECK-NEXT: ret i1 false
3671 %cmp = fcmp uno double %a, %b
3672 %cmp1 = fcmp ogt double %a, %b
3673 %retval = select i1 %cmp, i1 %cmp1, i1 false
3677 define i1 @auto_gen_107_logical_fmf(double %a, double %b) {
3678 ; CHECK-LABEL: @auto_gen_107_logical_fmf(
3679 ; CHECK-NEXT: ret i1 false
3681 %cmp = fcmp fast uno double %a, %b
3682 %cmp1 = fcmp fast ogt double %a, %b
3683 %retval = select i1 %cmp, i1 %cmp1, i1 false
3687 define i1 @auto_gen_108(double %a, double %b) {
3688 ; CHECK-LABEL: @auto_gen_108(
3689 ; CHECK-NEXT: ret i1 false
3691 %cmp = fcmp uno double %a, %b
3692 %cmp1 = fcmp oge double %a, %b
3693 %retval = and i1 %cmp, %cmp1
3697 define i1 @auto_gen_108_logical(double %a, double %b) {
3698 ; CHECK-LABEL: @auto_gen_108_logical(
3699 ; CHECK-NEXT: ret i1 false
3701 %cmp = fcmp uno double %a, %b
3702 %cmp1 = fcmp oge double %a, %b
3703 %retval = select i1 %cmp, i1 %cmp1, i1 false
3707 define i1 @auto_gen_108_logical_fmf(double %a, double %b) {
3708 ; CHECK-LABEL: @auto_gen_108_logical_fmf(
3709 ; CHECK-NEXT: ret i1 false
3711 %cmp = fcmp uno double %a, %b
3712 %cmp1 = fcmp fast oge double %a, %b
3713 %retval = select i1 %cmp, i1 %cmp1, i1 false
3717 define i1 @auto_gen_109(double %a, double %b) {
3718 ; CHECK-LABEL: @auto_gen_109(
3719 ; CHECK-NEXT: ret i1 false
3721 %cmp = fcmp uno double %a, %b
3722 %cmp1 = fcmp olt double %a, %b
3723 %retval = and i1 %cmp, %cmp1
3727 define i1 @auto_gen_109_logical(double %a, double %b) {
3728 ; CHECK-LABEL: @auto_gen_109_logical(
3729 ; CHECK-NEXT: ret i1 false
3731 %cmp = fcmp uno double %a, %b
3732 %cmp1 = fcmp olt double %a, %b
3733 %retval = select i1 %cmp, i1 %cmp1, i1 false
3737 define i1 @auto_gen_109_logical_fmf(double %a, double %b) {
3738 ; CHECK-LABEL: @auto_gen_109_logical_fmf(
3739 ; CHECK-NEXT: ret i1 false
3741 %cmp = fcmp fast uno double %a, %b
3742 %cmp1 = fcmp fast olt double %a, %b
3743 %retval = select i1 %cmp, i1 %cmp1, i1 false
3747 define i1 @auto_gen_110(double %a, double %b) {
3748 ; CHECK-LABEL: @auto_gen_110(
3749 ; CHECK-NEXT: ret i1 false
3751 %cmp = fcmp uno double %a, %b
3752 %cmp1 = fcmp ole double %a, %b
3753 %retval = and i1 %cmp, %cmp1
3757 define i1 @auto_gen_110_logical(double %a, double %b) {
3758 ; CHECK-LABEL: @auto_gen_110_logical(
3759 ; CHECK-NEXT: ret i1 false
3761 %cmp = fcmp uno double %a, %b
3762 %cmp1 = fcmp ole double %a, %b
3763 %retval = select i1 %cmp, i1 %cmp1, i1 false
3767 define i1 @auto_gen_110_logical_fmf(double %a, double %b) {
3768 ; CHECK-LABEL: @auto_gen_110_logical_fmf(
3769 ; CHECK-NEXT: ret i1 false
3771 %cmp = fcmp uno double %a, %b
3772 %cmp1 = fcmp fast ole double %a, %b
3773 %retval = select i1 %cmp, i1 %cmp1, i1 false
3777 define i1 @auto_gen_111(double %a, double %b) {
3778 ; CHECK-LABEL: @auto_gen_111(
3779 ; CHECK-NEXT: ret i1 false
3781 %cmp = fcmp uno double %a, %b
3782 %cmp1 = fcmp one double %a, %b
3783 %retval = and i1 %cmp, %cmp1
3787 define i1 @auto_gen_111_logical(double %a, double %b) {
3788 ; CHECK-LABEL: @auto_gen_111_logical(
3789 ; CHECK-NEXT: ret i1 false
3791 %cmp = fcmp uno double %a, %b
3792 %cmp1 = fcmp one double %a, %b
3793 %retval = select i1 %cmp, i1 %cmp1, i1 false
3797 define i1 @auto_gen_111_logical_fmf(double %a, double %b) {
3798 ; CHECK-LABEL: @auto_gen_111_logical_fmf(
3799 ; CHECK-NEXT: ret i1 false
3801 %cmp = fcmp fast uno double %a, %b
3802 %cmp1 = fcmp fast one double %a, %b
3803 %retval = select i1 %cmp, i1 %cmp1, i1 false
3807 define i1 @auto_gen_112(double %a, double %b) {
3808 ; CHECK-LABEL: @auto_gen_112(
3809 ; CHECK-NEXT: ret i1 false
3811 %cmp = fcmp uno double %a, %b
3812 %cmp1 = fcmp ord double %a, %b
3813 %retval = and i1 %cmp, %cmp1
3817 define i1 @auto_gen_112_logical(double %a, double %b) {
3818 ; CHECK-LABEL: @auto_gen_112_logical(
3819 ; CHECK-NEXT: ret i1 false
3821 %cmp = fcmp uno double %a, %b
3822 %cmp1 = fcmp ord double %a, %b
3823 %retval = select i1 %cmp, i1 %cmp1, i1 false
3827 define i1 @auto_gen_112_logical_fmf(double %a, double %b) {
3828 ; CHECK-LABEL: @auto_gen_112_logical_fmf(
3829 ; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3830 ; CHECK-NEXT: ret i1 [[CMP]]
3832 %cmp = fcmp uno double %a, %b
3833 %cmp1 = fcmp fast ord double %a, %b
3834 %retval = select i1 %cmp, i1 %cmp1, i1 false
3838 define i1 @auto_gen_113(double %a, double %b) {
3839 ; CHECK-LABEL: @auto_gen_113(
3840 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3841 ; CHECK-NEXT: ret i1 [[RETVAL]]
3843 %cmp = fcmp uno double %a, %b
3844 %cmp1 = fcmp ueq double %a, %b
3845 %retval = and i1 %cmp, %cmp1
3849 define i1 @auto_gen_113_logical(double %a, double %b) {
3850 ; CHECK-LABEL: @auto_gen_113_logical(
3851 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3852 ; CHECK-NEXT: ret i1 [[RETVAL]]
3854 %cmp = fcmp uno double %a, %b
3855 %cmp1 = fcmp ueq double %a, %b
3856 %retval = select i1 %cmp, i1 %cmp1, i1 false
3860 define i1 @auto_gen_113_logical_fmf(double %a, double %b) {
3861 ; CHECK-LABEL: @auto_gen_113_logical_fmf(
3862 ; CHECK-NEXT: ret i1 false
3864 %cmp = fcmp fast uno double %a, %b
3865 %cmp1 = fcmp fast ueq double %a, %b
3866 %retval = select i1 %cmp, i1 %cmp1, i1 false
3870 define i1 @auto_gen_114(double %a, double %b) {
3871 ; CHECK-LABEL: @auto_gen_114(
3872 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3873 ; CHECK-NEXT: ret i1 [[RETVAL]]
3875 %cmp = fcmp uno double %a, %b
3876 %cmp1 = fcmp ugt double %a, %b
3877 %retval = and i1 %cmp, %cmp1
3881 define i1 @auto_gen_114_logical(double %a, double %b) {
3882 ; CHECK-LABEL: @auto_gen_114_logical(
3883 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3884 ; CHECK-NEXT: ret i1 [[RETVAL]]
3886 %cmp = fcmp uno double %a, %b
3887 %cmp1 = fcmp ugt double %a, %b
3888 %retval = select i1 %cmp, i1 %cmp1, i1 false
3892 define i1 @auto_gen_114_logical_fmf(double %a, double %b) {
3893 ; CHECK-LABEL: @auto_gen_114_logical_fmf(
3894 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3895 ; CHECK-NEXT: ret i1 [[RETVAL]]
3897 %cmp = fcmp uno double %a, %b
3898 %cmp1 = fcmp fast ugt double %a, %b
3899 %retval = select i1 %cmp, i1 %cmp1, i1 false
3903 define i1 @auto_gen_115(double %a, double %b) {
3904 ; CHECK-LABEL: @auto_gen_115(
3905 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3906 ; CHECK-NEXT: ret i1 [[RETVAL]]
3908 %cmp = fcmp uno double %a, %b
3909 %cmp1 = fcmp uge double %a, %b
3910 %retval = and i1 %cmp, %cmp1
3914 define i1 @auto_gen_115_logical(double %a, double %b) {
3915 ; CHECK-LABEL: @auto_gen_115_logical(
3916 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3917 ; CHECK-NEXT: ret i1 [[RETVAL]]
3919 %cmp = fcmp uno double %a, %b
3920 %cmp1 = fcmp uge double %a, %b
3921 %retval = select i1 %cmp, i1 %cmp1, i1 false
3925 define i1 @auto_gen_115_logical_fmf(double %a, double %b) {
3926 ; CHECK-LABEL: @auto_gen_115_logical_fmf(
3927 ; CHECK-NEXT: ret i1 false
3929 %cmp = fcmp fast uno double %a, %b
3930 %cmp1 = fcmp fast uge double %a, %b
3931 %retval = select i1 %cmp, i1 %cmp1, i1 false
3935 define i1 @auto_gen_116(double %a, double %b) {
3936 ; CHECK-LABEL: @auto_gen_116(
3937 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3938 ; CHECK-NEXT: ret i1 [[RETVAL]]
3940 %cmp = fcmp uno double %a, %b
3941 %cmp1 = fcmp ult double %a, %b
3942 %retval = and i1 %cmp, %cmp1
3946 define i1 @auto_gen_116_logical(double %a, double %b) {
3947 ; CHECK-LABEL: @auto_gen_116_logical(
3948 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3949 ; CHECK-NEXT: ret i1 [[RETVAL]]
3951 %cmp = fcmp uno double %a, %b
3952 %cmp1 = fcmp ult double %a, %b
3953 %retval = select i1 %cmp, i1 %cmp1, i1 false
3957 define i1 @auto_gen_116_logical_fmf(double %a, double %b) {
3958 ; CHECK-LABEL: @auto_gen_116_logical_fmf(
3959 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3960 ; CHECK-NEXT: ret i1 [[RETVAL]]
3962 %cmp = fcmp uno double %a, %b
3963 %cmp1 = fcmp fast ult double %a, %b
3964 %retval = select i1 %cmp, i1 %cmp1, i1 false
3968 define i1 @auto_gen_117(double %a, double %b) {
3969 ; CHECK-LABEL: @auto_gen_117(
3970 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3971 ; CHECK-NEXT: ret i1 [[RETVAL]]
3973 %cmp = fcmp uno double %a, %b
3974 %cmp1 = fcmp ule double %a, %b
3975 %retval = and i1 %cmp, %cmp1
3979 define i1 @auto_gen_117_logical(double %a, double %b) {
3980 ; CHECK-LABEL: @auto_gen_117_logical(
3981 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
3982 ; CHECK-NEXT: ret i1 [[RETVAL]]
3984 %cmp = fcmp uno double %a, %b
3985 %cmp1 = fcmp ule double %a, %b
3986 %retval = select i1 %cmp, i1 %cmp1, i1 false
3990 define i1 @auto_gen_117_logical_fmf(double %a, double %b) {
3991 ; CHECK-LABEL: @auto_gen_117_logical_fmf(
3992 ; CHECK-NEXT: ret i1 false
3994 %cmp = fcmp fast uno double %a, %b
3995 %cmp1 = fcmp fast ule double %a, %b
3996 %retval = select i1 %cmp, i1 %cmp1, i1 false
4000 define i1 @auto_gen_118(double %a, double %b) {
4001 ; CHECK-LABEL: @auto_gen_118(
4002 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4003 ; CHECK-NEXT: ret i1 [[RETVAL]]
4005 %cmp = fcmp uno double %a, %b
4006 %cmp1 = fcmp une double %a, %b
4007 %retval = and i1 %cmp, %cmp1
4011 define i1 @auto_gen_118_logical(double %a, double %b) {
4012 ; CHECK-LABEL: @auto_gen_118_logical(
4013 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4014 ; CHECK-NEXT: ret i1 [[RETVAL]]
4016 %cmp = fcmp uno double %a, %b
4017 %cmp1 = fcmp une double %a, %b
4018 %retval = select i1 %cmp, i1 %cmp1, i1 false
4022 define i1 @auto_gen_118_logical_fmf(double %a, double %b) {
4023 ; CHECK-LABEL: @auto_gen_118_logical_fmf(
4024 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4025 ; CHECK-NEXT: ret i1 [[RETVAL]]
4027 %cmp = fcmp uno double %a, %b
4028 %cmp1 = fcmp fast une double %a, %b
4029 %retval = select i1 %cmp, i1 %cmp1, i1 false
4033 define i1 @auto_gen_119(double %a, double %b) {
4034 ; CHECK-LABEL: @auto_gen_119(
4035 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4036 ; CHECK-NEXT: ret i1 [[RETVAL]]
4038 %cmp = fcmp uno double %a, %b
4039 %cmp1 = fcmp uno double %a, %b
4040 %retval = and i1 %cmp, %cmp1
4044 define i1 @auto_gen_119_logical(double %a, double %b) {
4045 ; CHECK-LABEL: @auto_gen_119_logical(
4046 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4047 ; CHECK-NEXT: ret i1 [[RETVAL]]
4049 %cmp = fcmp uno double %a, %b
4050 %cmp1 = fcmp uno double %a, %b
4051 %retval = select i1 %cmp, i1 %cmp1, i1 false
4055 define i1 @auto_gen_119_logical_fmf(double %a, double %b) {
4056 ; CHECK-LABEL: @auto_gen_119_logical_fmf(
4057 ; CHECK-NEXT: ret i1 false
4059 %cmp = fcmp fast uno double %a, %b
4060 %cmp1 = fcmp fast uno double %a, %b
4061 %retval = select i1 %cmp, i1 %cmp1, i1 false
4065 define i1 @auto_gen_120(double %a, double %b) {
4066 ; CHECK-LABEL: @auto_gen_120(
4067 ; CHECK-NEXT: ret i1 false
4069 %cmp = fcmp true double %a, %b
4070 %cmp1 = fcmp false double %a, %b
4071 %retval = and i1 %cmp, %cmp1
4075 define i1 @auto_gen_120_logical(double %a, double %b) {
4076 ; CHECK-LABEL: @auto_gen_120_logical(
4077 ; CHECK-NEXT: ret i1 false
4079 %cmp = fcmp true double %a, %b
4080 %cmp1 = fcmp false double %a, %b
4081 %retval = select i1 %cmp, i1 %cmp1, i1 false
4085 define i1 @auto_gen_120_logical_fmf(double %a, double %b) {
4086 ; CHECK-LABEL: @auto_gen_120_logical_fmf(
4087 ; CHECK-NEXT: ret i1 false
4089 %cmp = fcmp true double %a, %b
4090 %cmp1 = fcmp fast false double %a, %b
4091 %retval = select i1 %cmp, i1 %cmp1, i1 false
4095 define i1 @auto_gen_121(double %a, double %b) {
4096 ; CHECK-LABEL: @auto_gen_121(
4097 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
4098 ; CHECK-NEXT: ret i1 [[CMP1]]
4100 %cmp = fcmp true double %a, %b
4101 %cmp1 = fcmp oeq double %a, %b
4102 %retval = and i1 %cmp, %cmp1
4106 define i1 @auto_gen_121_logical(double %a, double %b) {
4107 ; CHECK-LABEL: @auto_gen_121_logical(
4108 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
4109 ; CHECK-NEXT: ret i1 [[CMP1]]
4111 %cmp = fcmp true double %a, %b
4112 %cmp1 = fcmp oeq double %a, %b
4113 %retval = select i1 %cmp, i1 %cmp1, i1 false
4117 define i1 @auto_gen_121_logical_fmf(double %a, double %b) {
4118 ; CHECK-LABEL: @auto_gen_121_logical_fmf(
4119 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
4120 ; CHECK-NEXT: ret i1 [[CMP1]]
4122 %cmp = fcmp fast true double %a, %b
4123 %cmp1 = fcmp fast oeq double %a, %b
4124 %retval = select i1 %cmp, i1 %cmp1, i1 false
4128 define i1 @auto_gen_122(double %a, double %b) {
4129 ; CHECK-LABEL: @auto_gen_122(
4130 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
4131 ; CHECK-NEXT: ret i1 [[CMP1]]
4133 %cmp = fcmp true double %a, %b
4134 %cmp1 = fcmp ogt double %a, %b
4135 %retval = and i1 %cmp, %cmp1
4139 define i1 @auto_gen_122_logical(double %a, double %b) {
4140 ; CHECK-LABEL: @auto_gen_122_logical(
4141 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]
4142 ; CHECK-NEXT: ret i1 [[CMP1]]
4144 %cmp = fcmp true double %a, %b
4145 %cmp1 = fcmp ogt double %a, %b
4146 %retval = select i1 %cmp, i1 %cmp1, i1 false
4150 define i1 @auto_gen_122_logical_fmf(double %a, double %b) {
4151 ; CHECK-LABEL: @auto_gen_122_logical_fmf(
4152 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]
4153 ; CHECK-NEXT: ret i1 [[CMP1]]
4155 %cmp = fcmp true double %a, %b
4156 %cmp1 = fcmp fast ogt double %a, %b
4157 %retval = select i1 %cmp, i1 %cmp1, i1 false
4161 define i1 @auto_gen_123(double %a, double %b) {
4162 ; CHECK-LABEL: @auto_gen_123(
4163 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
4164 ; CHECK-NEXT: ret i1 [[CMP1]]
4166 %cmp = fcmp true double %a, %b
4167 %cmp1 = fcmp oge double %a, %b
4168 %retval = and i1 %cmp, %cmp1
4172 define i1 @auto_gen_123_logical(double %a, double %b) {
4173 ; CHECK-LABEL: @auto_gen_123_logical(
4174 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]
4175 ; CHECK-NEXT: ret i1 [[CMP1]]
4177 %cmp = fcmp true double %a, %b
4178 %cmp1 = fcmp oge double %a, %b
4179 %retval = select i1 %cmp, i1 %cmp1, i1 false
4183 define i1 @auto_gen_123_logical_fmf(double %a, double %b) {
4184 ; CHECK-LABEL: @auto_gen_123_logical_fmf(
4185 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]
4186 ; CHECK-NEXT: ret i1 [[CMP1]]
4188 %cmp = fcmp fast true double %a, %b
4189 %cmp1 = fcmp fast oge double %a, %b
4190 %retval = select i1 %cmp, i1 %cmp1, i1 false
4194 define i1 @auto_gen_124(double %a, double %b) {
4195 ; CHECK-LABEL: @auto_gen_124(
4196 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
4197 ; CHECK-NEXT: ret i1 [[CMP1]]
4199 %cmp = fcmp true double %a, %b
4200 %cmp1 = fcmp olt double %a, %b
4201 %retval = and i1 %cmp, %cmp1
4205 define i1 @auto_gen_124_logical(double %a, double %b) {
4206 ; CHECK-LABEL: @auto_gen_124_logical(
4207 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]
4208 ; CHECK-NEXT: ret i1 [[CMP1]]
4210 %cmp = fcmp true double %a, %b
4211 %cmp1 = fcmp olt double %a, %b
4212 %retval = select i1 %cmp, i1 %cmp1, i1 false
4216 define i1 @auto_gen_124_logical_fmf(double %a, double %b) {
4217 ; CHECK-LABEL: @auto_gen_124_logical_fmf(
4218 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]
4219 ; CHECK-NEXT: ret i1 [[CMP1]]
4221 %cmp = fcmp true double %a, %b
4222 %cmp1 = fcmp fast olt double %a, %b
4223 %retval = select i1 %cmp, i1 %cmp1, i1 false
4227 define i1 @auto_gen_125(double %a, double %b) {
4228 ; CHECK-LABEL: @auto_gen_125(
4229 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
4230 ; CHECK-NEXT: ret i1 [[CMP1]]
4232 %cmp = fcmp true double %a, %b
4233 %cmp1 = fcmp ole double %a, %b
4234 %retval = and i1 %cmp, %cmp1
4238 define i1 @auto_gen_125_logical(double %a, double %b) {
4239 ; CHECK-LABEL: @auto_gen_125_logical(
4240 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]
4241 ; CHECK-NEXT: ret i1 [[CMP1]]
4243 %cmp = fcmp true double %a, %b
4244 %cmp1 = fcmp ole double %a, %b
4245 %retval = select i1 %cmp, i1 %cmp1, i1 false
4249 define i1 @auto_gen_125_logical_fmf(double %a, double %b) {
4250 ; CHECK-LABEL: @auto_gen_125_logical_fmf(
4251 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]
4252 ; CHECK-NEXT: ret i1 [[CMP1]]
4254 %cmp = fcmp fast true double %a, %b
4255 %cmp1 = fcmp fast ole double %a, %b
4256 %retval = select i1 %cmp, i1 %cmp1, i1 false
4260 define i1 @auto_gen_126(double %a, double %b) {
4261 ; CHECK-LABEL: @auto_gen_126(
4262 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
4263 ; CHECK-NEXT: ret i1 [[CMP1]]
4265 %cmp = fcmp true double %a, %b
4266 %cmp1 = fcmp one double %a, %b
4267 %retval = and i1 %cmp, %cmp1
4271 define i1 @auto_gen_126_logical(double %a, double %b) {
4272 ; CHECK-LABEL: @auto_gen_126_logical(
4273 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]
4274 ; CHECK-NEXT: ret i1 [[CMP1]]
4276 %cmp = fcmp true double %a, %b
4277 %cmp1 = fcmp one double %a, %b
4278 %retval = select i1 %cmp, i1 %cmp1, i1 false
4282 define i1 @auto_gen_126_logical_fmf(double %a, double %b) {
4283 ; CHECK-LABEL: @auto_gen_126_logical_fmf(
4284 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]
4285 ; CHECK-NEXT: ret i1 [[CMP1]]
4287 %cmp = fcmp true double %a, %b
4288 %cmp1 = fcmp fast one double %a, %b
4289 %retval = select i1 %cmp, i1 %cmp1, i1 false
4293 define i1 @auto_gen_127(double %a, double %b) {
4294 ; CHECK-LABEL: @auto_gen_127(
4295 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
4296 ; CHECK-NEXT: ret i1 [[CMP1]]
4298 %cmp = fcmp true double %a, %b
4299 %cmp1 = fcmp ord double %a, %b
4300 %retval = and i1 %cmp, %cmp1
4304 define i1 @auto_gen_127_logical(double %a, double %b) {
4305 ; CHECK-LABEL: @auto_gen_127_logical(
4306 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]
4307 ; CHECK-NEXT: ret i1 [[CMP1]]
4309 %cmp = fcmp true double %a, %b
4310 %cmp1 = fcmp ord double %a, %b
4311 %retval = select i1 %cmp, i1 %cmp1, i1 false
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 %cmp1, i1 false
4325 define i1 @auto_gen_128(double %a, double %b) {
4326 ; CHECK-LABEL: @auto_gen_128(
4327 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
4328 ; CHECK-NEXT: ret i1 [[CMP1]]
4330 %cmp = fcmp true double %a, %b
4331 %cmp1 = fcmp ueq double %a, %b
4332 %retval = and i1 %cmp, %cmp1
4336 define i1 @auto_gen_128_logical(double %a, double %b) {
4337 ; CHECK-LABEL: @auto_gen_128_logical(
4338 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]
4339 ; CHECK-NEXT: ret i1 [[CMP1]]
4341 %cmp = fcmp true double %a, %b
4342 %cmp1 = fcmp ueq double %a, %b
4343 %retval = select i1 %cmp, i1 %cmp1, i1 false
4347 define i1 @auto_gen_128_logical_fmf(double %a, double %b) {
4348 ; CHECK-LABEL: @auto_gen_128_logical_fmf(
4349 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]
4350 ; CHECK-NEXT: ret i1 [[CMP1]]
4352 %cmp = fcmp true double %a, %b
4353 %cmp1 = fcmp fast ueq double %a, %b
4354 %retval = select i1 %cmp, i1 %cmp1, i1 false
4358 define i1 @auto_gen_129(double %a, double %b) {
4359 ; CHECK-LABEL: @auto_gen_129(
4360 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
4361 ; CHECK-NEXT: ret i1 [[CMP1]]
4363 %cmp = fcmp true double %a, %b
4364 %cmp1 = fcmp ugt double %a, %b
4365 %retval = and i1 %cmp, %cmp1
4369 define i1 @auto_gen_129_logical(double %a, double %b) {
4370 ; CHECK-LABEL: @auto_gen_129_logical(
4371 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]
4372 ; CHECK-NEXT: ret i1 [[CMP1]]
4374 %cmp = fcmp true double %a, %b
4375 %cmp1 = fcmp ugt double %a, %b
4376 %retval = select i1 %cmp, i1 %cmp1, i1 false
4380 define i1 @auto_gen_129_logical_fmf(double %a, double %b) {
4381 ; CHECK-LABEL: @auto_gen_129_logical_fmf(
4382 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]]
4383 ; CHECK-NEXT: ret i1 [[CMP1]]
4385 %cmp = fcmp fast true double %a, %b
4386 %cmp1 = fcmp fast ugt double %a, %b
4387 %retval = select i1 %cmp, i1 %cmp1, i1 false
4391 define i1 @auto_gen_130(double %a, double %b) {
4392 ; CHECK-LABEL: @auto_gen_130(
4393 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
4394 ; CHECK-NEXT: ret i1 [[CMP1]]
4396 %cmp = fcmp true double %a, %b
4397 %cmp1 = fcmp uge double %a, %b
4398 %retval = and i1 %cmp, %cmp1
4402 define i1 @auto_gen_130_logical(double %a, double %b) {
4403 ; CHECK-LABEL: @auto_gen_130_logical(
4404 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]
4405 ; CHECK-NEXT: ret i1 [[CMP1]]
4407 %cmp = fcmp true double %a, %b
4408 %cmp1 = fcmp uge double %a, %b
4409 %retval = select i1 %cmp, i1 %cmp1, i1 false
4413 define i1 @auto_gen_130_logical_fmf(double %a, double %b) {
4414 ; CHECK-LABEL: @auto_gen_130_logical_fmf(
4415 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]
4416 ; CHECK-NEXT: ret i1 [[CMP1]]
4418 %cmp = fcmp true double %a, %b
4419 %cmp1 = fcmp fast uge double %a, %b
4420 %retval = select i1 %cmp, i1 %cmp1, i1 false
4424 define i1 @auto_gen_131(double %a, double %b) {
4425 ; CHECK-LABEL: @auto_gen_131(
4426 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
4427 ; CHECK-NEXT: ret i1 [[CMP1]]
4429 %cmp = fcmp true double %a, %b
4430 %cmp1 = fcmp ult double %a, %b
4431 %retval = and i1 %cmp, %cmp1
4435 define i1 @auto_gen_131_logical(double %a, double %b) {
4436 ; CHECK-LABEL: @auto_gen_131_logical(
4437 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]
4438 ; CHECK-NEXT: ret i1 [[CMP1]]
4440 %cmp = fcmp true double %a, %b
4441 %cmp1 = fcmp ult double %a, %b
4442 %retval = select i1 %cmp, i1 %cmp1, i1 false
4446 define i1 @auto_gen_131_logical_fmf(double %a, double %b) {
4447 ; CHECK-LABEL: @auto_gen_131_logical_fmf(
4448 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]
4449 ; CHECK-NEXT: ret i1 [[CMP1]]
4451 %cmp = fcmp fast true double %a, %b
4452 %cmp1 = fcmp fast ult double %a, %b
4453 %retval = select i1 %cmp, i1 %cmp1, i1 false
4457 define i1 @auto_gen_132(double %a, double %b) {
4458 ; CHECK-LABEL: @auto_gen_132(
4459 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
4460 ; CHECK-NEXT: ret i1 [[CMP1]]
4462 %cmp = fcmp true double %a, %b
4463 %cmp1 = fcmp ule double %a, %b
4464 %retval = and i1 %cmp, %cmp1
4468 define i1 @auto_gen_132_logical(double %a, double %b) {
4469 ; CHECK-LABEL: @auto_gen_132_logical(
4470 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]
4471 ; CHECK-NEXT: ret i1 [[CMP1]]
4473 %cmp = fcmp true double %a, %b
4474 %cmp1 = fcmp ule double %a, %b
4475 %retval = select i1 %cmp, i1 %cmp1, i1 false
4479 define i1 @auto_gen_132_logical_fmf(double %a, double %b) {
4480 ; CHECK-LABEL: @auto_gen_132_logical_fmf(
4481 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]
4482 ; CHECK-NEXT: ret i1 [[CMP1]]
4484 %cmp = fcmp true double %a, %b
4485 %cmp1 = fcmp fast ule double %a, %b
4486 %retval = select i1 %cmp, i1 %cmp1, i1 false
4490 define i1 @auto_gen_133(double %a, double %b) {
4491 ; CHECK-LABEL: @auto_gen_133(
4492 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
4493 ; CHECK-NEXT: ret i1 [[CMP1]]
4495 %cmp = fcmp true double %a, %b
4496 %cmp1 = fcmp une double %a, %b
4497 %retval = and i1 %cmp, %cmp1
4501 define i1 @auto_gen_133_logical(double %a, double %b) {
4502 ; CHECK-LABEL: @auto_gen_133_logical(
4503 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]
4504 ; CHECK-NEXT: ret i1 [[CMP1]]
4506 %cmp = fcmp true double %a, %b
4507 %cmp1 = fcmp une double %a, %b
4508 %retval = select i1 %cmp, i1 %cmp1, i1 false
4512 define i1 @auto_gen_133_logical_fmf(double %a, double %b) {
4513 ; CHECK-LABEL: @auto_gen_133_logical_fmf(
4514 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]
4515 ; CHECK-NEXT: ret i1 [[CMP1]]
4517 %cmp = fcmp fast true double %a, %b
4518 %cmp1 = fcmp fast une double %a, %b
4519 %retval = select i1 %cmp, i1 %cmp1, i1 false
4523 define i1 @auto_gen_134(double %a, double %b) {
4524 ; CHECK-LABEL: @auto_gen_134(
4525 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4526 ; CHECK-NEXT: ret i1 [[CMP1]]
4528 %cmp = fcmp true double %a, %b
4529 %cmp1 = fcmp uno double %a, %b
4530 %retval = and i1 %cmp, %cmp1
4534 define i1 @auto_gen_134_logical(double %a, double %b) {
4535 ; CHECK-LABEL: @auto_gen_134_logical(
4536 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
4537 ; CHECK-NEXT: ret i1 [[CMP1]]
4539 %cmp = fcmp true double %a, %b
4540 %cmp1 = fcmp uno double %a, %b
4541 %retval = select i1 %cmp, i1 %cmp1, i1 false
4545 define i1 @auto_gen_134_logical_fmf(double %a, double %b) {
4546 ; CHECK-LABEL: @auto_gen_134_logical_fmf(
4547 ; CHECK-NEXT: ret i1 false
4549 %cmp = fcmp true double %a, %b
4550 %cmp1 = fcmp fast uno double %a, %b
4551 %retval = select i1 %cmp, i1 %cmp1, i1 false
4555 define i1 @auto_gen_135(double %a, double %b) {
4556 ; CHECK-LABEL: @auto_gen_135(
4557 ; CHECK-NEXT: ret i1 true
4559 %cmp = fcmp true double %a, %b
4560 %cmp1 = fcmp true double %a, %b
4561 %retval = and i1 %cmp, %cmp1
4565 define i1 @auto_gen_135_logical(double %a, double %b) {
4566 ; CHECK-LABEL: @auto_gen_135_logical(
4567 ; CHECK-NEXT: ret i1 true
4569 %cmp = fcmp true double %a, %b
4570 %cmp1 = fcmp true double %a, %b
4571 %retval = select i1 %cmp, i1 %cmp1, i1 false
4575 define i1 @auto_gen_135_logical_fmf(double %a, double %b) {
4576 ; CHECK-LABEL: @auto_gen_135_logical_fmf(
4577 ; CHECK-NEXT: ret i1 true
4579 %cmp = fcmp fast true double %a, %b
4580 %cmp1 = fcmp fast true double %a, %b
4581 %retval = select i1 %cmp, i1 %cmp1, i1 false
4585 define i1 @intersect_fmf_1(double %a, double %b) {
4586 ; CHECK-LABEL: @intersect_fmf_1(
4587 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]
4588 ; CHECK-NEXT: ret i1 [[RETVAL]]
4590 %cmp = fcmp fast ole double %a, %b
4591 %cmp1 = fcmp fast oge double %a, %b
4592 %retval = and i1 %cmp, %cmp1
4596 define i1 @intersect_fmf_2(double %a, double %b) {
4597 ; CHECK-LABEL: @intersect_fmf_2(
4598 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
4599 ; CHECK-NEXT: ret i1 [[RETVAL]]
4601 %cmp = fcmp fast ole double %a, %b
4602 %cmp1 = fcmp oge double %a, %b
4603 %retval = and i1 %cmp, %cmp1
4607 define i1 @intersect_fmf_3(double %a, double %b) {
4608 ; CHECK-LABEL: @intersect_fmf_3(
4609 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
4610 ; CHECK-NEXT: ret i1 [[RETVAL]]
4612 %cmp = fcmp ole double %a, %b
4613 %cmp1 = fcmp fast oge double %a, %b
4614 %retval = and i1 %cmp, %cmp1
4618 define i1 @intersect_fmf_4(double %a, double %b) {
4619 ; CHECK-LABEL: @intersect_fmf_4(
4620 ; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]
4621 ; CHECK-NEXT: ret i1 [[RETVAL]]
4623 %cmp = fcmp ninf ole double %a, %b
4624 %cmp1 = fcmp nnan oge double %a, %b
4625 %retval = and i1 %cmp, %cmp1
4629 ; Clang used to emit this pattern in __builtin_isnormal
4630 ; https://alive2.llvm.org/ce/z/8sw9vi
4631 define i1 @clang_builtin_isnormal_inf_check(half %x) {
4632 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check(
4633 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4634 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4635 ; CHECK-NEXT: ret i1 [[AND]]
4637 %fabs.x = call half @llvm.fabs.f16(half %x)
4638 %ord = fcmp ord half %fabs.x, 0.0
4639 %cmp = fcmp uge half %fabs.x, 0xH7C00
4640 %and = and i1 %ord, %cmp
4644 define <2 x i1> @clang_builtin_isnormal_inf_check_vector(<2 x half> %x) {
4645 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_vector(
4646 ; CHECK-NEXT: [[FABS_X:%.*]] = call <2 x half> @llvm.fabs.v2f16(<2 x half> [[X:%.*]])
4647 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq <2 x half> [[FABS_X]], splat (half 0xH7C00)
4648 ; CHECK-NEXT: ret <2 x i1> [[AND]]
4650 %fabs.x = call <2 x half> @llvm.fabs.v2f16(<2 x half> %x)
4651 %ord = fcmp ord <2 x half> %fabs.x, zeroinitializer
4652 %cmp = fcmp uge <2 x half> %fabs.x, <half 0xH7C00, half 0xH7C00>
4653 %and = and <2 x i1> %ord, %cmp
4657 define i1 @clang_builtin_isnormal_inf_check_commute(half %x) {
4658 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute(
4659 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4660 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4661 ; CHECK-NEXT: ret i1 [[AND]]
4663 %fabs.x = call half @llvm.fabs.f16(half %x)
4664 %ord = fcmp ord half %fabs.x, 0.0
4665 %cmp = fcmp uge half %fabs.x, 0xH7C00
4666 %and = and i1 %cmp, %ord
4670 define i1 @clang_builtin_isnormal_inf_check_commute_nsz_rhs(half %x) {
4671 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nsz_rhs(
4672 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4673 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4674 ; CHECK-NEXT: ret i1 [[AND]]
4676 %fabs.x = call half @llvm.fabs.f16(half %x)
4677 %ord = fcmp nsz ord half %fabs.x, 0.0
4678 %cmp = fcmp uge half %fabs.x, 0xH7C00
4679 %and = and i1 %cmp, %ord
4683 define i1 @clang_builtin_isnormal_inf_check_commute_nsz_lhs(half %x) {
4684 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nsz_lhs(
4685 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4686 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4687 ; CHECK-NEXT: ret i1 [[AND]]
4689 %fabs.x = call half @llvm.fabs.f16(half %x)
4690 %ord = fcmp ord half %fabs.x, 0.0
4691 %cmp = fcmp nsz uge half %fabs.x, 0xH7C00
4692 %and = and i1 %cmp, %ord
4696 define i1 @clang_builtin_isnormal_inf_check_commute_nofabs_ueq(half %x) {
4697 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nofabs_ueq(
4698 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[X:%.*]], 0xH7C00
4699 ; CHECK-NEXT: ret i1 [[AND]]
4701 %ord = fcmp ord half %x, 0.0
4702 %cmp = fcmp ueq half %x, 0xH7C00
4703 %and = and i1 %cmp, %ord
4707 define i1 @clang_builtin_isnormal_inf_check_commute_nsz(half %x) {
4708 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nsz(
4709 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4710 ; CHECK-NEXT: [[AND:%.*]] = fcmp nsz oeq half [[FABS_X]], 0xH7C00
4711 ; CHECK-NEXT: ret i1 [[AND]]
4713 %fabs.x = call half @llvm.fabs.f16(half %x)
4714 %ord = fcmp nsz ord half %fabs.x, 0.0
4715 %cmp = fcmp nsz uge half %fabs.x, 0xH7C00
4716 %and = and i1 %cmp, %ord
4721 define i1 @clang_builtin_isnormal_inf_check_ugt(half %x) {
4722 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ugt(
4723 ; CHECK-NEXT: ret i1 false
4725 %fabs.x = call half @llvm.fabs.f16(half %x)
4726 %ord = fcmp ord half %fabs.x, 0.0
4727 %cmp = fcmp ugt half %fabs.x, 0xH7C00
4728 %and = and i1 %ord, %cmp
4733 define i1 @clang_builtin_isnormal_inf_check_ult(half %x) {
4734 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ult(
4735 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4736 ; CHECK-NEXT: [[AND:%.*]] = fcmp one half [[FABS_X]], 0xH7C00
4737 ; CHECK-NEXT: ret i1 [[AND]]
4739 %fabs.x = call half @llvm.fabs.f16(half %x)
4740 %ord = fcmp ord half %fabs.x, 0.0
4741 %cmp = fcmp ult half %fabs.x, 0xH7C00
4742 %and = and i1 %ord, %cmp
4747 define i1 @clang_builtin_isnormal_inf_check_ule(half %x) {
4748 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ule(
4749 ; CHECK-NEXT: [[ORD:%.*]] = fcmp ord half [[X:%.*]], 0xH0000
4750 ; CHECK-NEXT: ret i1 [[ORD]]
4752 %fabs.x = call half @llvm.fabs.f16(half %x)
4753 %ord = fcmp ord half %fabs.x, 0.0
4754 %cmp = fcmp ule half %fabs.x, 0xH7C00
4755 %and = and i1 %ord, %cmp
4760 define i1 @clang_builtin_isnormal_inf_check_ueq(half %x) {
4761 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ueq(
4762 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4763 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4764 ; CHECK-NEXT: ret i1 [[AND]]
4766 %fabs.x = call half @llvm.fabs.f16(half %x)
4767 %ord = fcmp ord half %fabs.x, 0.0
4768 %cmp = fcmp ueq half %fabs.x, 0xH7C00
4769 %and = and i1 %ord, %cmp
4774 define i1 @clang_builtin_isnormal_inf_check_une(half %x) {
4775 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_une(
4776 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4777 ; CHECK-NEXT: [[AND:%.*]] = fcmp one half [[FABS_X]], 0xH7C00
4778 ; CHECK-NEXT: ret i1 [[AND]]
4780 %fabs.x = call half @llvm.fabs.f16(half %x)
4781 %ord = fcmp ord half %fabs.x, 0.0
4782 %cmp = fcmp une half %fabs.x, 0xH7C00
4783 %and = and i1 %ord, %cmp
4788 define i1 @clang_builtin_isnormal_inf_check_uno(half %x) {
4789 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_uno(
4790 ; CHECK-NEXT: ret i1 false
4792 %fabs.x = call half @llvm.fabs.f16(half %x)
4793 %ord = fcmp ord half %fabs.x, 0.0
4794 %cmp = fcmp uno half %fabs.x, 0xH7C00
4795 %and = and i1 %ord, %cmp
4800 define i1 @clang_builtin_isnormal_inf_check_ord(half %x) {
4801 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ord(
4802 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord half [[X:%.*]], 0xH0000
4803 ; CHECK-NEXT: ret i1 [[CMP]]
4805 %fabs.x = call half @llvm.fabs.f16(half %x)
4806 %ord = fcmp ord half %fabs.x, 0.0
4807 %cmp = fcmp ord half %fabs.x, 0xH7C00
4808 %and = and i1 %ord, %cmp
4812 define i1 @clang_builtin_isnormal_inf_check_oge(half %x) {
4813 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_oge(
4814 ; CHECK-NEXT: [[TMP1:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4815 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[TMP1]], 0xH7C00
4816 ; CHECK-NEXT: ret i1 [[AND]]
4818 %fabs.x = call half @llvm.fabs.f16(half %x)
4819 %ord = fcmp ord half %fabs.x, 0.0
4820 %cmp = fcmp oge half %fabs.x, 0xH7C00
4821 %and = and i1 %ord, %cmp
4825 define i1 @clang_builtin_isnormal_inf_check_olt(half %x) {
4826 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_olt(
4827 ; CHECK-NEXT: [[TMP1:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4828 ; CHECK-NEXT: [[AND:%.*]] = fcmp one half [[TMP1]], 0xH7C00
4829 ; CHECK-NEXT: ret i1 [[AND]]
4831 %fabs.x = call half @llvm.fabs.f16(half %x)
4832 %ord = fcmp ord half %fabs.x, 0.0
4833 %cmp = fcmp olt half %fabs.x, 0xH7C00
4834 %and = and i1 %ord, %cmp
4838 define i1 @clang_builtin_isnormal_inf_check_ole(half %x) {
4839 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ole(
4840 ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord half [[X:%.*]], 0xH0000
4841 ; CHECK-NEXT: ret i1 [[CMP]]
4843 %fabs.x = call half @llvm.fabs.f16(half %x)
4844 %ord = fcmp ord half %fabs.x, 0.0
4845 %cmp = fcmp ole half %fabs.x, 0xH7C00
4846 %and = and i1 %ord, %cmp
4850 define i1 @clang_builtin_isnormal_inf_check_oeq(half %x) {
4851 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_oeq(
4852 ; CHECK-NEXT: [[TMP1:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4853 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[TMP1]], 0xH7C00
4854 ; CHECK-NEXT: ret i1 [[AND]]
4856 %fabs.x = call half @llvm.fabs.f16(half %x)
4857 %ord = fcmp ord half %fabs.x, 0.0
4858 %cmp = fcmp oeq half %fabs.x, 0xH7C00
4859 %and = and i1 %ord, %cmp
4863 define i1 @clang_builtin_isnormal_inf_check_unnececcary_fabs(half %x) {
4864 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_unnececcary_fabs(
4865 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4866 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4867 ; CHECK-NEXT: ret i1 [[AND]]
4869 %fabs.x = call half @llvm.fabs.f16(half %x)
4870 %ord = fcmp ord half %x, 0.0
4871 %ueq = fcmp uge half %fabs.x, 0xH7C00
4872 %and = and i1 %ord, %ueq
4877 define i1 @clang_builtin_isnormal_inf_check_not_ord(half %x) {
4878 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_not_ord(
4879 ; CHECK-NEXT: [[AND:%.*]] = fcmp uno half [[X:%.*]], 0xH0000
4880 ; CHECK-NEXT: ret i1 [[AND]]
4882 %fabs.x = call half @llvm.fabs.f16(half %x)
4883 %ord = fcmp uno half %fabs.x, 0.0
4884 %ueq = fcmp uge half %fabs.x, 0xH7C00
4885 %and = and i1 %ord, %ueq
4889 define i1 @clang_builtin_isnormal_inf_check_missing_fabs(half %x) {
4890 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_missing_fabs(
4891 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[X:%.*]], 0xH7C00
4892 ; CHECK-NEXT: ret i1 [[AND]]
4894 %fabs.x = call half @llvm.fabs.f16(half %x)
4895 %ord = fcmp ord half %x, 0.0
4896 %ueq = fcmp uge half %x, 0xH7C00
4897 %and = and i1 %ord, %ueq
4901 define i1 @clang_builtin_isnormal_inf_check_neg_inf(half %x) {
4902 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_neg_inf(
4903 ; CHECK-NEXT: [[ORD:%.*]] = fcmp ord half [[X:%.*]], 0xH0000
4904 ; CHECK-NEXT: ret i1 [[ORD]]
4906 %fabs.x = call half @llvm.fabs.f16(half %x)
4907 %ord = fcmp ord half %fabs.x, 0.0
4908 %ueq = fcmp uge half %fabs.x, 0xHFC00
4909 %and = and i1 %ord, %ueq
4914 define i1 @clang_builtin_isnormal_inf_check_not_inf(half %x) {
4915 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_not_inf(
4916 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4917 ; CHECK-NEXT: [[ORD:%.*]] = fcmp ord half [[X]], 0xH0000
4918 ; CHECK-NEXT: [[UEQ:%.*]] = fcmp uge half [[FABS_X]], 0xH7BFF
4919 ; CHECK-NEXT: [[AND:%.*]] = and i1 [[ORD]], [[UEQ]]
4920 ; CHECK-NEXT: ret i1 [[AND]]
4922 %fabs.x = call half @llvm.fabs.f16(half %x)
4923 %ord = fcmp ord half %fabs.x, 0.0
4924 %ueq = fcmp uge half %fabs.x, 0xH7BFF
4925 %and = and i1 %ord, %ueq
4929 define i1 @clang_builtin_isnormal_inf_check_nsz_lhs(half %x) {
4930 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_nsz_lhs(
4931 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4932 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4933 ; CHECK-NEXT: ret i1 [[AND]]
4935 %fabs.x = call half @llvm.fabs.f16(half %x)
4936 %ord = fcmp nsz ord half %fabs.x, 0.0
4937 %ueq = fcmp uge half %fabs.x, 0xH7C00
4938 %and = and i1 %ord, %ueq
4942 define i1 @clang_builtin_isnormal_inf_check_nsz_rhs(half %x) {
4943 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_nsz_rhs(
4944 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4945 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4946 ; CHECK-NEXT: ret i1 [[AND]]
4948 %fabs.x = call half @llvm.fabs.f16(half %x)
4949 %ord = fcmp ord half %fabs.x, 0.0
4950 %ueq = fcmp nsz uge half %fabs.x, 0xH7C00
4951 %and = and i1 %ord, %ueq
4955 define i1 @clang_builtin_isnormal_inf_check_nsz(half %x) {
4956 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_nsz(
4957 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4958 ; CHECK-NEXT: [[AND:%.*]] = fcmp nsz oeq half [[FABS_X]], 0xH7C00
4959 ; CHECK-NEXT: ret i1 [[AND]]
4961 %fabs.x = call half @llvm.fabs.f16(half %x)
4962 %ord = fcmp nsz ord half %fabs.x, 0.0
4963 %ueq = fcmp nsz uge half %fabs.x, 0xH7C00
4964 %and = and i1 %ord, %ueq
4968 define i1 @clang_builtin_isnormal_inf_check_fneg(half %x) {
4969 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_fneg(
4970 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[X:%.*]], 0xH7C00
4971 ; CHECK-NEXT: ret i1 [[AND]]
4973 %fneg.x = fneg half %x
4974 %ord = fcmp ord half %fneg.x, 0.0
4975 %cmp = fcmp uge half %x, 0xH7C00
4976 %and = and i1 %ord, %cmp
4980 define i1 @clang_builtin_isnormal_inf_check_copysign(half %x, half %y) {
4981 ; CHECK-LABEL: @clang_builtin_isnormal_inf_check_copysign(
4982 ; CHECK-NEXT: [[COPYSIGN_X:%.*]] = call half @llvm.copysign.f16(half [[X:%.*]], half [[Y:%.*]])
4983 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[COPYSIGN_X]], 0xH7C00
4984 ; CHECK-NEXT: ret i1 [[AND]]
4986 %copysign.x = call half @llvm.copysign.f16(half %x, half %y)
4987 %ord = fcmp ord half %x, 0.0
4988 %cmp = fcmp uge half %copysign.x, 0xH7C00
4989 %and = and i1 %ord, %cmp
4993 define i1 @isnormal_logical_select_0(half %x) {
4994 ; CHECK-LABEL: @isnormal_logical_select_0(
4995 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
4996 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
4997 ; CHECK-NEXT: ret i1 [[AND]]
4999 %fabs.x = call half @llvm.fabs.f16(half %x)
5000 %ord = fcmp ord half %fabs.x, 0.0
5001 %cmp.inf = fcmp uge half %fabs.x, 0xH7C00
5002 %and = select i1 %ord, i1 %cmp.inf, i1 false
5006 define i1 @isnormal_logical_select_1(half %x) {
5007 ; CHECK-LABEL: @isnormal_logical_select_1(
5008 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
5009 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
5010 ; CHECK-NEXT: ret i1 [[AND]]
5012 %fabs.x = call half @llvm.fabs.f16(half %x)
5013 %ord = fcmp ord half %fabs.x, 0.0
5014 %cmp.inf = fcmp uge half %fabs.x, 0xH7C00
5015 %and = select i1 %cmp.inf, i1 %ord, i1 false
5019 define i1 @isnormal_logical_select_0_fmf0(half %x) {
5020 ; CHECK-LABEL: @isnormal_logical_select_0_fmf0(
5021 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
5022 ; CHECK-NEXT: [[AND:%.*]] = fcmp reassoc nsz arcp oeq half [[FABS_X]], 0xH7C00
5023 ; CHECK-NEXT: ret i1 [[AND]]
5025 %fabs.x = call half @llvm.fabs.f16(half %x)
5026 %ord = fcmp nsz arcp reassoc ord half %fabs.x, 0.0
5027 %cmp.inf = fcmp nsz arcp reassoc uge half %fabs.x, 0xH7C00
5028 %and = select i1 %ord, i1 %cmp.inf, i1 false
5032 define i1 @isnormal_logical_select_0_fmf1(half %x) {
5033 ; CHECK-LABEL: @isnormal_logical_select_0_fmf1(
5034 ; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])
5035 ; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00
5036 ; CHECK-NEXT: ret i1 [[AND]]
5038 %fabs.x = call half @llvm.fabs.f16(half %x)
5039 %ord = fcmp ord half %fabs.x, 0.0
5040 %cmp.inf = fcmp nsz arcp reassoc uge half %fabs.x, 0xH7C00
5041 %and = select i1 %ord, i1 %cmp.inf, i1 false
5045 define i1 @and_fcmp_reassoc1(i1 %x, double %a, double %b) {
5046 ; CHECK-LABEL: @and_fcmp_reassoc1(
5047 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
5048 ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]]
5049 ; CHECK-NEXT: ret i1 [[RETVAL]]
5051 %cmp = fcmp ult double %a, %b
5052 %cmp1 = fcmp ugt double %a, %b
5053 %and = and i1 %cmp, %x
5054 %retval = and i1 %and, %cmp1
5058 define i1 @and_fcmp_reassoc2(i1 %x, double %a, double %b) {
5059 ; CHECK-LABEL: @and_fcmp_reassoc2(
5060 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
5061 ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]]
5062 ; CHECK-NEXT: ret i1 [[RETVAL]]
5064 %cmp = fcmp ult double %a, %b
5065 %cmp1 = fcmp ugt double %a, %b
5066 %and = and i1 %x, %cmp
5067 %retval = and i1 %and, %cmp1
5071 define i1 @and_fcmp_reassoc3(i1 %x, double %a, double %b) {
5072 ; CHECK-LABEL: @and_fcmp_reassoc3(
5073 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
5074 ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]]
5075 ; CHECK-NEXT: ret i1 [[RETVAL]]
5077 %cmp = fcmp ult double %a, %b
5078 %cmp1 = fcmp ugt double %a, %b
5079 %and = and i1 %cmp, %x
5080 %retval = and i1 %cmp1, %and
5084 define i1 @and_fcmp_reassoc4(i1 %x, double %a, double %b) {
5085 ; CHECK-LABEL: @and_fcmp_reassoc4(
5086 ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]
5087 ; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]]
5088 ; CHECK-NEXT: ret i1 [[RETVAL]]
5090 %cmp = fcmp ult double %a, %b
5091 %cmp1 = fcmp ugt double %a, %b
5092 %and = and i1 %x, %cmp
5093 %retval = and i1 %cmp1, %and
5097 declare half @llvm.fabs.f16(half)
5098 declare <2 x half> @llvm.fabs.v2f16(<2 x half>)
5099 declare half @llvm.copysign.f16(half, half)