Lines Matching full:arg
13 define float @clamp_is_ogt_1_to_1(float %arg) {
15 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2:[0-9]+]] {
16 ; CHECK-NEXT: [[IS_OGT_1:%.*]] = fcmp ogt float [[ARG]], 1.000000e+00
17 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGT_1]], float 1.000000e+00, float [[ARG]]
20 %is.ogt.1 = fcmp ogt float %arg, 1.0
21 %select = select i1 %is.ogt.1, float 1.0, float %arg
25 define float @clamp_is_ogt_1_to_1_commute(float %arg) {
27 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
28 ; CHECK-NEXT: [[IS_ULE_1:%.*]] = fcmp ule float [[ARG]], 1.000000e+00
29 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULE_1]], float [[ARG]], float 1.000000e+00
32 %is.ule.1 = fcmp ule float %arg, 1.0
33 %select = select i1 %is.ule.1, float %arg, float 1.0
38 define float @clamp_is_ugt_1_to_1(float %arg) {
40 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
41 ; CHECK-NEXT: [[IS_UGT_1:%.*]] = fcmp ugt float [[ARG]], 1.000000e+00
42 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_1]], float 1.000000e+00, float [[ARG]]
45 %is.ugt.1 = fcmp ugt float %arg, 1.0
46 %select = select i1 %is.ugt.1, float 1.0, float %arg
51 define float @clamp_is_ugt_1_to_1_commute(float %arg) {
53 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
54 ; CHECK-NEXT: [[IS_OLE_1:%.*]] = fcmp ole float [[ARG]], 1.000000e+00
55 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_1]], float [[ARG]], float 1.000000e+00
58 %is.ole.1 = fcmp ole float %arg, 1.0
59 %select = select i1 %is.ole.1, float %arg, float 1.0
64 define float @clamp_is_oge_1_to_1(float %arg) {
66 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
67 ; CHECK-NEXT: [[IS_OGE_1:%.*]] = fcmp oge float [[ARG]], 1.000000e+00
68 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGE_1]], float 1.000000e+00, float [[ARG]]
71 %is.oge.1 = fcmp oge float %arg, 1.0
72 %select = select i1 %is.oge.1, float 1.0, float %arg
76 define float @clamp_is_oge_1_to_1_commute(float %arg) {
78 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
79 ; CHECK-NEXT: [[IS_ULT_1:%.*]] = fcmp ult float [[ARG]], 1.000000e+00
80 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULT_1]], float [[ARG]], float 1.000000e+00
83 %is.ult.1 = fcmp ult float %arg, 1.0
84 %select = select i1 %is.ult.1, float %arg, float 1.0
89 define float @clamp_is_uge_1_to_1(float %arg) {
91 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
92 ; CHECK-NEXT: [[IS_UGT_1:%.*]] = fcmp uge float [[ARG]], 1.000000e+00
93 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_1]], float 1.000000e+00, float [[ARG]]
96 %is.ugt.1 = fcmp uge float %arg, 1.0
97 %select = select i1 %is.ugt.1, float 1.0, float %arg
102 define float @clamp_is_olt_1_to_1(float %arg) {
104 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
105 ; CHECK-NEXT: [[IS_OLT_1:%.*]] = fcmp olt float [[ARG]], 1.000000e+00
106 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_1]], float 1.000000e+00, float [[ARG]]
109 %is.olt.1 = fcmp olt float %arg, 1.0
110 %select = select i1 %is.olt.1, float 1.0, float %arg
115 define float @clamp_is_olt_1_to_1_commute(float %arg) {
117 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
118 ; CHECK-NEXT: [[IS_UGE_1:%.*]] = fcmp uge float [[ARG]], 1.000000e+00
119 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGE_1]], float [[ARG]], float 1.000000e+00
122 %is.uge.1 = fcmp uge float %arg, 1.0
123 %select = select i1 %is.uge.1, float %arg, float 1.0
128 define float @clamp_is_ult_1_to_1(float %arg) {
130 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
131 ; CHECK-NEXT: [[IS_ULT_1:%.*]] = fcmp ult float [[ARG]], 1.000000e+00
132 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULT_1]], float 1.000000e+00, float [[ARG]]
135 %is.ult.1 = fcmp ult float %arg, 1.0
136 %select = select i1 %is.ult.1, float 1.0, float %arg
141 define float @clamp_is_ult_1_to_1_commute(float %arg) {
143 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
144 ; CHECK-NEXT: [[IS_OGE_1:%.*]] = fcmp oge float [[ARG]], 1.000000e+00
145 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGE_1]], float [[ARG]], float 1.000000e+00
148 %is.oge.1 = fcmp oge float %arg, 1.0
149 %select = select i1 %is.oge.1, float %arg, float 1.0
154 define float @clamp_is_ole_1_to_1(float %arg) {
156 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
157 ; CHECK-NEXT: [[IS_OLE_1:%.*]] = fcmp ole float [[ARG]], 1.000000e+00
158 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_1]], float 1.000000e+00, float [[ARG]]
161 %is.ole.1 = fcmp ole float %arg, 1.0
162 %select = select i1 %is.ole.1, float 1.0, float %arg
167 define float @clamp_is_ule_1_to_1(float %arg) {
169 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
170 ; CHECK-NEXT: [[IS_ULE_1:%.*]] = fcmp ule float [[ARG]], 1.000000e+00
171 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULE_1]], float 1.000000e+00, float [[ARG]]
174 %is.ule.1 = fcmp ule float %arg, 1.0
175 %select = select i1 %is.ule.1, float 1.0, float %arg
180 define float @clamp_is_olt_1_to_0(float %arg) {
182 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
183 ; CHECK-NEXT: [[IS_OLT_1:%.*]] = fcmp olt float [[ARG]], 1.000000e+00
184 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_1]], float 0.000000e+00, float [[ARG]]
187 %is.olt.1 = fcmp olt float %arg, 1.0
188 %select = select i1 %is.olt.1, float 0.0, float %arg
193 define float @clamp_is_ult_1_to_0(float %arg) {
195 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
196 ; CHECK-NEXT: [[IS_ULT_1:%.*]] = fcmp olt float [[ARG]], 1.000000e+00
197 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULT_1]], float 0.000000e+00, float [[ARG]]
200 %is.ult.1 = fcmp olt float %arg, 1.0
201 %select = select i1 %is.ult.1, float 0.0, float %arg
206 define float @clamp_is_ole_1_to_0(float %arg) {
208 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
209 ; CHECK-NEXT: [[IS_OLE_1:%.*]] = fcmp ole float [[ARG]], 1.000000e+00
210 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_1]], float 0.000000e+00, float [[ARG]]
213 %is.ole.1 = fcmp ole float %arg, 1.0
214 %select = select i1 %is.ole.1, float 0.0, float %arg
219 define float @clamp_is_ole_1_to_0_commute(float %arg) {
221 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
222 ; CHECK-NEXT: [[IS_UGT_1:%.*]] = fcmp ugt float [[ARG]], 1.000000e+00
223 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_1]], float [[ARG]], float 0.000000e+00
226 %is.ugt.1 = fcmp ugt float %arg, 1.0
227 %select = select i1 %is.ugt.1, float %arg, float 0.0
232 define float @clamp_is_ule_1_to_0(float %arg) {
234 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
235 ; CHECK-NEXT: [[IS_ULE_1:%.*]] = fcmp ole float [[ARG]], 1.000000e+00
236 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULE_1]], float 0.000000e+00, float [[ARG]]
239 %is.ule.1 = fcmp ole float %arg, 1.0
240 %select = select i1 %is.ule.1, float 0.0, float %arg
245 define float @clamp_is_ogt_neg1_to_neg1(float %arg) {
247 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
248 ; CHECK-NEXT: [[IS_OGT_NEG1:%.*]] = fcmp ogt float [[ARG]], -1.000000e+00
249 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGT_NEG1]], float -1.000000e+00, float [[ARG]]
252 %is.ogt.neg1 = fcmp ogt float %arg, -1.0
253 %select = select i1 %is.ogt.neg1, float -1.0, float %arg
258 define float @clamp_is_ugt_neg1_to_neg1(float %arg) {
260 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
261 ; CHECK-NEXT: [[IS_UGT_NEG1:%.*]] = fcmp ugt float [[ARG]], -1.000000e+00
262 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_NEG1]], float -1.000000e+00, float [[ARG]]
265 %is.ugt.neg1 = fcmp ugt float %arg, -1.0
266 %select = select i1 %is.ugt.neg1, float -1.0, float %arg
271 define float @clamp_is_ogt_neg1_to_0(float %arg) {
273 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
274 ; CHECK-NEXT: [[IS_OGT_NEG1:%.*]] = fcmp ogt float [[ARG]], -1.000000e+00
275 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGT_NEG1]], float 0.000000e+00, float [[ARG]]
278 %is.ogt.neg1 = fcmp ogt float %arg, -1.0
279 %select = select i1 %is.ogt.neg1, float 0.0, float %arg
284 define float @clamp_is_ugt_neg1_to_0(float %arg) {
286 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
287 ; CHECK-NEXT: [[IS_UGT_NEG1:%.*]] = fcmp ugt float [[ARG]], -1.000000e+00
288 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_NEG1]], float 0.000000e+00, float [[ARG]]
291 %is.ugt.neg1 = fcmp ugt float %arg, -1.0
292 %select = select i1 %is.ugt.neg1, float 0.0, float %arg
297 define float @clamp_is_olt_neg1_to_neg1_commute(float %arg) {
299 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
300 ; CHECK-NEXT: [[IS_UGE_NEG1:%.*]] = fcmp uge float [[ARG]], -1.000000e+00
301 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGE_NEG1]], float [[ARG]], float -1.000000e+00
304 %is.uge.neg1 = fcmp uge float %arg, -1.0
305 %select = select i1 %is.uge.neg1, float %arg, float -1.0
310 define float @clamp_is_olt_neg1_to_neg1(float %arg) {
312 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
313 ; CHECK-NEXT: [[IS_OLT_NEG1:%.*]] = fcmp olt float [[ARG]], -1.000000e+00
314 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_NEG1]], float -1.000000e+00, float [[ARG]]
317 %is.olt.neg1 = fcmp olt float %arg, -1.0
318 %select = select i1 %is.olt.neg1, float -1.0, float %arg
323 define float @clamp_is_ult_neg1_to_neg1(float %arg) {
325 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
326 ; CHECK-NEXT: [[IS_ULT_NEG1:%.*]] = fcmp ult float [[ARG]], -1.000000e+00
327 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULT_NEG1]], float -1.000000e+00, float [[ARG]]
330 %is.ult.neg1 = fcmp ult float %arg, -1.0
331 %select = select i1 %is.ult.neg1, float -1.0, float %arg
336 define float @clamp_is_ult_neg1_to_neg1_commute(float %arg) {
338 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
339 ; CHECK-NEXT: [[IS_OGE_NEG1:%.*]] = fcmp oge float [[ARG]], -1.000000e+00
340 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGE_NEG1]], float [[ARG]], float -1.000000e+00
343 %is.oge.neg1 = fcmp oge float %arg, -1.0
344 %select = select i1 %is.oge.neg1, float %arg, float -1.
353 define float @fcmp_oeq_1_else_1(float %arg) {
355 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
356 ; CHECK-NEXT: [[IS_OEQ_1:%.*]] = fcmp oeq float [[ARG]], 1.000000e+00
357 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OEQ_1]], float [[ARG]], float 1.000000e+00
360 %is.oeq.1 = fcmp oeq float %arg, 1.0
361 %select = select i1 %is.oeq.1, float %arg, float 1.0
366 define float @fcmp_one_1_else_1(float %arg) {
368 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
369 ; CHECK-NEXT: [[IS_ONE_1:%.*]] = fcmp one float [[ARG]], 1.000000e+00
370 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ONE_1]], float [[ARG]], float 1.000000e+00
373 %is.one.1 = fcmp one float %arg, 1.0
374 %select = select i1 %is.one.1, float %arg, float 1.0
379 define float @fcmp_one_1_1_else_arg(float %arg) {
381 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
382 ; CHECK-NEXT: [[IS_ONE_1:%.*]] = fcmp one float [[ARG]], 1.000000e+00
383 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ONE_1]], float 1.000000e+00, float [[ARG]]
386 %is.one.1 = fcmp one float %arg, 1.0
387 %select = select i1 %is.one.1, float 1.0, float %arg
392 define float @fcmp_une_1_1_else_arg(float %arg) {
394 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
395 ; CHECK-NEXT: [[IS_UNE_1:%.*]] = fcmp une float [[ARG]], 1.000000e+00
396 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UNE_1]], float 1.000000e+00, float [[ARG]]
399 %is.une.1 = fcmp une float %arg, 1.0
400 %select = select i1 %is.une.1, float 1.0, float %arg
405 define float @fcmp_oeq_neg1_else_neg1(float %arg) {
407 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
408 ; CHECK-NEXT: [[IS_OEQ_NEG1:%.*]] = fcmp oeq float [[ARG]], -1.000000e+00
409 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OEQ_NEG1]], float [[ARG]], float -1.000000e+00
412 %is.oeq.neg1 = fcmp oeq float %arg, -1.0
413 %select = select i1 %is.oeq.neg1, float %arg, float -1.0
418 define float @fcmp_one_neg1_else_neg1(float %arg) {
420 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
421 ; CHECK-NEXT: [[IS_ONE_NEG1:%.*]] = fcmp one float [[ARG]], -1.000000e+00
422 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ONE_NEG1]], float [[ARG]], float -1.000000e+00
425 %is.one.neg1 = fcmp one float %arg, -1.0
426 %select = select i1 %is.one.neg1, float %arg, float -1.0
430 define float @fcmp_oeq_1_else_0(float %arg) {
432 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
433 ; CHECK-NEXT: [[IS_OEQ_1:%.*]] = fcmp oeq float [[ARG]], 1.000000e+00
437 %is.oeq.1 = fcmp oeq float %arg, 1.0
442 define float @fcmp_ueq_1_else_0(float %arg) {
444 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
445 ; CHECK-NEXT: [[IS_UEQ_1:%.*]] = fcmp ueq float [[ARG]], 1.000000e+00
449 %is.ueq.1 = fcmp ueq float %arg, 1.0
454 define float @if_fcmp_oeq_1_0_else_arg(float %arg) {
456 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
457 ; CHECK-NEXT: [[IS_OEQ_1:%.*]] = fcmp oeq float [[ARG]], 1.000000e+00
458 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OEQ_1]], float 0.000000e+00, float [[ARG]]
461 %is.oeq.1 = fcmp oeq float %arg, 1.0
462 %select = select i1 %is.oeq.1, float 0.0, float %arg
466 define float @if_fcmp_oeq_0_1_else_arg(float %arg) {
468 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
469 ; CHECK-NEXT: [[IS_OEQ_0:%.*]] = fcmp oeq float [[ARG]], 0.000000e+00
470 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OEQ_0]], float 1.000000e+00, float [[ARG]]
473 %is.oeq.0 = fcmp oeq float %arg, 0.0
474 %select = select i1 %is.oeq.0, float 1.0, float %arg
478 define float @if_fcmp_one_0_arg_else_1(float %arg) {
480 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
481 ; CHECK-NEXT: [[IS_ONE_0:%.*]] = fcmp one float [[ARG]], 0.000000e+00
482 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ONE_0]], float [[ARG]], float 1.000000e+00
485 %is.one.0 = fcmp one float %arg, 0.0
486 %select = select i1 %is.one.0, float %arg, float 1.0
490 define float @if_fcmp_une_0_arg_else_1(float %arg) {
492 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
493 ; CHECK-NEXT: [[IS_UNE_0:%.*]] = fcmp une float [[ARG]], 0.000000e+00
494 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UNE_0]], float [[ARG]], float 1.000000e+00
497 %is.une.0 = fcmp une float %arg, 0.0
498 %select = select i1 %is.une.0, float %arg, float 1.0
502 define float @if_fcmp_one_0_1_else_arg(float %arg) {
504 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
505 ; CHECK-NEXT: [[IS_ONE_0:%.*]] = fcmp one float [[ARG]], 0.000000e+00
506 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ONE_0]], float 1.000000e+00, float [[ARG]]
509 %is.one.0 = fcmp one float %arg, 0.0
510 %select = select i1 %is.one.0, float 1.0, float %arg
514 define float @if_fcmp_one_1_arg_else_0(float %arg) {
516 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
517 ; CHECK-NEXT: [[IS_ONE_1:%.*]] = fcmp one float [[ARG]], 1.000000e+00
518 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ONE_1]], float [[ARG]], float 0.000000e+00
521 %is.one.1 = fcmp one float %arg, 1.0
522 %select = select i1 %is.one.1, float %arg, float 0.0
526 define float @fcmp_fabs_oeq_1_else_1(float %arg) {
528 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
529 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4:[0-9]+]]
531 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OEQ_1]], float [[ARG]], float 1.000000e+00
534 %fabs.arg = call float @llvm.fabs.f32(float %arg)
535 %fabs.is.oeq.1 = fcmp oeq float %fabs.arg, 1.0
536 %select = select i1 %fabs.is.oeq.1, float %arg, float 1.0
540 define float @fcmp_fabs_oeq_1_0_else_arg(float %arg) {
542 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
543 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
545 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OEQ_1]], float 0.000000e+00, float [[ARG]]
548 %fabs.arg = call float @llvm.fabs.f32(float %arg)
549 %fabs.is.oeq.1 = fcmp oeq float %fabs.arg, 1.0
550 %select = select i1 %fabs.is.oeq.1, float 0.0, float %arg
554 define float @fcmp_fabs_ueq_1_0_else_arg(float %arg) {
556 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
557 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
559 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_UEQ_1]], float 0.000000e+00, float [[ARG]]
562 %fabs.arg = call float @llvm.fabs.f32(float %arg)
563 %fabs.is.ueq.1 = fcmp ueq float %fabs.arg, 1.0
564 %select = select i1 %fabs.is.ueq.1, float 0.0, float %arg
568 define float @fcmp_fabs_one_1_arg_else_0(float %arg) {
570 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
571 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
573 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ONE_1]], float [[ARG]], float 0.000000e+00
576 %fabs.arg = call float @llvm.fabs.f32(float %arg)
577 %fabs.is.one.1 = fcmp one float %fabs.arg, 1.0
578 %select = select i1 %fabs.is.one.1, float %arg, float 0.0
582 define float @fcmp_fabs_une_1_arg_else_0(float %arg) {
584 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
585 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
587 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_UNE_1]], float [[ARG]], float 0.000000e+00
590 %fabs.arg = call float @llvm.fabs.f32(float %arg)
591 %fabs.is.une.1 = fcmp une float %fabs.arg, 1.0
592 %select = select i1 %fabs.is.une.1, float %arg, float 0.0
596 define float @fcmp_fabs_one_1_0_else_arg(float %arg) {
598 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
599 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
601 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ONE_1]], float 0.000000e+00, float [[ARG]]
604 %fabs.arg = call float @llvm.fabs.f32(float %arg)
605 %fabs.is.one.1 = fcmp one float %fabs.arg, 1.0
606 %select = select i1 %fabs.is.one.1, float 0.0, float %arg
610 define float @fcmp_fabs_une_1_0_else_arg(float %arg) {
612 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
613 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
615 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_UNE_1]], float 0.000000e+00, float [[ARG]]
618 %fabs.arg = call float @llvm.fabs.f32(float %arg)
619 %fabs.is.une.1 = fcmp une float %fabs.arg, 1.0
620 %select = select i1 %fabs.is.une.1, float 0.0, float %arg
624 define float @fcmp_fabs_one_1_neg2_else_arg(float %arg) {
626 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
627 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
629 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ONE_1]], float -2.000000e+00, float [[ARG]]
632 %fabs.arg = call float @llvm.fabs.f32(float %arg)
633 %fabs.is.one.1 = fcmp one float %fabs.arg, 1.0
634 %select = select i1 %fabs.is.one.1, float -2.0, float %arg
642 define float @clamp_olt_largest_denormal_0.0(float %arg) {
644 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
645 ; CHECK-NEXT: [[IS_OLT_LARGEST_DENORMAL:%.*]] = fcmp olt float [[ARG]], 0x380FFFFFC0000000
646 …-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_LARGEST_DENORMAL]], float 0.000000e+00, float [[ARG]]
649 %is.olt.largest.denormal = fcmp olt float %arg, 0x380FFFFFC0000000
650 %select = select i1 %is.olt.largest.denormal, float 0.0, float %arg
654 define float @clamp_ole_largest_denormal_0.0(float %arg) {
656 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
657 ; CHECK-NEXT: [[IS_OLE_LARGEST_DENORMAL:%.*]] = fcmp ole float [[ARG]], 0x380FFFFFC0000000
658 …-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_LARGEST_DENORMAL]], float 0.000000e+00, float [[ARG]]
661 %is.ole.largest.denormal = fcmp ole float %arg, 0x380FFFFFC0000000
662 %select = select i1 %is.ole.largest.denormal, float 0.0, float %arg
666 define float @clamp_ult_largest_denormal_0.0(float %arg) {
668 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
669 ; CHECK-NEXT: [[IS_ULT_LARGEST_DENORMAL:%.*]] = fcmp ult float [[ARG]], 0x380FFFFFC0000000
670 …-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULT_LARGEST_DENORMAL]], float 0.000000e+00, float [[ARG]]
673 %is.ult.largest.denormal = fcmp ult float %arg, 0x380FFFFFC0000000
674 %select = select i1 %is.ult.largest.denormal, float 0.0, float %arg
678 define float @clamp_ule_largest_denormal_0.0(float %arg) {
680 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
681 ; CHECK-NEXT: [[IS_ULE_LARGEST_DENORMAL:%.*]] = fcmp ule float [[ARG]], 0x380FFFFFC0000000
682 …-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULE_LARGEST_DENORMAL]], float 0.000000e+00, float [[ARG]]
685 %is.ule.largest.denormal = fcmp ule float %arg, 0x380FFFFFC0000000
686 %select = select i1 %is.ule.largest.denormal, float 0.0, float %arg
690 define float @clamp_ogt_largest_denormal_0.0(float %arg) {
692 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
693 ; CHECK-NEXT: [[IS_OGT_LARGEST_DENORMAL:%.*]] = fcmp ogt float [[ARG]], 0x380FFFFFC0000000
694 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGT_LARGEST_DENORMAL]], float [[ARG]], float 0.000…
697 %is.ogt.largest.denormal = fcmp ogt float %arg, 0x380FFFFFC0000000
698 %select = select i1 %is.ogt.largest.denormal, float %arg, float 0.0
702 define float @clamp_oge_largest_denormal_0.0(float %arg) {
704 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
705 ; CHECK-NEXT: [[IS_OGE_LARGEST_DENORMAL:%.*]] = fcmp oge float [[ARG]], 0x380FFFFFC0000000
706 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGE_LARGEST_DENORMAL]], float [[ARG]], float 0.000…
709 %is.oge.largest.denormal = fcmp oge float %arg, 0x380FFFFFC0000000
710 %select = select i1 %is.oge.largest.denormal, float %arg, float 0.0
714 define float @clamp_ugt_largest_denormal_0.0(float %arg) {
716 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
717 ; CHECK-NEXT: [[IS_UGT_LARGEST_DENORMAL:%.*]] = fcmp ugt float [[ARG]], 0x380FFFFFC0000000
718 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_LARGEST_DENORMAL]], float [[ARG]], float 0.000…
721 %is.ugt.largest.denormal = fcmp ugt float %arg, 0x380FFFFFC0000000
722 %select = select i1 %is.ugt.largest.denormal, float %arg, float 0.0
726 define float @clamp_uge_largest_denormal_0.0(float %arg) {
728 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
729 ; CHECK-NEXT: [[IS_UGE_LARGEST_DENORMAL:%.*]] = fcmp uge float [[ARG]], 0x380FFFFFC0000000
730 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGE_LARGEST_DENORMAL]], float [[ARG]], float 0.000…
733 %is.uge.largest.denormal = fcmp uge float %arg, 0x380FFFFFC0000000
734 %select = select i1 %is.uge.largest.denormal, float %arg, float 0.0
738 define float @fcmp_oeq_largest_denormal_arg_else_0.0(float %arg) {
740 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
741 ; CHECK-NEXT: [[IS_OEQ_LARGEST_DENORMAL:%.*]] = fcmp oeq float [[ARG]], 0x380FFFFFC0000000
742 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OEQ_LARGEST_DENORMAL]], float [[ARG]], float 0.000…
745 %is.oeq.largest.denormal = fcmp oeq float %arg, 0x380FFFFFC0000000
746 %select = select i1 %is.oeq.largest.denormal, float %arg, float 0.0
750 define float @clamp_fabs_olt_largest_denormal_0.0(float %arg) {
752 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
753 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
755 …: [[SELECT:%.*]] = select i1 [[IS_FABS_OLT_LARGEST_DENORMAL]], float 0.000000e+00, float [[ARG]]
758 %fabs.arg = call float @llvm.fabs.f32(float %arg)
759 %is.fabs.olt.largest.denormal = fcmp olt float %fabs.arg, 0x380FFFFFC0000000
760 %select = select i1 %is.fabs.olt.largest.denormal, float 0.0, float %arg
764 define float @clamp_fabs_ole_largest_denormal_0.0(float %arg) {
766 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
767 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
769 …: [[SELECT:%.*]] = select i1 [[IS_FABS_OLE_LARGEST_DENORMAL]], float 0.000000e+00, float [[ARG]]
772 %fabs.arg = call float @llvm.fabs.f32(float %arg)
773 %is.fabs.ole.largest.denormal = fcmp ole float %fabs.arg, 0x380FFFFFC0000000
774 %select = select i1 %is.fabs.ole.largest.denormal, float 0.0, float %arg
783 define float @clamp_fabs_value_ogt_1_to_1_copysign(float %arg) {
785 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
786 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
788 …OPYSIGN:%.*]] = call float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
789 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OGT_1]], float [[COPYSIGN]], float [[ARG]]
792 %fabs.arg = call float @llvm.fabs.f32(float %arg)
793 %fabs.is.ogt.1 = fcmp ogt float %fabs.arg, 1.0
794 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
795 %select = select i1 %fabs.is.ogt.1, float %copysign, float %arg
800 define float @clamp_fabs_value_oge_1_to_1_copysign(float %arg) {
802 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
803 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
805 …OPYSIGN:%.*]] = call float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
806 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OGE_1]], float [[COPYSIGN]], float [[ARG]]
809 %fabs.arg = call float @llvm.fabs.f32(float %arg)
810 %fabs.is.oge.1 = fcmp oge float %fabs.arg, 1.0
811 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
812 %select = select i1 %fabs.is.oge.1, float %copysign, float %arg
817 define float @clamp_fabs_value_olt_1_to_1_copysign(float %arg) {
819 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
820 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
822 …ss(nan inf zero sub) float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
823 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OLT_1]], float [[ARG]], float [[COPYSIGN]]
826 %fabs.arg = call float @llvm.fabs.f32(float %arg)
827 %fabs.is.olt.1 = fcmp olt float %fabs.arg, 1.0
828 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
829 %select = select i1 %fabs.is.olt.1, float %arg, float %copysign
834 define float @clamp_fabs_value_ole_1_to_1_copysign(float %arg) {
836 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
837 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
839 …ss(nan inf zero sub) float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
840 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OLE_1]], float [[ARG]], float [[COPYSIGN]]
843 %fabs.arg = call float @llvm.fabs.f32(float %arg)
844 %fabs.is.ole.1 = fcmp ole float %fabs.arg, 1.0
845 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
846 %select = select i1 %fabs.is.ole.1, float %arg, float %copysign
851 define float @clamp_fabs_value_ugt_1_to_1_copysign(float %arg) {
853 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
854 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
856 …OPYSIGN:%.*]] = call float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
857 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_UGT_1]], float [[COPYSIGN]], float [[ARG]]
860 %fabs.arg = call float @llvm.fabs.f32(float %arg)
861 %fabs.is.ugt.1 = fcmp ugt float %fabs.arg, 1.0
862 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
863 %select = select i1 %fabs.is.ugt.1, float %copysign, float %arg
868 define float @clamp_fabs_value_uge_1_to_1_copysign(float %arg) {
870 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
871 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
873 …OPYSIGN:%.*]] = call float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
874 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_UGE_1]], float [[COPYSIGN]], float [[ARG]]
877 %fabs.arg = call float @llvm.fabs.f32(float %arg)
878 %fabs.is.uge.1 = fcmp ugt float %fabs.arg, 1.0
879 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
880 %select = select i1 %fabs.is.uge.1, float %copysign, float %arg
885 define float @clamp_fabs_value_ult_1_to_1_copysign(float %arg) {
887 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
888 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
890 …ss(nan inf zero sub) float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
891 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ULT_1]], float [[ARG]], float [[COPYSIGN]]
894 %fabs.arg = call float @llvm.fabs.f32(float %arg)
895 %fabs.is.ult.1 = fcmp ult float %fabs.arg, 1.0
896 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
897 %select = select i1 %fabs.is.ult.1, float %arg, float %copysign
902 define float @clamp_fabs_value_ule_1_to_1_copysign(float %arg) {
904 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
905 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
907 …ss(nan inf zero sub) float @llvm.copysign.f32(float noundef 1.000000e+00, float [[ARG]]) #[[ATTR4]]
908 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ULE_1]], float [[ARG]], float [[COPYSIGN]]
911 %fabs.arg = call float @llvm.fabs.f32(float %arg)
912 %fabs.is.ule.1 = fcmp ule float %fabs.arg, 1.0
913 %copysign = call float @llvm.copysign.f32(float 1.0, float %arg)
914 %select = select i1 %fabs.is.ule.1, float %arg, float %copysign
923 define float @clamp_is_ogt_largest_normal_to_largest_normal(float %arg) {
925 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
926 ; CHECK-NEXT: [[IS_OGT_LARGEST_NORMAL:%.*]] = fcmp ogt float [[ARG]], 0x47EFFFFFE0000000
927 …T: [[SELECT:%.*]] = select i1 [[IS_OGT_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
930 %is.ogt.largest.normal = fcmp ogt float %arg, 0x47EFFFFFE0000000
931 %select = select i1 %is.ogt.largest.normal, float 0x47EFFFFFE0000000, float %arg
936 define float @clamp_is_oge_largest_normal_to_largest_normal(float %arg) {
938 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
939 ; CHECK-NEXT: [[IS_OGE_LARGEST_NORMAL:%.*]] = fcmp oge float [[ARG]], 0x47EFFFFFE0000000
940 …T: [[SELECT:%.*]] = select i1 [[IS_OGE_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
943 %is.oge.largest.normal = fcmp oge float %arg, 0x47EFFFFFE0000000
944 %select = select i1 %is.oge.largest.normal, float 0x47EFFFFFE0000000, float %arg
949 define float @clamp_is_ugt_largest_normal_to_largest_normal(float %arg) {
951 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
952 ; CHECK-NEXT: [[IS_UGT_LARGEST_NORMAL:%.*]] = fcmp ugt float [[ARG]], 0x47EFFFFFE0000000
953 …T: [[SELECT:%.*]] = select i1 [[IS_UGT_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
956 %is.ugt.largest.normal = fcmp ugt float %arg, 0x47EFFFFFE0000000
957 %select = select i1 %is.ugt.largest.normal, float 0x47EFFFFFE0000000, float %arg
962 define float @clamp_is_uge_largest_normal_to_largest_normal(float %arg) {
964 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
965 ; CHECK-NEXT: [[IS_UGE_LARGEST_NORMAL:%.*]] = fcmp uge float [[ARG]], 0x47EFFFFFE0000000
966 …T: [[SELECT:%.*]] = select i1 [[IS_UGE_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
969 %is.uge.largest.normal = fcmp uge float %arg, 0x47EFFFFFE0000000
970 %select = select i1 %is.uge.largest.normal, float 0x47EFFFFFE0000000, float %arg
975 define float @clamp_fabs_is_ogt_largest_normal_to_largest_normal(float %arg) {
977 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
978 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
980 …T: [[SELECT:%.*]] = select i1 [[IS_OGT_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
983 %fabs.arg = call float @llvm.fabs.f32(float %arg)
984 %is.ogt.largest.normal = fcmp ogt float %fabs.arg, 0x47EFFFFFE0000000
985 %select = select i1 %is.ogt.largest.normal, float 0x47EFFFFFE0000000, float %arg
990 define float @clamp_fabs_is_oge_largest_normal_to_largest_normal(float %arg) {
992 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
993 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
995 …T: [[SELECT:%.*]] = select i1 [[IS_OGE_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
998 %fabs.arg = call float @llvm.fabs.f32(float %arg)
999 %is.oge.largest.normal = fcmp oge float %fabs.arg, 0x47EFFFFFE0000000
1000 %select = select i1 %is.oge.largest.normal, float 0x47EFFFFFE0000000, float %arg
1005 define float @clamp_fabs_is_ugt_largest_normal_to_largest_normal(float %arg) {
1007 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1008 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1010 …T: [[SELECT:%.*]] = select i1 [[IS_UGT_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
1013 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1014 %is.ugt.largest.normal = fcmp ugt float %fabs.arg, 0x47EFFFFFE0000000
1015 %select = select i1 %is.ugt.largest.normal, float 0x47EFFFFFE0000000, float %arg
1020 define float @clamp_fabs_is_uge_largest_normal_to_largest_normal(float %arg) {
1022 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1023 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1025 …T: [[SELECT:%.*]] = select i1 [[IS_UGT_LARGEST_NORMAL]], float 0x47EFFFFFE0000000, float [[ARG]]
1028 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1029 %is.ugt.largest.normal = fcmp uge float %fabs.arg, 0x47EFFFFFE0000000
1030 %select = select i1 %is.ugt.largest.normal, float 0x47EFFFFFE0000000, float %arg
1039 define float @clamp_fabs_ogt_smallest_normal_to_zero(float %arg) {
1041 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1042 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1044 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGT_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1048 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1049 %is.ogt.smallest.normal = fcmp ogt float %fabs.arg, 0x3810000000000000
1050 %select = select i1 %is.ogt.smallest.normal, float 0.0, float %arg
1055 define float @clamp_fabs_oge_smallest_normal_to_zero(float %arg) {
1057 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1058 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1060 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGE_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1063 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1064 %is.oge.smallest.normal = fcmp oge float %fabs.arg, 0x3810000000000000
1065 %select = select i1 %is.oge.smallest.normal, float 0.0, float %arg
1070 define float @clamp_fabs_olt_smallest_normal_to_zero(float %arg) {
1072 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1073 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1075 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1078 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1079 %is.olt.smallest.normal = fcmp olt float %fabs.arg, 0x3810000000000000
1080 %select = select i1 %is.olt.smallest.normal, float 0.0, float %arg
1085 define float @clamp_fabs_ole_smallest_normal_to_zero(float %arg) {
1087 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1088 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1090 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1093 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1094 %is.ole.smallest.normal = fcmp ole float %fabs.arg, 0x3810000000000000
1095 %select = select i1 %is.ole.smallest.normal, float 0.0, float %arg
1099 define float @clamp_fabs_is_is_olt_smallest_normal_to_0(float %arg) {
1101 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1102 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1104 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1107 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1108 %is.olt.smallest.normal = fcmp olt float %fabs.arg, 0x3810000000000000
1109 %select = select i1 %is.olt.smallest.normal, float 0.0, float %arg
1113 define float @clamp_fabs_is_is_ole_smallest_normal_to_0(float %arg) {
1115 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1116 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1118 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1121 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1122 %is.ole.smallest.normal = fcmp ole float %fabs.arg, 0x3810000000000000
1123 %select = select i1 %is.ole.smallest.normal, float 0.0, float %arg
1127 define float @clamp_fabs_oeq_smallest_normal_to_zero(float %arg) {
1129 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1130 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1132 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_OEQ_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1135 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1136 %is.oeq.smallest.normal = fcmp oeq float %fabs.arg, 0x3810000000000000
1137 %select = select i1 %is.oeq.smallest.normal, float 0.0, float %arg
1141 define float @clamp_fabs_one_smallest_normal_to_zero(float %arg) {
1143 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1144 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1146 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_ONE_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1149 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1150 %is.one.smallest.normal = fcmp one float %fabs.arg, 0x3810000000000000
1151 %select = select i1 %is.one.smallest.normal, float 0.0, float %arg
1155 define float @clamp_fabs_ueq_smallest_normal_to_zero(float %arg) {
1157 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1158 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1160 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_UEQ_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1163 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1164 %is.ueq.smallest.normal = fcmp ueq float %fabs.arg, 0x3810000000000000
1165 %select = select i1 %is.ueq.smallest.normal, float 0.0, float %arg
1169 define float @clamp_fabs_une_smallest_normal_to_zero(float %arg) {
1171 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1172 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1174 …K-NEXT: [[SELECT:%.*]] = select i1 [[IS_UNE_SMALLEST_NORMAL]], float 0.000000e+00, float [[ARG]]
1177 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1178 %is.une.smallest.normal = fcmp une float %fabs.arg, 0x3810000000000000
1179 %select = select i1 %is.une.smallest.normal, float 0.0, float %arg
1187 define float @clamp_fabs_olt_neg1_to_neg1(float %arg) {
1189 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
1190 ; CHECK-NEXT: ret float [[ARG]]
1192 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1193 %fabs.is.olt.neg1 = fcmp olt float %fabs.arg, -1.0
1194 %select = select i1 %fabs.is.olt.neg1, float -1.0, float %arg
1198 define float @clamp_fabs_ole_neg1_to_neg1(float %arg) {
1200 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
1201 ; CHECK-NEXT: ret float [[ARG]]
1203 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1204 %fabs.is.ole.neg1 = fcmp ole float %fabs.arg, -1.0
1205 %select = select i1 %fabs.is.ole.neg1, float -1.0, float %arg
1209 define float @clamp_fabs_ult_neg1_to_neg1(float %arg) {
1211 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1212 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1214 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ULT_NEG1]], float -1.000000e+00, float [[ARG]]
1217 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1218 %fabs.is.ult.neg1 = fcmp ult float %fabs.arg, -1.0
1219 %select = select i1 %fabs.is.ult.neg1, float -1.0, float %arg
1223 define float @clamp_fabs_ule_neg1_to_neg1(float %arg) {
1225 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1226 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1228 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ULE_NEG1]], float -1.000000e+00, float [[ARG]]
1231 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1232 %fabs.is.ule.neg1 = fcmp ule float %fabs.arg, -1.0
1233 %select = select i1 %fabs.is.ule.neg1, float -1.0, float %arg
1237 define float @clamp_fabs_ogt_neg1_to_neg1(float %arg) {
1239 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1240 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1242 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OGT_NEG1]], float -1.000000e+00, float [[ARG]]
1245 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1246 %fabs.is.ogt.neg1 = fcmp ogt float %fabs.arg, -1.0
1247 %select = select i1 %fabs.is.ogt.neg1, float -1.0, float %arg
1251 define float @clamp_fabs_oge_neg1_to_neg1(float %arg) {
1253 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1254 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1256 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_OGE_NEG1]], float -1.000000e+00, float [[ARG]]
1259 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1260 %fabs.is.oge.neg1 = fcmp oge float %fabs.arg, -1.0
1261 %select = select i1 %fabs.is.oge.neg1, float -1.0, float %arg
1265 define float @clamp_fabs_ugt_neg1_to_neg1(float %arg) {
1267 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1270 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1271 %fabs.is.ugt.neg1 = fcmp ugt float %fabs.arg, -1.0
1272 %select = select i1 %fabs.is.ugt.neg1, float -1.0, float %arg
1276 define float @clamp_fabs_uge_neg1_to_neg1(float %arg) {
1278 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1281 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1282 %fabs.is.uge.neg1 = fcmp uge float %fabs.arg, -1.0
1283 %select = select i1 %fabs.is.uge.neg1, float -1.0, float %arg
1287 define float @clamp_fabs_oeq_neg1_to_neg1(float %arg) {
1289 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
1290 ; CHECK-NEXT: ret float [[ARG]]
1292 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1293 %fabs.is.oeq.neg1 = fcmp oeq float %fabs.arg, -1.0
1294 %select = select i1 %fabs.is.oeq.neg1, float -1.0, float %arg
1298 define float @clamp_fabs_ueq_neg1_to_neg1(float %arg) {
1300 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1301 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1303 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_UEQ_NEG1]], float -1.000000e+00, float [[ARG]]
1306 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1307 %fabs.is.ueq.neg1 = fcmp ueq float %fabs.arg, -1.0
1308 %select = select i1 %fabs.is.ueq.neg1, float -1.0, float %arg
1312 define float @clamp_fabs_one_neg1_to_neg1(float %arg) {
1314 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1315 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1317 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[FABS_IS_ONE_NEG1]], float -1.000000e+00, float [[ARG]]
1320 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1321 %fabs.is.one.neg1 = fcmp one float %fabs.arg, -1.0
1322 %select = select i1 %fabs.is.one.neg1, float -1.0, float %arg
1326 define float @clamp_fabs_une_neg1_to_neg1(float %arg) {
1328 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
1331 %fabs.arg = call float @llvm.fabs.f32(float %arg)
1332 %fabs.is.une.neg1 = fcmp une float %fabs.arg, -1.0
1333 %select = select i1 %fabs.is.une.neg1, float -1.0, float %arg
1341 define float @ret_assumed_ogt_1(float %arg) {
1343 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3:[0-9]+]] {
1344 ; CHECK-NEXT: [[OGT_1:%.*]] = fcmp ogt float [[ARG]], 1.000000e+00
1346 ; CHECK-NEXT: ret float [[ARG]]
1348 %ogt.1 = fcmp ogt float %arg, 1.0
1350 ret float %arg
1353 define float @ret_assumed_oge_1(float %arg) {
1355 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1356 ; CHECK-NEXT: [[OGE_1:%.*]] = fcmp ogt float [[ARG]], 1.000000e+00
1358 ; CHECK-NEXT: ret float [[ARG]]
1360 %oge.1 = fcmp ogt float %arg, 1.0
1362 ret float %arg
1365 define float @ret_assumed_olt_1(float %arg) {
1367 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1368 ; CHECK-NEXT: [[OLT_1:%.*]] = fcmp olt float [[ARG]], 1.000000e+00
1370 ; CHECK-NEXT: ret float [[ARG]]
1372 %olt.1 = fcmp olt float %arg, 1.0
1374 ret float %arg
1377 define float @ret_assumed_ole_1(float %arg) {
1379 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1380 ; CHECK-NEXT: [[OLE_1:%.*]] = fcmp ole float [[ARG]], 1.000000e+00
1382 ; CHECK-NEXT: ret float [[ARG]]
1384 %ole.1 = fcmp ole float %arg, 1.0
1386 ret float %arg
1389 define float @ret_assumed_ugt_1(float %arg) {
1391 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1392 ; CHECK-NEXT: [[UGT_1:%.*]] = fcmp ugt float [[ARG]], 1.000000e+00
1394 ; CHECK-NEXT: ret float [[ARG]]
1396 %ugt.1 = fcmp ugt float %arg, 1.0
1398 ret float %arg
1401 define float @ret_assumed_uge_1(float %arg) {
1403 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1404 ; CHECK-NEXT: [[UGE_1:%.*]] = fcmp uge float [[ARG]], 1.000000e+00
1406 ; CHECK-NEXT: ret float [[ARG]]
1408 %uge.1 = fcmp uge float %arg, 1.0
1410 ret float %arg
1413 define float @ret_assumed_ult_1(float %arg) {
1415 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1416 ; CHECK-NEXT: [[ULT_1:%.*]] = fcmp ult float [[ARG]], 1.000000e+00
1418 ; CHECK-NEXT: ret float [[ARG]]
1420 %ult.1 = fcmp ult float %arg, 1.0
1422 ret float %arg
1425 define float @ret_assumed_ule_1(float %arg) {
1427 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1428 ; CHECK-NEXT: [[ULE_1:%.*]] = fcmp ule float [[ARG]], 1.000000e+00
1430 ; CHECK-NEXT: ret float [[ARG]]
1432 %ule.1 = fcmp ule float %arg, 1.0
1434 ret float %arg
1437 define float @ret_assumed_fabs_ogt_1(float %arg) {
1439 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1440 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1443 ; CHECK-NEXT: ret float [[ARG]]
1445 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1446 %ogt.1 = fcmp ogt float %arg.fabs, 1.0
1448 ret float %arg
1451 define float @ret_assumed_fabs_oge_1(float %arg) {
1453 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1454 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1457 ; CHECK-NEXT: ret float [[ARG]]
1459 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1460 %oge.1 = fcmp oge float %arg.fabs, 1.0
1462 ret float %arg
1465 define float @ret_assumed_fabs_olt_1(float %arg) {
1467 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1468 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1471 ; CHECK-NEXT: ret float [[ARG]]
1473 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1474 %olt.1 = fcmp olt float %arg.fabs, 1.0
1476 ret float %arg
1479 define float @ret_assumed_fabs_ole_1(float %arg) {
1481 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1482 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1485 ; CHECK-NEXT: ret float [[ARG]]
1487 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1488 %ole.1 = fcmp olt float %arg.fabs, 1.0
1490 ret float %arg
1493 define float @ret_assumed_fabs_ugt_1(float %arg) {
1495 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1496 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1499 ; CHECK-NEXT: ret float [[ARG]]
1501 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1502 %ugt.1 = fcmp ugt float %arg.fabs, 1.0
1504 ret float %arg
1507 define float @ret_assumed_fabs_uge_1(float %arg) {
1509 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1510 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1513 ; CHECK-NEXT: ret float [[ARG]]
1515 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1516 %uge.1 = fcmp ugt float %arg.fabs, 1.0
1518 ret float %arg
1521 define float @ret_assumed_fabs_ult_1(float %arg) {
1523 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1524 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1527 ; CHECK-NEXT: ret float [[ARG]]
1529 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1530 %ult.1 = fcmp ult float %arg.fabs, 1.0
1532 ret float %arg
1535 define float @ret_assumed_fabs_ule_1(float %arg) {
1537 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1538 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1541 ; CHECK-NEXT: ret float [[ARG]]
1543 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1544 %ule.1 = fcmp ule float %arg.fabs, 1.0
1546 ret float %arg
1549 define float @ret_assumed_ogt_neg1(float %arg) {
1551 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1552 ; CHECK-NEXT: [[OGT_NEG1:%.*]] = fcmp ogt float [[ARG]], -1.000000e+00
1554 ; CHECK-NEXT: ret float [[ARG]]
1556 %ogt.neg1 = fcmp ogt float %arg, -1.0
1558 ret float %arg
1561 define float @ret_assumed_oge_neg1(float %arg) {
1563 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1564 ; CHECK-NEXT: [[OGE_NEG1:%.*]] = fcmp ogt float [[ARG]], -1.000000e+00
1566 ; CHECK-NEXT: ret float [[ARG]]
1568 %oge.neg1 = fcmp ogt float %arg, -1.0
1570 ret float %arg
1573 define float @ret_assumed_olt_neg1(float %arg) {
1575 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1576 ; CHECK-NEXT: [[OLT_NEG1:%.*]] = fcmp olt float [[ARG]], -1.000000e+00
1578 ; CHECK-NEXT: ret float [[ARG]]
1580 %olt.neg1 = fcmp olt float %arg, -1.0
1582 ret float %arg
1585 define float @ret_assumed_ole_neg1(float %arg) {
1587 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1588 ; CHECK-NEXT: [[OLE_NEG1:%.*]] = fcmp ole float [[ARG]], -1.000000e+00
1590 ; CHECK-NEXT: ret float [[ARG]]
1592 %ole.neg1 = fcmp ole float %arg, -1.0
1594 ret float %arg
1597 define float @ret_assumed_ugt_neg1(float %arg) {
1599 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1600 ; CHECK-NEXT: [[UGT_NEG1:%.*]] = fcmp ugt float [[ARG]], -1.000000e+00
1602 ; CHECK-NEXT: ret float [[ARG]]
1604 %ugt.neg1 = fcmp ugt float %arg, -1.0
1606 ret float %arg
1609 define float @ret_assumed_uge_neg1(float %arg) {
1611 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1612 ; CHECK-NEXT: [[UGE_NEG1:%.*]] = fcmp uge float [[ARG]], -1.000000e+00
1614 ; CHECK-NEXT: ret float [[ARG]]
1616 %uge.neg1 = fcmp uge float %arg, -1.0
1618 ret float %arg
1621 define float @ret_assumed_ult_neg1(float %arg) {
1623 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1624 ; CHECK-NEXT: [[ULT_NEG1:%.*]] = fcmp ult float [[ARG]], -1.000000e+00
1626 ; CHECK-NEXT: ret float [[ARG]]
1628 %ult.neg1 = fcmp ult float %arg, -1.0
1630 ret float %arg
1633 define float @ret_assumed_ule_neg1(float %arg) {
1635 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1636 ; CHECK-NEXT: [[ULE_NEG1:%.*]] = fcmp ule float [[ARG]], -1.000000e+00
1638 ; CHECK-NEXT: ret float [[ARG]]
1640 %ule.neg1 = fcmp ule float %arg, -1.0
1642 ret float %arg
1645 define float @ret_assumed_oeq_1(float %arg) {
1647 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1648 ; CHECK-NEXT: [[OEQ_1:%.*]] = fcmp oeq float [[ARG]], 1.000000e+00
1650 ; CHECK-NEXT: ret float [[ARG]]
1652 %oeq.1 = fcmp oeq float %arg, 1.0
1654 ret float %arg
1657 define float @ret_assumed_ueq_1(float %arg) {
1659 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1660 ; CHECK-NEXT: [[UEQ_1:%.*]] = fcmp ueq float [[ARG]], 1.000000e+00
1662 ; CHECK-NEXT: ret float [[ARG]]
1664 %ueq.1 = fcmp ueq float %arg, 1.0
1666 ret float %arg
1669 define float @ret_assumed_one_1(float %arg) {
1671 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1672 ; CHECK-NEXT: [[ONE_1:%.*]] = fcmp one float [[ARG]], 1.000000e+00
1674 ; CHECK-NEXT: ret float [[ARG]]
1676 %one.1 = fcmp one float %arg, 1.0
1678 ret float %arg
1681 define float @ret_assumed_one_neg1(float %arg) {
1683 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1684 ; CHECK-NEXT: [[ONE_NEG1:%.*]] = fcmp one float [[ARG]], -1.000000e+00
1686 ; CHECK-NEXT: ret float [[ARG]]
1688 %one.neg1 = fcmp one float %arg, -1.0
1690 ret float %arg
1693 define float @ret_assumed_une_neg1(float %arg) {
1695 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1696 ; CHECK-NEXT: [[UNE_NEG1:%.*]] = fcmp une float [[ARG]], -1.000000e+00
1698 ; CHECK-NEXT: ret float [[ARG]]
1700 %une.neg1 = fcmp une float %arg, -1.0
1702 ret float %arg
1705 define float @ret_assumed_une_1(float %arg) {
1707 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1708 ; CHECK-NEXT: [[UNE_1:%.*]] = fcmp une float [[ARG]], 1.000000e+00
1710 ; CHECK-NEXT: ret float [[ARG]]
1712 %une.1 = fcmp une float %arg, 1.0
1714 ret float %arg
1717 define float @ret_assumed_fabs_oeq_1(float %arg) {
1719 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1720 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1723 ; CHECK-NEXT: ret float [[ARG]]
1725 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1726 %oeq.1 = fcmp oeq float %arg.fabs, 1.0
1728 ret float %arg
1731 define float @ret_assumed_fabs_ueq_1(float %arg) {
1733 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1734 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1737 ; CHECK-NEXT: ret float [[ARG]]
1739 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1740 %ueq.1 = fcmp ueq float %arg.fabs, 1.0
1742 ret float %arg
1745 define float @ret_assumed_fabs_one_1(float %arg) {
1747 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1748 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1751 ; CHECK-NEXT: ret float [[ARG]]
1753 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1754 %one.1 = fcmp one float %arg.fabs, 1.0
1756 ret float %arg
1759 define float @ret_assumed_fabs_une_1(float %arg) {
1761 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1762 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1765 ; CHECK-NEXT: ret float [[ARG]]
1767 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1768 %une.1 = fcmp one float %arg.fabs, 1.0
1770 ret float %arg
1773 define float @ret_assumed_fabs_oeq_neg1(float %arg) {
1775 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1777 ; CHECK-NEXT: ret float [[ARG]]
1779 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1780 %oeq.neg1 = fcmp oeq float %arg.fabs, -1.0
1782 ret float %arg
1785 define float @ret_assumed_fabs_ueq_neg1(float %arg) {
1787 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1788 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1791 ; CHECK-NEXT: ret float [[ARG]]
1793 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1794 %ueq.neg1 = fcmp ueq float %arg.fabs, -1.0
1796 ret float %arg
1799 define float @ret_assumed_fabs_one_neg1(float %arg) {
1801 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1802 ; CHECK-NEXT: [[ARG_FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
1805 ; CHECK-NEXT: ret float [[ARG]]
1807 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1808 %one.neg1 = fcmp one float %arg.fabs, -1.0
1810 ret float %arg
1813 define float @ret_assumed_fabs_une_neg1(float %arg) {
1815 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
1817 ; CHECK-NEXT: ret float [[ARG]]
1819 %arg.fabs = call float @llvm.fabs.f32(float %arg)
1820 %une.neg1 = fcmp une float %arg.fabs, -1.0
1822 ret float %arg
1830 define float @clamp_is_ogt_known_positive_to_1(float %arg, float %unknown) {
1832 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1834 ; CHECK-NEXT: [[IS_OGT_KNOWN_POSITIVE:%.*]] = fcmp ogt float [[ARG]], [[KNOWN_POSITIVE]]
1835 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGT_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1839 %is.ogt.known.positive = fcmp ogt float %arg, %known.positive
1840 %select = select i1 %is.ogt.known.positive, float 1.0, float %arg
1844 define float @clamp_is_oge_known_positive_to_1(float %arg, float %unknown) {
1846 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1848 ; CHECK-NEXT: [[IS_OGE_KNOWN_POSITIVE:%.*]] = fcmp oge float [[ARG]], [[KNOWN_POSITIVE]]
1849 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGE_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1853 %is.oge.known.positive = fcmp oge float %arg, %known.positive
1854 %select = select i1 %is.oge.known.positive, float 1.0, float %arg
1858 define float @clamp_is_olt_known_positive_to_1(float %arg, float %unknown) {
1860 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1862 ; CHECK-NEXT: [[IS_OLT_KNOWN_POSITIVE:%.*]] = fcmp olt float [[ARG]], [[KNOWN_POSITIVE]]
1863 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1867 %is.olt.known.positive = fcmp olt float %arg, %known.positive
1868 %select = select i1 %is.olt.known.positive, float 1.0, float %arg
1872 define float @clamp_is_ole_known_positive_to_1(float %arg, float %unknown) {
1874 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1876 ; CHECK-NEXT: [[IS_OLE_KNOWN_POSITIVE:%.*]] = fcmp olt float [[ARG]], [[KNOWN_POSITIVE]]
1877 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1881 %is.ole.known.positive = fcmp olt float %arg, %known.positive
1882 %select = select i1 %is.ole.known.positive, float 1.0, float %arg
1886 define float @clamp_is_ugt_known_positive_to_1(float %arg, float %unknown) {
1888 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1890 ; CHECK-NEXT: [[IS_UGT_KNOWN_POSITIVE:%.*]] = fcmp ugt float [[ARG]], [[KNOWN_POSITIVE]]
1891 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1895 %is.ugt.known.positive = fcmp ugt float %arg, %known.positive
1896 %select = select i1 %is.ugt.known.positive, float 1.0, float %arg
1900 define float @clamp_is_uge_known_positive_to_1(float %arg, float %unknown) {
1902 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1904 ; CHECK-NEXT: [[IS_UGE_KNOWN_POSITIVE:%.*]] = fcmp uge float [[ARG]], [[KNOWN_POSITIVE]]
1905 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGE_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1909 %is.uge.known.positive = fcmp uge float %arg, %known.positive
1910 %select = select i1 %is.uge.known.positive, float 1.0, float %arg
1914 define float @clamp_is_ult_known_positive_to_1(float %arg, float %unknown) {
1916 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1918 ; CHECK-NEXT: [[IS_ULT_KNOWN_POSITIVE:%.*]] = fcmp ult float [[ARG]], [[KNOWN_POSITIVE]]
1919 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULT_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1923 %is.ult.known.positive = fcmp ult float %arg, %known.positive
1924 %select = select i1 %is.ult.known.positive, float 1.0, float %arg
1928 define float @clamp_is_ule_known_positive_to_1(float %arg, float %unknown) {
1930 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1932 ; CHECK-NEXT: [[IS_ULE_KNOWN_POSITIVE:%.*]] = fcmp ult float [[ARG]], [[KNOWN_POSITIVE]]
1933 …CK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULE_KNOWN_POSITIVE]], float 1.000000e+00, float [[ARG]]
1937 %is.ule.known.positive = fcmp ult float %arg, %known.positive
1938 %select = select i1 %is.ule.known.positive, float 1.0, float %arg
1942 define float @clamp_is_olt_known_negative_to_neg1(float %arg, float %unknown) {
1944 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1947 ; CHECK-NEXT: [[IS_OLT_NEGATIVE:%.*]] = fcmp olt float [[ARG]], [[KNOWN_NEGATIVE]]
1948 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLT_NEGATIVE]], float -1.000000e+00, float [[ARG]]
1953 %is.olt.negative = fcmp olt float %arg, %known.negative
1954 %select = select i1 %is.olt.negative, float -1.0, float %arg
1958 define float @clamp_is_ole_known_negative_to_neg1(float %arg, float %unknown) {
1960 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1963 ; CHECK-NEXT: [[IS_OLE_NEGATIVE:%.*]] = fcmp ole float [[ARG]], [[KNOWN_NEGATIVE]]
1964 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OLE_NEGATIVE]], float -1.000000e+00, float [[ARG]]
1969 %is.ole.negative = fcmp ole float %arg, %known.negative
1970 %select = select i1 %is.ole.negative, float -1.0, float %arg
1974 define float @clamp_is_ogt_known_negative_to_neg1(float %arg, float %unknown) {
1976 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1979 ; CHECK-NEXT: [[IS_OGT_NEGATIVE:%.*]] = fcmp ogt float [[ARG]], [[KNOWN_NEGATIVE]]
1980 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGT_NEGATIVE]], float -1.000000e+00, float [[ARG]]
1985 %is.ogt.negative = fcmp ogt float %arg, %known.negative
1986 %select = select i1 %is.ogt.negative, float -1.0, float %arg
1990 define float @clamp_is_oge_known_negative_to_neg1(float %arg, float %unknown) {
1992 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
1995 ; CHECK-NEXT: [[IS_OGE_NEGATIVE:%.*]] = fcmp oge float [[ARG]], [[KNOWN_NEGATIVE]]
1996 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_OGE_NEGATIVE]], float -1.000000e+00, float [[ARG]]
2001 %is.oge.negative = fcmp oge float %arg, %known.negative
2002 %select = select i1 %is.oge.negative, float -1.0, float %arg
2006 define float @clamp_is_ult_known_negative_to_neg1(float %arg, float %unknown) {
2008 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
2011 ; CHECK-NEXT: [[IS_ULT_NEGATIVE:%.*]] = fcmp ult float [[ARG]], [[KNOWN_NEGATIVE]]
2012 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULT_NEGATIVE]], float -1.000000e+00, float [[ARG]]
2017 %is.ult.negative = fcmp ult float %arg, %known.negative
2018 %select = select i1 %is.ult.negative, float -1.0, float %arg
2022 define float @clamp_is_ule_known_negative_to_neg1(float %arg, float %unknown) {
2024 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
2027 ; CHECK-NEXT: [[IS_ULE_NEGATIVE:%.*]] = fcmp ule float [[ARG]], [[KNOWN_NEGATIVE]]
2028 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ULE_NEGATIVE]], float -1.000000e+00, float [[ARG]]
2033 %is.ule.negative = fcmp ule float %arg, %known.negative
2034 %select = select i1 %is.ule.negative, float -1.0, float %arg
2038 define float @clamp_is_ugt_known_negative_to_neg1(float %arg, float %unknown) {
2040 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
2043 ; CHECK-NEXT: [[IS_UGT_NEGATIVE:%.*]] = fcmp ugt float [[ARG]], [[KNOWN_NEGATIVE]]
2044 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGT_NEGATIVE]], float -1.000000e+00, float [[ARG]]
2049 %is.ugt.negative = fcmp ugt float %arg, %known.negative
2050 %select = select i1 %is.ugt.negative, float -1.0, float %arg
2054 define float @clamp_is_uge_known_negative_to_neg1(float %arg, float %unknown) {
2056 ; CHECK-SAME: float [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR2]] {
2059 ; CHECK-NEXT: [[IS_UGE_NEGATIVE:%.*]] = fcmp uge float [[ARG]], [[KNOWN_NEGATIVE]]
2060 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_UGE_NEGATIVE]], float -1.000000e+00, float [[ARG]]
2065 %is.uge.negative = fcmp uge float %arg, %known.negative
2066 %select = select i1 %is.uge.negative, float -1.0, float %arg
2070 define float @ret_assumed_ogt_known_positive(float %arg, float %unknown) {
2072 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2074 ; CHECK-NEXT: [[OGT_KNOWN_POSITIVE:%.*]] = fcmp ogt float [[ARG]], [[KNOWN_POSITIVE]]
2076 ; CHECK-NEXT: ret float [[ARG]]
2079 %ogt.known.positive = fcmp ogt float %arg, %known.positive
2081 ret float %arg
2084 define float @ret_assumed_oge_known_positive(float %arg, float %unknown) {
2086 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2088 ; CHECK-NEXT: [[OGE_KNOWN_POSITIVE:%.*]] = fcmp oge float [[ARG]], [[KNOWN_POSITIVE]]
2090 ; CHECK-NEXT: ret float [[ARG]]
2093 %oge.known.positive = fcmp oge float %arg, %known.positive
2095 ret float %arg
2098 define float @ret_assumed_ugt_known_positive(float %arg, float %unknown) {
2100 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2102 ; CHECK-NEXT: [[UGT_KNOWN_POSITIVE:%.*]] = fcmp ugt float [[ARG]], [[KNOWN_POSITIVE]]
2104 ; CHECK-NEXT: ret float [[ARG]]
2107 %ugt.known.positive = fcmp ugt float %arg, %known.positive
2109 ret float %arg
2112 define float @ret_assumed_uge_known_positive(float %arg, float %unknown) {
2114 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2116 ; CHECK-NEXT: [[UGE_KNOWN_POSITIVE:%.*]] = fcmp uge float [[ARG]], [[KNOWN_POSITIVE]]
2118 ; CHECK-NEXT: ret float [[ARG]]
2121 %uge.known.positive = fcmp uge float %arg, %known.positive
2123 ret float %arg
2126 define float @ret_assumed_olt_known_negative(float %arg, float %unknown) {
2128 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2131 ; CHECK-NEXT: [[OLT_KNOWN_NEGATIVE:%.*]] = fcmp olt float [[ARG]], [[KNOWN_NEGATIVE]]
2133 ; CHECK-NEXT: ret float [[ARG]]
2137 %olt.known.negative = fcmp olt float %arg, %known.negative
2139 ret float %arg
2142 define float @ret_assumed_ole_known_negative(float %arg, float %unknown) {
2144 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2147 ; CHECK-NEXT: [[OLE_KNOWN_NEGATIVE:%.*]] = fcmp ole float [[ARG]], [[KNOWN_NEGATIVE]]
2149 ; CHECK-NEXT: ret float [[ARG]]
2153 %ole.known.negative = fcmp ole float %arg, %known.negative
2155 ret float %arg
2158 define float @ret_assumed_ult_known_negative(float %arg, float %unknown) {
2160 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2163 ; CHECK-NEXT: [[ULT_KNOWN_NEGATIVE:%.*]] = fcmp ult float [[ARG]], [[KNOWN_NEGATIVE]]
2165 ; CHECK-NEXT: ret float [[ARG]]
2169 %ult.known.negative = fcmp ult float %arg, %known.negative
2171 ret float %arg
2174 define float @ret_assumed_ule_known_negative(float %arg, float %unknown) {
2176 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2179 ; CHECK-NEXT: [[ULE_KNOWN_NEGATIVE:%.*]] = fcmp ule float [[ARG]], [[KNOWN_NEGATIVE]]
2181 ; CHECK-NEXT: ret float [[ARG]]
2185 %ule.known.negative = fcmp ule float %arg, %known.negative
2187 ret float %arg
2190 define float @ret_assumed_ogt_known_negative(float %arg, float %unknown) {
2192 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2195 ; CHECK-NEXT: [[OGT_KNOWN_NEGATIVE:%.*]] = fcmp ogt float [[ARG]], [[KNOWN_NEGATIVE]]
2197 ; CHECK-NEXT: ret float [[ARG]]
2201 %ogt.known.negative = fcmp ogt float %arg, %known.negative
2203 ret float %arg
2206 define float @ret_assumed_oge_known_negative(float %arg, float %unknown) {
2208 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2211 ; CHECK-NEXT: [[OGE_KNOWN_NEGATIVE:%.*]] = fcmp oge float [[ARG]], [[KNOWN_NEGATIVE]]
2213 ; CHECK-NEXT: ret float [[ARG]]
2217 %oge.known.negative = fcmp oge float %arg, %known.negative
2219 ret float %arg
2222 define float @ret_assumed_ugt_known_negative(float %arg, float %unknown) {
2224 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2227 ; CHECK-NEXT: [[UGT_KNOWN_NEGATIVE:%.*]] = fcmp ugt float [[ARG]], [[KNOWN_NEGATIVE]]
2229 ; CHECK-NEXT: ret float [[ARG]]
2233 %ugt.known.negative = fcmp ugt float %arg, %known.negative
2235 ret float %arg
2238 define float @ret_assumed_uge_known_negative(float %arg, float %unknown) {
2240 ; CHECK-SAME: float returned [[ARG:%.*]], float [[UNKNOWN:%.*]]) #[[ATTR3]] {
2243 ; CHECK-NEXT: [[UGE_KNOWN_NEGATIVE:%.*]] = fcmp uge float [[ARG]], [[KNOWN_NEGATIVE]]
2245 ; CHECK-NEXT: ret float [[ARG]]
2249 %uge.known.negative = fcmp uge float %arg, %known.negative
2251 ret float %arg
2258 define float @assume_oeq_smallest_normal(float %arg) {
2260 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2261 ; CHECK-NEXT: [[IS_OEQ_SMALLEST_NORMAL:%.*]] = fcmp oeq float [[ARG]], 0x3810000000000000
2263 ; CHECK-NEXT: ret float [[ARG]]
2265 %is.oeq.smallest.normal = fcmp oeq float %arg, 0x3810000000000000
2267 ret float %arg
2270 define float @assume_one_smallest_normal(float %arg) {
2272 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2273 ; CHECK-NEXT: [[IS_ONE_SMALLEST_NORMAL:%.*]] = fcmp one float [[ARG]], 0x3810000000000000
2275 ; CHECK-NEXT: ret float [[ARG]]
2277 %is.one.smallest.normal = fcmp one float %arg, 0x3810000000000000
2279 ret float %arg
2282 define float @assume_ueq_smallest_normal(float %arg) {
2284 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2285 ; CHECK-NEXT: [[IS_UEQ_SMALLEST_NORMAL:%.*]] = fcmp ueq float [[ARG]], 0x3810000000000000
2287 ; CHECK-NEXT: ret float [[ARG]]
2289 %is.ueq.smallest.normal = fcmp ueq float %arg, 0x3810000000000000
2291 ret float %arg
2294 define float @assume_une_smallest_normal(float %arg) {
2296 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2297 ; CHECK-NEXT: [[IS_UNE_SMALLEST_NORMAL:%.*]] = fcmp une float [[ARG]], 0x3810000000000000
2299 ; CHECK-NEXT: ret float [[ARG]]
2301 %is.une.smallest.normal = fcmp une float %arg, 0x3810000000000000
2303 ret float %arg
2306 define float @assume_ord_smallest_normal(float %arg) {
2308 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2309 ; CHECK-NEXT: [[IS_ORD_SMALLEST_NORMAL:%.*]] = fcmp ord float [[ARG]], 0x3810000000000000
2311 ; CHECK-NEXT: ret float [[ARG]]
2313 %is.ord.smallest.normal = fcmp ord float %arg, 0x3810000000000000
2315 ret float %arg
2318 define float @assume_uno_smallest_normal(float %arg) {
2320 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2321 ; CHECK-NEXT: [[IS_UNO_SMALLEST_NORMAL:%.*]] = fcmp uno float [[ARG]], 0x3810000000000000
2323 ; CHECK-NEXT: ret float [[ARG]]
2325 %is.uno.smallest.normal = fcmp uno float %arg, 0x3810000000000000
2327 ret float %arg
2330 define float @assume_fabs_oeq_smallest_normal(float %arg) {
2332 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2333 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2336 ; CHECK-NEXT: ret float [[ARG]]
2338 %fabs.arg = call float @llvm.fabs.f32(float %arg)
2339 %is.oeq.smallest.normal = fcmp oeq float %fabs.arg, 0x3810000000000000
2341 ret float %arg
2344 define float @assume_fabs_one_smallest_normal(float %arg) {
2346 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2347 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2350 ; CHECK-NEXT: ret float [[ARG]]
2352 %fabs.arg = call float @llvm.fabs.f32(float %arg)
2353 %is.one.smallest.normal = fcmp one float %fabs.arg, 0x3810000000000000
2355 ret float %arg
2358 define float @assume_fabs_ueq_smallest_normal(float %arg) {
2360 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2361 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2364 ; CHECK-NEXT: ret float [[ARG]]
2366 %fabs.arg = call float @llvm.fabs.f32(float %arg)
2367 %is.ueq.smallest.normal = fcmp ueq float %fabs.arg, 0x3810000000000000
2369 ret float %arg
2372 define float @assume_fabs_une_smallest_normal(float %arg) {
2374 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2375 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2378 ; CHECK-NEXT: ret float [[ARG]]
2380 %fabs.arg = call float @llvm.fabs.f32(float %arg)
2381 %is.une.smallest.normal = fcmp une float %fabs.arg, 0x3810000000000000
2383 ret float %arg
2386 define float @assume_fabs_ord_smallest_normal(float %arg) {
2388 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2389 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2392 ; CHECK-NEXT: ret float [[ARG]]
2394 %fabs.arg = call float @llvm.fabs.f32(float %arg)
2395 %is.ord.smallest.normal = fcmp ord float %fabs.arg, 0x3810000000000000
2397 ret float %arg
2400 define float @assume_fabs_uno_smallest_normal(float %arg) {
2402 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2403 ; CHECK-NEXT: [[FABS_ARG:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2406 ; CHECK-NEXT: ret float [[ARG]]
2408 %fabs.arg = call float @llvm.fabs.f32(float %arg)
2409 %is.uno.smallest.normal = fcmp uno float %fabs.arg, 0x3810000000000000
2411 ret float %arg
2414 define float @assume_oeq_smallest_normal_known_pos(float nofpclass(ninf nsub nnorm nzero) %arg) {
2416 ; CHECK-SAME: float returned nofpclass(ninf nzero nsub nnorm) [[ARG:%.*]]) #[[ATTR3]] {
2417 ; CHECK-NEXT: [[IS_OEQ_SMALLEST_NORMAL:%.*]] = fcmp oeq float [[ARG]], 0x3810000000000000
2419 ; CHECK-NEXT: ret float [[ARG]]
2421 %is.oeq.smallest.normal = fcmp oeq float %arg, 0x3810000000000000
2423 ret float %arg
2430 define float @assume_ole_pinf(float %arg) {
2432 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2433 ; CHECK-NEXT: [[FCMP:%.*]] = fcmp ole float [[ARG]], 0x7FF0000000000000
2435 ; CHECK-NEXT: ret float [[ARG]]
2437 %fcmp = fcmp ole float %arg, 0x7FF0000000000000
2439 ret float %arg
2442 define float @assume_ole_ninf(float %arg) {
2444 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2445 ; CHECK-NEXT: [[FCMP:%.*]] = fcmp ole float [[ARG]], 0xFFF0000000000000
2447 ; CHECK-NEXT: ret float [[ARG]]
2449 %fcmp = fcmp ole float %arg, 0xFFF0000000000000
2451 ret float %arg
2454 define float @assume_ugt_pinf(float %arg) {
2456 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2457 ; CHECK-NEXT: [[FCMP:%.*]] = fcmp ugt float [[ARG]], 0x7FF0000000000000
2459 ; CHECK-NEXT: ret float [[ARG]]
2461 %fcmp = fcmp ugt float %arg, 0x7FF0000000000000
2463 ret float %arg
2466 define float @assume_ugt_ninf(float %arg) {
2468 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2469 ; CHECK-NEXT: [[FCMP:%.*]] = fcmp ugt float [[ARG]], 0xFFF0000000000000
2471 ; CHECK-NEXT: ret float [[ARG]]
2473 %fcmp = fcmp ugt float %arg, 0xFFF0000000000000
2475 ret float %arg
2478 define float @assume_fabs_ole_pinf(float %arg) {
2480 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2481 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2484 ; CHECK-NEXT: ret float [[ARG]]
2486 %fabs = call float @llvm.fabs.f32(float %arg)
2489 ret float %arg
2492 define float @assume_fabs_ole_ninf(float %arg) {
2494 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2496 ; CHECK-NEXT: ret float [[ARG]]
2498 %fabs = call float @llvm.fabs.f32(float %arg)
2501 ret float %arg
2504 define float @assume_fabs_ugt_pinf(float %arg) {
2506 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2507 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR4]]
2510 ; CHECK-NEXT: ret float [[ARG]]
2512 %fabs = call float @llvm.fabs.f32(float %arg)
2515 ret float %arg
2518 define float @assume_fabs_ugt_ninf(float %arg) {
2520 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2522 ; CHECK-NEXT: ret float [[ARG]]
2524 %fabs = call float @llvm.fabs.f32(float %arg)
2527 ret float %arg
2534 define float @assume_fabs_false_pinf(float %arg) {
2536 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2538 ; CHECK-NEXT: ret float [[ARG]]
2540 %fabs = call float @llvm.fabs.f32(float %arg)
2543 ret float %arg
2546 define float @assume_fabs_false_ninf(float %arg) {
2548 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2550 ; CHECK-NEXT: ret float [[ARG]]
2552 %fabs = call float @llvm.fabs.f32(float %arg)
2555 ret float %arg
2558 define float @assume_false_pinf(float %arg) {
2560 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2562 ; CHECK-NEXT: ret float [[ARG]]
2564 %fcmp = fcmp false float %arg, 0x7FF0000000000000
2566 ret float %arg
2569 define float @assume_false_ninf(float %arg) {
2571 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2573 ; CHECK-NEXT: ret float [[ARG]]
2575 %fcmp = fcmp false float %arg, 0xFFF0000000000000
2577 ret float %arg
2580 define float @clamp_false_pinf_0.0(float %arg) {
2582 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
2583 ; CHECK-NEXT: ret float [[ARG]]
2585 %fcmp = fcmp false float %arg, 0x7FF0000000000000
2586 %select = select i1 %fcmp, float 0.0, float %arg
2590 define float @clamp_false_ninf_0.0(float %arg) {
2592 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
2593 ; CHECK-NEXT: ret float [[ARG]]
2595 %fcmp = fcmp false float %arg, 0xFFF0000000000000
2596 %select = select i1 %fcmp, float 0.0, float %arg
2600 define float @clamp_false_smallest_normal_0.0(float %arg) {
2602 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
2603 ; CHECK-NEXT: ret float [[ARG]]
2605 %fcmp = fcmp false float %arg, 0x3810000000000000
2606 %select = select i1 %fcmp, float 0.0, float %arg
2610 define float @assume_false_p0(float %arg) {
2612 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2614 ; CHECK-NEXT: ret float [[ARG]]
2616 %fcmp = fcmp false float %arg, 0.0
2618 ret float %arg
2621 define float @assume_false_n0(float %arg) {
2623 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2625 ; CHECK-NEXT: ret float [[ARG]]
2627 %fcmp = fcmp false float %arg, -0.0
2629 ret float %arg
2632 define float @assume_false_smallest_normal(float %arg) {
2634 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2636 ; CHECK-NEXT: ret float [[ARG]]
2638 %fcmp = fcmp false float %arg, 0x3810000000000000
2640 ret float %arg
2643 define float @clamp_false_nan(float %arg) {
2645 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
2646 ; CHECK-NEXT: ret float [[ARG]]
2648 %fcmp = fcmp false float %arg, 0x7FF8000000000000
2649 %select = select i1 %fcmp, float 0.0, float %arg
2653 define float @clamp_false_p0(float %arg) {
2655 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
2656 ; CHECK-NEXT: ret float [[ARG]]
2658 %fcmp = fcmp false float %arg, 0.0
2659 %select = select i1 %fcmp, float 0.0, float %arg
2663 define float @clamp_false_n0(float %arg) {
2665 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
2666 ; CHECK-NEXT: ret float [[ARG]]
2668 %fcmp = fcmp false float %arg, -0.0
2669 %select = select i1 %fcmp, float 0.0, float %arg
2677 define float @assume_fabs_true_pinf(float %arg) {
2679 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2681 ; CHECK-NEXT: ret float [[ARG]]
2683 %fabs = call float @llvm.fabs.f32(float %arg)
2686 ret float %arg
2689 define float @assume_fabs_true_ninf(float %arg) {
2691 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2693 ; CHECK-NEXT: ret float [[ARG]]
2695 %fabs = call float @llvm.fabs.f32(float %arg)
2698 ret float %arg
2701 define float @assume_true_pinf(float %arg) {
2703 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2705 ; CHECK-NEXT: ret float [[ARG]]
2707 %fcmp = fcmp true float %arg, 0x7FF0000000000000
2709 ret float %arg
2712 define float @assume_true_ninf(float %arg) {
2714 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2716 ; CHECK-NEXT: ret float [[ARG]]
2718 %fcmp = fcmp true float %arg, 0xFFF0000000000000
2720 ret float %arg
2723 define float @assume_true_p0(float %arg) {
2725 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2727 ; CHECK-NEXT: ret float [[ARG]]
2729 %fcmp = fcmp true float %arg, 0.0
2731 ret float %arg
2734 define float @assume_true_n0(float %arg) {
2736 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2738 ; CHECK-NEXT: ret float [[ARG]]
2740 %fcmp = fcmp true float %arg, -0.0
2742 ret float %arg
2745 define float @assume_true_smallest_normal(float %arg) {
2747 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR3]] {
2749 ; CHECK-NEXT: ret float [[ARG]]
2751 %fcmp = fcmp true float %arg, 0x3810000000000000
2753 ret float %arg
2756 define float @clamp_true_pinf_0.0(float %arg) {
2758 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
2761 %fcmp = fcmp true float %arg, 0x7FF0000000000000
2762 %select = select i1 %fcmp, float 0.0, float %arg
2766 define float @clamp_true_ninf_0.0(float %arg) {
2768 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
2771 %fcmp = fcmp true float %arg, 0xFFF0000000000000
2772 %select = select i1 %fcmp, float 0.0, float %arg
2776 define float @clamp_true_smallest_normal_0.0(float %arg) {
2778 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
2781 %fcmp = fcmp true float %arg, 0x3810000000000000
2782 %select = select i1 %fcmp, float 0.0, float %arg
2786 define float @clamp_true_nan(float %arg) {
2788 ; CHECK-SAME: float returned [[ARG:%.*]]) #[[ATTR2]] {
2789 ; CHECK-NEXT: ret float [[ARG]]
2791 %fcmp = fcmp true float %arg, 0x7FF8000000000000
2792 %select = select i1 %fcmp, float %arg, float 0.0
2796 define float @clamp_true_p0(float %arg) {
2798 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
2801 %fcmp = fcmp true float %arg, 0.0
2802 %select = select i1 %fcmp, float 0.0, float %arg
2806 define float @clamp_true_n0(float %arg) {
2808 ; CHECK-SAME: float [[ARG:%.*]]) #[[ATTR2]] {
2811 %fcmp = fcmp true float %arg, -0.0
2812 %select = select i1 %fcmp, float 0.0, float %arg