@@ -741,9 +741,9 @@ define i1 @test_const_shr_and_1_ne_0_multi_use_and_negative(i32 %b) {
741
741
742
742
define i1 @test_shl_sub_bw_minus_1_slt_0 (i32 %a , i32 %b ) {
743
743
; CHECK-LABEL: @test_shl_sub_bw_minus_1_slt_0(
744
- ; CHECK-NEXT: [[SUB :%.*]] = sub i32 31 , [[B:%.*]]
745
- ; CHECK-NEXT: [[SHL :%.*]] = shl i32 [[A:%.* ]], [[SUB ]]
746
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[SHL ]], 0
744
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw i32 1 , [[B:%.*]]
745
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i32 [[TMP1 ]], [[A:%.* ]]
746
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[TMP2 ]], 0
747
747
; CHECK-NEXT: ret i1 [[CMP]]
748
748
;
749
749
%sub = sub i32 31 , %b
@@ -754,9 +754,9 @@ define i1 @test_shl_sub_bw_minus_1_slt_0(i32 %a, i32 %b) {
754
754
755
755
define i1 @test_const_shl_sub_bw_minus_1_slt_0 (i32 %b ) {
756
756
; CHECK-LABEL: @test_const_shl_sub_bw_minus_1_slt_0(
757
- ; CHECK-NEXT: [[SUB :%.*]] = sub i32 31 , [[B:%.*]]
758
- ; CHECK-NEXT: [[SHL :%.*]] = shl i32 42, [[SUB]]
759
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[SHL ]], 0
757
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw i32 1 , [[B:%.*]]
758
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i32 [[TMP1]], 42
759
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[TMP2 ]], 0
760
760
; CHECK-NEXT: ret i1 [[CMP]]
761
761
;
762
762
%sub = sub i32 31 , %b
@@ -767,9 +767,9 @@ define i1 @test_const_shl_sub_bw_minus_1_slt_0(i32 %b) {
767
767
768
768
define i1 @test_not_shl_sub_bw_minus_1_slt_0 (i32 %a , i32 %b ) {
769
769
; CHECK-LABEL: @test_not_shl_sub_bw_minus_1_slt_0(
770
- ; CHECK-NEXT: [[SUB :%.*]] = sub i32 31 , [[B:%.*]]
771
- ; CHECK-NEXT: [[SHL :%.*]] = shl i32 [[A:%.* ]], [[SUB ]]
772
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[SHL ]], -1
770
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw i32 1 , [[B:%.*]]
771
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i32 [[TMP1 ]], [[A:%.* ]]
772
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[TMP2 ]], 0
773
773
; CHECK-NEXT: ret i1 [[CMP]]
774
774
;
775
775
%sub = sub i32 31 , %b
@@ -780,9 +780,9 @@ define i1 @test_not_shl_sub_bw_minus_1_slt_0(i32 %a, i32 %b) {
780
780
781
781
define i1 @test_shl_nuw_sub_bw_minus_1_slt_0 (i32 %a , i32 %b ) {
782
782
; CHECK-LABEL: @test_shl_nuw_sub_bw_minus_1_slt_0(
783
- ; CHECK-NEXT: [[SUB :%.*]] = sub i32 31 , [[B:%.*]]
784
- ; CHECK-NEXT: [[SHL :%.*]] = shl nuw i32 [[A:%.* ]], [[SUB ]]
785
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[SHL ]], 0
783
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw i32 1 , [[B:%.*]]
784
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i32 [[TMP1 ]], [[A:%.* ]]
785
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[TMP2 ]], 0
786
786
; CHECK-NEXT: ret i1 [[CMP]]
787
787
;
788
788
%sub = sub i32 31 , %b
@@ -793,9 +793,9 @@ define i1 @test_shl_nuw_sub_bw_minus_1_slt_0(i32 %a, i32 %b) {
793
793
794
794
define i1 @test_not_const_shl_sub_bw_minus_1_slt_0 (i32 %b ) {
795
795
; CHECK-LABEL: @test_not_const_shl_sub_bw_minus_1_slt_0(
796
- ; CHECK-NEXT: [[SUB :%.*]] = sub i32 31 , [[B:%.*]]
797
- ; CHECK-NEXT: [[SHL :%.*]] = shl i32 42, [[SUB]]
798
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[SHL ]], -1
796
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw i32 1 , [[B:%.*]]
797
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i32 [[TMP1]], 42
798
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[TMP2 ]], 0
799
799
; CHECK-NEXT: ret i1 [[CMP]]
800
800
;
801
801
%sub = sub i32 31 , %b
@@ -806,9 +806,9 @@ define i1 @test_not_const_shl_sub_bw_minus_1_slt_0(i32 %b) {
806
806
807
807
define <8 x i1 > @test_shl_sub_bw_minus_1_slt_0_v8i8 (<8 x i8 > %a , <8 x i8 > %b ) {
808
808
; CHECK-LABEL: @test_shl_sub_bw_minus_1_slt_0_v8i8(
809
- ; CHECK-NEXT: [[SUB :%.*]] = sub <8 x i8> <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, [[B:%.*]]
810
- ; CHECK-NEXT: [[SHL :%.*]] = shl <8 x i8> [[A:%.* ]], [[SUB ]]
811
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <8 x i8> [[SHL ]], zeroinitializer
809
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw <8 x i8> <i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 >, [[B:%.*]]
810
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and <8 x i8> [[TMP1 ]], [[A:%.* ]]
811
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <8 x i8> [[TMP2 ]], zeroinitializer
812
812
; CHECK-NEXT: ret <8 x i1> [[CMP]]
813
813
;
814
814
%sub = sub <8 x i8 > <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, %b
@@ -819,9 +819,9 @@ define <8 x i1> @test_shl_sub_bw_minus_1_slt_0_v8i8(<8 x i8> %a, <8 x i8> %b) {
819
819
820
820
define <8 x i1 > @test_const_shl_sub_bw_minus_1_slt_0_v8i8_splat (<8 x i8 > %b ) {
821
821
; CHECK-LABEL: @test_const_shl_sub_bw_minus_1_slt_0_v8i8_splat(
822
- ; CHECK-NEXT: [[SUB :%.*]] = sub <8 x i8> <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, [[B:%.*]]
823
- ; CHECK-NEXT: [[SHL :%.*]] = shl <8 x i8> <i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 42>, [[SUB]]
824
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <8 x i8> [[SHL ]], zeroinitializer
822
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw <8 x i8> <i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 >, [[B:%.*]]
823
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and <8 x i8> [[TMP1]], <i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 42>
824
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <8 x i8> [[TMP2 ]], zeroinitializer
825
825
; CHECK-NEXT: ret <8 x i1> [[CMP]]
826
826
;
827
827
%sub = sub <8 x i8 > <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, %b
@@ -845,9 +845,9 @@ define <8 x i1> @test_const_shl_sub_bw_minus_1_slt_0_v8i8_splat_poison_1(<8 x i8
845
845
846
846
define <8 x i1 > @test_const_shl_sub_bw_minus_1_slt_0_v8i8_splat_poison_2 (<8 x i8 > %b ) {
847
847
; CHECK-LABEL: @test_const_shl_sub_bw_minus_1_slt_0_v8i8_splat_poison_2(
848
- ; CHECK-NEXT: [[SUB :%.*]] = sub <8 x i8> <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, [[B:%.*]]
849
- ; CHECK-NEXT: [[SHL :%.*]] = shl <8 x i8> <i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 poison>, [[SUB]]
850
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <8 x i8> [[SHL ]], zeroinitializer
848
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw <8 x i8> <i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 >, [[B:%.*]]
849
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and <8 x i8> [[TMP1]], <i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 42, i8 poison>
850
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <8 x i8> [[TMP2 ]], zeroinitializer
851
851
; CHECK-NEXT: ret <8 x i1> [[CMP]]
852
852
;
853
853
%sub = sub <8 x i8 > <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, %b
@@ -858,9 +858,9 @@ define <8 x i1> @test_const_shl_sub_bw_minus_1_slt_0_v8i8_splat_poison_2(<8 x i8
858
858
859
859
define <8 x i1 > @test_const_shl_sub_bw_minus_1_slt_0_v8i8_nonsplat (<8 x i8 > %b ) {
860
860
; CHECK-LABEL: @test_const_shl_sub_bw_minus_1_slt_0_v8i8_nonsplat(
861
- ; CHECK-NEXT: [[SUB :%.*]] = sub <8 x i8> <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, [[B:%.*]]
862
- ; CHECK-NEXT: [[SHL :%.*]] = shl <8 x i8> <i8 42, i8 43, i8 44, i8 45, i8 46, i8 47, i8 48, i8 49>, [[SUB]]
863
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <8 x i8> [[SHL ]], zeroinitializer
861
+ ; CHECK-NEXT: [[TMP1 :%.*]] = shl nuw <8 x i8> <i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 , i8 1 >, [[B:%.*]]
862
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and <8 x i8> [[TMP1]], <i8 42, i8 43, i8 44, i8 45, i8 46, i8 47, i8 48, i8 49>
863
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <8 x i8> [[TMP2 ]], zeroinitializer
864
864
; CHECK-NEXT: ret <8 x i1> [[CMP]]
865
865
;
866
866
%sub = sub <8 x i8 > <i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 >, %b
0 commit comments