@@ -383,112 +383,6 @@ define i32 @neg_nuw(i32 %x) {
383
383
ret i32 %neg
384
384
}
385
385
386
- define i1 @and_icmp1 (i32 %x , i32 %y ) {
387
- ; CHECK-LABEL: @and_icmp1(
388
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[X:%.*]], [[Y:%.*]]
389
- ; CHECK-NEXT: ret i1 [[TMP1]]
390
- ;
391
- %1 = icmp ult i32 %x , %y
392
- %2 = icmp ne i32 %y , 0
393
- %3 = and i1 %1 , %2
394
- ret i1 %3
395
- }
396
-
397
- define i1 @and_icmp2 (i32 %x , i32 %y ) {
398
- ; CHECK-LABEL: @and_icmp2(
399
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[X:%.*]], [[Y:%.*]]
400
- ; CHECK-NEXT: ret i1 [[TMP1]]
401
- ;
402
- %1 = icmp ugt i32 %x , %y
403
- %2 = icmp ne i32 %x , 0
404
- %3 = and i1 %1 , %2
405
- ret i1 %3
406
- }
407
-
408
- define i1 @and_icmp3 (i32 %x , i32 %y ) {
409
- ; CHECK-LABEL: @and_icmp3(
410
- ; CHECK-NEXT: ret i1 false
411
- ;
412
- %1 = icmp ult i32 %x , %y
413
- %2 = icmp eq i32 %y , 0
414
- %3 = and i1 %1 , %2
415
- ret i1 %3
416
- }
417
-
418
- define i1 @and_icmp4 (i32 %x , i32 %y ) {
419
- ; CHECK-LABEL: @and_icmp4(
420
- ; CHECK-NEXT: ret i1 false
421
- ;
422
- %1 = icmp ugt i32 %x , %y
423
- %2 = icmp eq i32 %x , 0
424
- %3 = and i1 %1 , %2
425
- ret i1 %3
426
- }
427
-
428
- define i1 @or_icmp1 (i32 %x , i32 %y ) {
429
- ; CHECK-LABEL: @or_icmp1(
430
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i32 [[Y:%.*]], 0
431
- ; CHECK-NEXT: ret i1 [[TMP1]]
432
- ;
433
- %1 = icmp ult i32 %x , %y
434
- %2 = icmp ne i32 %y , 0
435
- %3 = or i1 %1 , %2
436
- ret i1 %3
437
- }
438
-
439
- define i1 @or_icmp2 (i32 %x , i32 %y ) {
440
- ; CHECK-LABEL: @or_icmp2(
441
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i32 [[X:%.*]], 0
442
- ; CHECK-NEXT: ret i1 [[TMP1]]
443
- ;
444
- %1 = icmp ugt i32 %x , %y
445
- %2 = icmp ne i32 %x , 0
446
- %3 = or i1 %1 , %2
447
- ret i1 %3
448
- }
449
-
450
- define i1 @or_icmp3 (i32 %x , i32 %y ) {
451
- ; CHECK-LABEL: @or_icmp3(
452
- ; CHECK-NEXT: ret i1 true
453
- ;
454
- %1 = icmp uge i32 %x , %y
455
- %2 = icmp ne i32 %y , 0
456
- %3 = or i1 %1 , %2
457
- ret i1 %3
458
- }
459
-
460
- define i1 @or_icmp4 (i32 %x , i32 %y ) {
461
- ; CHECK-LABEL: @or_icmp4(
462
- ; CHECK-NEXT: ret i1 true
463
- ;
464
- %1 = icmp ule i32 %x , %y
465
- %2 = icmp ne i32 %x , 0
466
- %3 = or i1 %1 , %2
467
- ret i1 %3
468
- }
469
-
470
- define i1 @or_icmp5 (i32 %x , i32 %y ) {
471
- ; CHECK-LABEL: @or_icmp5(
472
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp uge i32 [[X:%.*]], [[Y:%.*]]
473
- ; CHECK-NEXT: ret i1 [[TMP1]]
474
- ;
475
- %1 = icmp uge i32 %x , %y
476
- %2 = icmp eq i32 %y , 0
477
- %3 = or i1 %1 , %2
478
- ret i1 %3
479
- }
480
-
481
- define i1 @or_icmp6 (i32 %x , i32 %y ) {
482
- ; CHECK-LABEL: @or_icmp6(
483
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp ule i32 [[X:%.*]], [[Y:%.*]]
484
- ; CHECK-NEXT: ret i1 [[TMP1]]
485
- ;
486
- %1 = icmp ule i32 %x , %y
487
- %2 = icmp eq i32 %x , 0
488
- %3 = or i1 %1 , %2
489
- ret i1 %3
490
- }
491
-
492
386
; PR27869 - Look through casts to eliminate cmps and bitwise logic.
493
387
494
388
define i32 @and_of_zexted_icmps (i32 %i ) {
@@ -581,6 +475,8 @@ define <2 x i3> @and_of_different_cast_icmps_vec(<2 x i8> %i, <2 x i16> %j) {
581
475
ret <2 x i3 > %and
582
476
}
583
477
478
+ ; limit
479
+
584
480
define i32 @or_of_zexted_icmps (i32 %i ) {
585
481
; CHECK-LABEL: @or_of_zexted_icmps(
586
482
; CHECK-NEXT: ret i32 1
0 commit comments