@@ -558,8 +558,7 @@ define i1 @shl1_trunc_sgt4(i32 %a) {
558
558
559
559
define i1 @eq_nuw (i32 %x ) {
560
560
; DL64-LABEL: @eq_nuw(
561
- ; DL64-NEXT: [[TMP1:%.*]] = and i32 [[X:%.*]], 255
562
- ; DL64-NEXT: [[R:%.*]] = icmp eq i32 [[TMP1]], 123
561
+ ; DL64-NEXT: [[R:%.*]] = icmp eq i32 [[X:%.*]], 123
563
562
; DL64-NEXT: ret i1 [[R]]
564
563
;
565
564
; DL8-LABEL: @eq_nuw(
@@ -573,22 +572,32 @@ define i1 @eq_nuw(i32 %x) {
573
572
}
574
573
575
574
define i1 @ult_nuw (i32 %x ) {
576
- ; CHECK-LABEL: @ult_nuw(
577
- ; CHECK-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
578
- ; CHECK-NEXT: [[R:%.*]] = icmp ult i8 [[T]], 45
579
- ; CHECK-NEXT: ret i1 [[R]]
575
+ ; DL64-LABEL: @ult_nuw(
576
+ ; DL64-NEXT: [[R:%.*]] = icmp ult i32 [[X:%.*]], 45
577
+ ; DL64-NEXT: ret i1 [[R]]
578
+ ;
579
+ ; DL8-LABEL: @ult_nuw(
580
+ ; DL8-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
581
+ ; DL8-NEXT: [[R:%.*]] = icmp ult i8 [[T]], 45
582
+ ; DL8-NEXT: ret i1 [[R]]
580
583
;
581
584
%t = trunc nuw i32 %x to i8
582
585
%r = icmp ult i8 %t , 45
583
586
ret i1 %r
584
587
}
585
588
586
589
define i1 @ule_nuw (i32 %x ) {
587
- ; CHECK-LABEL: @ule_nuw(
588
- ; CHECK-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
589
- ; CHECK-NEXT: [[R:%.*]] = icmp ult i8 [[T]], 46
590
- ; CHECK-NEXT: call void @use(i8 [[T]])
591
- ; CHECK-NEXT: ret i1 [[R]]
590
+ ; DL64-LABEL: @ule_nuw(
591
+ ; DL64-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
592
+ ; DL64-NEXT: [[R:%.*]] = icmp ult i32 [[X]], 46
593
+ ; DL64-NEXT: call void @use(i8 [[T]])
594
+ ; DL64-NEXT: ret i1 [[R]]
595
+ ;
596
+ ; DL8-LABEL: @ule_nuw(
597
+ ; DL8-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
598
+ ; DL8-NEXT: [[R:%.*]] = icmp ult i8 [[T]], 46
599
+ ; DL8-NEXT: call void @use(i8 [[T]])
600
+ ; DL8-NEXT: ret i1 [[R]]
592
601
;
593
602
%t = trunc nuw i32 %x to i8
594
603
%r = icmp ule i8 %t , 45
@@ -597,22 +606,32 @@ define i1 @ule_nuw(i32 %x) {
597
606
}
598
607
599
608
define i1 @ugt_nuw (i32 %x ) {
600
- ; CHECK-LABEL: @ugt_nuw(
601
- ; CHECK-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
602
- ; CHECK-NEXT: [[R:%.*]] = icmp ugt i8 [[T]], 12
603
- ; CHECK-NEXT: ret i1 [[R]]
609
+ ; DL64-LABEL: @ugt_nuw(
610
+ ; DL64-NEXT: [[R:%.*]] = icmp ugt i32 [[X:%.*]], 12
611
+ ; DL64-NEXT: ret i1 [[R]]
612
+ ;
613
+ ; DL8-LABEL: @ugt_nuw(
614
+ ; DL8-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
615
+ ; DL8-NEXT: [[R:%.*]] = icmp ugt i8 [[T]], 12
616
+ ; DL8-NEXT: ret i1 [[R]]
604
617
;
605
618
%t = trunc nuw i32 %x to i8
606
619
%r = icmp ugt i8 %t , 12
607
620
ret i1 %r
608
621
}
609
622
610
623
define i1 @uge_nuw (i32 %x ) {
611
- ; CHECK-LABEL: @uge_nuw(
612
- ; CHECK-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
613
- ; CHECK-NEXT: [[R:%.*]] = icmp ugt i8 [[T]], 98
614
- ; CHECK-NEXT: call void @use(i8 [[T]])
615
- ; CHECK-NEXT: ret i1 [[R]]
624
+ ; DL64-LABEL: @uge_nuw(
625
+ ; DL64-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
626
+ ; DL64-NEXT: [[R:%.*]] = icmp ugt i32 [[X]], 98
627
+ ; DL64-NEXT: call void @use(i8 [[T]])
628
+ ; DL64-NEXT: ret i1 [[R]]
629
+ ;
630
+ ; DL8-LABEL: @uge_nuw(
631
+ ; DL8-NEXT: [[T:%.*]] = trunc nuw i32 [[X:%.*]] to i8
632
+ ; DL8-NEXT: [[R:%.*]] = icmp ugt i8 [[T]], 98
633
+ ; DL8-NEXT: call void @use(i8 [[T]])
634
+ ; DL8-NEXT: ret i1 [[R]]
616
635
;
617
636
%t = trunc nuw i32 %x to i8
618
637
%r = icmp uge i8 %t , 99
@@ -646,8 +665,7 @@ define i1 @sgt_nuw_fail(i32 %x) {
646
665
647
666
define i1 @ne_nsw (i32 %x ) {
648
667
; DL64-LABEL: @ne_nsw(
649
- ; DL64-NEXT: [[TMP1:%.*]] = and i32 [[X:%.*]], 255
650
- ; DL64-NEXT: [[R:%.*]] = icmp ne i32 [[TMP1]], 133
668
+ ; DL64-NEXT: [[R:%.*]] = icmp ne i32 [[X:%.*]], -123
651
669
; DL64-NEXT: ret i1 [[R]]
652
670
;
653
671
; DL8-LABEL: @ne_nsw(
@@ -661,22 +679,32 @@ define i1 @ne_nsw(i32 %x) {
661
679
}
662
680
663
681
define i1 @slt_nsw (i32 %x ) {
664
- ; CHECK-LABEL: @slt_nsw(
665
- ; CHECK-NEXT: [[T:%.*]] = trunc nsw i32 [[X:%.*]] to i8
666
- ; CHECK-NEXT: [[R:%.*]] = icmp slt i8 [[T]], 45
667
- ; CHECK-NEXT: ret i1 [[R]]
682
+ ; DL64-LABEL: @slt_nsw(
683
+ ; DL64-NEXT: [[R:%.*]] = icmp slt i32 [[X:%.*]], 45
684
+ ; DL64-NEXT: ret i1 [[R]]
685
+ ;
686
+ ; DL8-LABEL: @slt_nsw(
687
+ ; DL8-NEXT: [[T:%.*]] = trunc nsw i32 [[X:%.*]] to i8
688
+ ; DL8-NEXT: [[R:%.*]] = icmp slt i8 [[T]], 45
689
+ ; DL8-NEXT: ret i1 [[R]]
668
690
;
669
691
%t = trunc nsw i32 %x to i8
670
692
%r = icmp slt i8 %t , 45
671
693
ret i1 %r
672
694
}
673
695
674
696
define i1 @sle_nsw (i16 %x ) {
675
- ; CHECK-LABEL: @sle_nsw(
676
- ; CHECK-NEXT: [[T:%.*]] = trunc nsw i16 [[X:%.*]] to i8
677
- ; CHECK-NEXT: [[R:%.*]] = icmp slt i8 [[T]], 46
678
- ; CHECK-NEXT: call void @use(i8 [[T]])
679
- ; CHECK-NEXT: ret i1 [[R]]
697
+ ; DL64-LABEL: @sle_nsw(
698
+ ; DL64-NEXT: [[T:%.*]] = trunc nsw i16 [[X:%.*]] to i8
699
+ ; DL64-NEXT: [[R:%.*]] = icmp slt i16 [[X]], 46
700
+ ; DL64-NEXT: call void @use(i8 [[T]])
701
+ ; DL64-NEXT: ret i1 [[R]]
702
+ ;
703
+ ; DL8-LABEL: @sle_nsw(
704
+ ; DL8-NEXT: [[T:%.*]] = trunc nsw i16 [[X:%.*]] to i8
705
+ ; DL8-NEXT: [[R:%.*]] = icmp slt i8 [[T]], 46
706
+ ; DL8-NEXT: call void @use(i8 [[T]])
707
+ ; DL8-NEXT: ret i1 [[R]]
680
708
;
681
709
%t = trunc nsw i16 %x to i8
682
710
%r = icmp sle i8 %t , 45
@@ -685,22 +713,32 @@ define i1 @sle_nsw(i16 %x) {
685
713
}
686
714
687
715
define i1 @sgt_nsw (i32 %x ) {
688
- ; CHECK-LABEL: @sgt_nsw(
689
- ; CHECK-NEXT: [[T:%.*]] = trunc nsw i32 [[X:%.*]] to i8
690
- ; CHECK-NEXT: [[R:%.*]] = icmp sgt i8 [[T]], -12
691
- ; CHECK-NEXT: ret i1 [[R]]
716
+ ; DL64-LABEL: @sgt_nsw(
717
+ ; DL64-NEXT: [[R:%.*]] = icmp sgt i32 [[X:%.*]], -12
718
+ ; DL64-NEXT: ret i1 [[R]]
719
+ ;
720
+ ; DL8-LABEL: @sgt_nsw(
721
+ ; DL8-NEXT: [[T:%.*]] = trunc nsw i32 [[X:%.*]] to i8
722
+ ; DL8-NEXT: [[R:%.*]] = icmp sgt i8 [[T]], -12
723
+ ; DL8-NEXT: ret i1 [[R]]
692
724
;
693
725
%t = trunc nsw i32 %x to i8
694
726
%r = icmp sgt i8 %t , -12
695
727
ret i1 %r
696
728
}
697
729
698
730
define i1 @sge_nsw (i64 %x ) {
699
- ; CHECK-LABEL: @sge_nsw(
700
- ; CHECK-NEXT: [[T:%.*]] = trunc nsw i64 [[X:%.*]] to i8
701
- ; CHECK-NEXT: [[R:%.*]] = icmp sgt i8 [[T]], 98
702
- ; CHECK-NEXT: call void @use(i8 [[T]])
703
- ; CHECK-NEXT: ret i1 [[R]]
731
+ ; DL64-LABEL: @sge_nsw(
732
+ ; DL64-NEXT: [[T:%.*]] = trunc nsw i64 [[X:%.*]] to i8
733
+ ; DL64-NEXT: [[R:%.*]] = icmp sgt i64 [[X]], 98
734
+ ; DL64-NEXT: call void @use(i8 [[T]])
735
+ ; DL64-NEXT: ret i1 [[R]]
736
+ ;
737
+ ; DL8-LABEL: @sge_nsw(
738
+ ; DL8-NEXT: [[T:%.*]] = trunc nsw i64 [[X:%.*]] to i8
739
+ ; DL8-NEXT: [[R:%.*]] = icmp sgt i8 [[T]], 98
740
+ ; DL8-NEXT: call void @use(i8 [[T]])
741
+ ; DL8-NEXT: ret i1 [[R]]
704
742
;
705
743
%t = trunc nsw i64 %x to i8
706
744
%r = icmp sge i8 %t , 99
0 commit comments