@@ -3862,9 +3862,10 @@ define <8 x i1> @bitreverse_vec_ne(<8 x i16> %x, <8 x i16> %y) {
3862
3862
define i1 @knownbits1 (i8 %a , i8 %b ) {
3863
3863
; CHECK-LABEL: @knownbits1(
3864
3864
; CHECK-NEXT: [[A1:%.*]] = and i8 [[A:%.*]], 1
3865
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint i8 [[A1]], 4
3865
3866
; CHECK-NEXT: [[B1:%.*]] = and i8 [[B:%.*]], 2
3866
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint i8 [[B1]], 1
3867
- ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[A1 ]], [[TMP1 ]]
3867
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint i8 [[B1]], 5
3868
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[A2 ]], [[B2 ]]
3868
3869
; CHECK-NEXT: ret i1 [[C]]
3869
3870
;
3870
3871
%a1 = and i8 %a , 5
@@ -3878,9 +3879,10 @@ define i1 @knownbits1(i8 %a, i8 %b) {
3878
3879
define i1 @knownbits2 (i8 %a , i8 %b ) {
3879
3880
; CHECK-LABEL: @knownbits2(
3880
3881
; CHECK-NEXT: [[A1:%.*]] = and i8 [[A:%.*]], 1
3882
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint i8 [[A1]], 4
3881
3883
; CHECK-NEXT: [[B1:%.*]] = and i8 [[B:%.*]], 2
3882
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint i8 [[B1]], 1
3883
- ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[A1 ]], [[TMP1 ]]
3884
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint i8 [[B1]], 5
3885
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[A2 ]], [[B2 ]]
3884
3886
; CHECK-NEXT: ret i1 [[C]]
3885
3887
;
3886
3888
%a1 = and i8 %a , 5
@@ -3894,9 +3896,10 @@ define i1 @knownbits2(i8 %a, i8 %b) {
3894
3896
define i1 @knownbits3 (i8 %a , i8 %b ) {
3895
3897
; CHECK-LABEL: @knownbits3(
3896
3898
; CHECK-NEXT: [[A1:%.*]] = and i8 [[A:%.*]], 1
3899
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint i8 [[A1]], 4
3897
3900
; CHECK-NEXT: [[B1:%.*]] = and i8 [[B:%.*]], 2
3898
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint i8 [[B1]], 1
3899
- ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[TMP1 ]], [[A1 ]]
3901
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint i8 [[B1]], 5
3902
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[B2 ]], [[A2 ]]
3900
3903
; CHECK-NEXT: ret i1 [[C]]
3901
3904
;
3902
3905
%a1 = and i8 %a , 5
@@ -3910,9 +3913,10 @@ define i1 @knownbits3(i8 %a, i8 %b) {
3910
3913
define <2 x i1 > @knownbits4 (<2 x i8 > %a , <2 x i8 > %b ) {
3911
3914
; CHECK-LABEL: @knownbits4(
3912
3915
; CHECK-NEXT: [[A1:%.*]] = and <2 x i8> [[A:%.*]], <i8 1, i8 1>
3916
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint <2 x i8> [[A1]], <i8 4, i8 4>
3913
3917
; CHECK-NEXT: [[B1:%.*]] = and <2 x i8> [[B:%.*]], <i8 2, i8 2>
3914
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint <2 x i8> [[B1]], <i8 1 , i8 1 >
3915
- ; CHECK-NEXT: [[C:%.*]] = icmp ne <2 x i8> [[TMP1 ]], [[A1 ]]
3918
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint <2 x i8> [[B1]], <i8 5 , i8 5 >
3919
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne <2 x i8> [[B2 ]], [[A2 ]]
3916
3920
; CHECK-NEXT: ret <2 x i1> [[C]]
3917
3921
;
3918
3922
%a1 = and <2 x i8 > %a , <i8 5 , i8 5 >
@@ -3928,9 +3932,10 @@ define <2 x i1> @knownbits4(<2 x i8> %a, <2 x i8> %b) {
3928
3932
define i1 @knownbits5 (i8 %a , i8 %b ) {
3929
3933
; CHECK-LABEL: @knownbits5(
3930
3934
; CHECK-NEXT: [[A1:%.*]] = and i8 [[A:%.*]], -127
3935
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint i8 [[A1]], 4
3931
3936
; CHECK-NEXT: [[B1:%.*]] = and i8 [[B:%.*]], 2
3932
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint i8 [[B1]], 1
3933
- ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[A1 ]], [[TMP1 ]]
3937
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint i8 [[B1]], 5
3938
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[A2 ]], [[B2 ]]
3934
3939
; CHECK-NEXT: ret i1 [[C]]
3935
3940
;
3936
3941
%a1 = and i8 %a , 133
@@ -3944,9 +3949,10 @@ define i1 @knownbits5(i8 %a, i8 %b) {
3944
3949
define i1 @knownbits6 (i8 %a , i8 %b ) {
3945
3950
; CHECK-LABEL: @knownbits6(
3946
3951
; CHECK-NEXT: [[A1:%.*]] = and i8 [[A:%.*]], -127
3952
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint i8 [[A1]], 4
3947
3953
; CHECK-NEXT: [[B1:%.*]] = and i8 [[B:%.*]], 2
3948
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint i8 [[B1]], 1
3949
- ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[A1 ]], [[TMP1 ]]
3954
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint i8 [[B1]], 5
3955
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[A2 ]], [[B2 ]]
3950
3956
; CHECK-NEXT: ret i1 [[C]]
3951
3957
;
3952
3958
%a1 = and i8 %a , 133
@@ -3960,9 +3966,10 @@ define i1 @knownbits6(i8 %a, i8 %b) {
3960
3966
define <2 x i1 > @knownbits7 (<2 x i8 > %a , <2 x i8 > %b ) {
3961
3967
; CHECK-LABEL: @knownbits7(
3962
3968
; CHECK-NEXT: [[A1:%.*]] = and <2 x i8> [[A:%.*]], <i8 -127, i8 -127>
3969
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint <2 x i8> [[A1]], <i8 4, i8 4>
3963
3970
; CHECK-NEXT: [[B1:%.*]] = and <2 x i8> [[B:%.*]], <i8 2, i8 2>
3964
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint <2 x i8> [[B1]], <i8 1 , i8 1 >
3965
- ; CHECK-NEXT: [[C:%.*]] = icmp eq <2 x i8> [[TMP1 ]], [[A1 ]]
3971
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint <2 x i8> [[B1]], <i8 5 , i8 5 >
3972
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq <2 x i8> [[B2 ]], [[A2 ]]
3966
3973
; CHECK-NEXT: ret <2 x i1> [[C]]
3967
3974
;
3968
3975
%a1 = and <2 x i8 > %a , <i8 133 , i8 133 >
@@ -3976,9 +3983,10 @@ define <2 x i1> @knownbits7(<2 x i8> %a, <2 x i8> %b) {
3976
3983
define i1 @knownbits8 (i8 %a , i8 %b ) {
3977
3984
; CHECK-LABEL: @knownbits8(
3978
3985
; CHECK-NEXT: [[A1:%.*]] = and i8 [[A:%.*]], -127
3986
+ ; CHECK-NEXT: [[A2:%.*]] = or disjoint i8 [[A1]], 4
3979
3987
; CHECK-NEXT: [[B1:%.*]] = and i8 [[B:%.*]], 2
3980
- ; CHECK-NEXT: [[TMP1 :%.*]] = or disjoint i8 [[B1]], 1
3981
- ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[TMP1 ]], [[A1 ]]
3988
+ ; CHECK-NEXT: [[B2 :%.*]] = or disjoint i8 [[B1]], 5
3989
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[B2 ]], [[A2 ]]
3982
3990
; CHECK-NEXT: ret i1 [[C]]
3983
3991
;
3984
3992
%a1 = and i8 %a , 133
@@ -4904,80 +4912,3 @@ define i1 @or_positive_sgt_zero_multi_use(i8 %a) {
4904
4912
%cmp = icmp sgt i8 %b , 0
4905
4913
ret i1 %cmp
4906
4914
}
4907
-
4908
-
4909
- define i1 @disjoint_or_sgt_1 (i8 %a , i8 %b ) {
4910
- ; CHECK-LABEL: @disjoint_or_sgt_1(
4911
- ; CHECK-NEXT: [[B1:%.*]] = add nsw i8 [[B:%.*]], 2
4912
- ; CHECK-NEXT: [[ICMP_:%.*]] = icmp sle i8 [[B1]], [[A:%.*]]
4913
- ; CHECK-NEXT: ret i1 [[ICMP_]]
4914
- ;
4915
- %a1 = or disjoint i8 %a , 1
4916
- %b1 = add nsw i8 %b , 2
4917
- %icmp_ = icmp sgt i8 %a1 , %b1
4918
- ret i1 %icmp_
4919
- }
4920
-
4921
- define i1 @disjoint_or_sgt_2 (i8 %a , i8 %b ) {
4922
- ; CHECK-LABEL: @disjoint_or_sgt_2(
4923
- ; CHECK-NEXT: [[A1:%.*]] = or disjoint i8 [[A:%.*]], 2
4924
- ; CHECK-NEXT: [[B1:%.*]] = add i8 [[B:%.*]], 1
4925
- ; CHECK-NEXT: [[ICMP_:%.*]] = icmp sgt i8 [[A1]], [[B1]]
4926
- ; CHECK-NEXT: ret i1 [[ICMP_]]
4927
- ;
4928
- %a1 = or disjoint i8 %a , 2
4929
- %b1 = add i8 %b , 1
4930
- %icmp_ = icmp sgt i8 %a1 , %b1
4931
- ret i1 %icmp_
4932
- }
4933
-
4934
- define i1 @disjoint_or_sgt_3 (i8 %a , i8 %b ) {
4935
- ; CHECK-LABEL: @disjoint_or_sgt_3(
4936
- ; CHECK-NEXT: [[A1:%.*]] = or disjoint i8 [[A:%.*]], 2
4937
- ; CHECK-NEXT: [[B1:%.*]] = add nuw i8 [[B:%.*]], 1
4938
- ; CHECK-NEXT: [[ICMP_:%.*]] = icmp sgt i8 [[A1]], [[B1]]
4939
- ; CHECK-NEXT: ret i1 [[ICMP_]]
4940
- ;
4941
- %a1 = or disjoint i8 %a , 2
4942
- %b1 = add nuw i8 %b , 1
4943
- %icmp_ = icmp sgt i8 %a1 , %b1
4944
- ret i1 %icmp_
4945
- }
4946
-
4947
- define i1 @disjoint_or_ugt_1 (i8 %a , i8 %b ) {
4948
- ; CHECK-LABEL: @disjoint_or_ugt_1(
4949
- ; CHECK-NEXT: [[B1:%.*]] = add nsw i8 [[B:%.*]], 2
4950
- ; CHECK-NEXT: [[ICMP_:%.*]] = icmp ule i8 [[B1]], [[A:%.*]]
4951
- ; CHECK-NEXT: ret i1 [[ICMP_]]
4952
- ;
4953
- %a1 = or disjoint i8 %a , 1
4954
- %b1 = add nsw i8 %b , 2
4955
- %icmp_ = icmp ugt i8 %a1 , %b1
4956
- ret i1 %icmp_
4957
- }
4958
-
4959
- define i1 @disjoint_or_ugt_2 (i8 %a , i8 %b ) {
4960
- ; CHECK-LABEL: @disjoint_or_ugt_2(
4961
- ; CHECK-NEXT: [[A1:%.*]] = or disjoint i8 [[A:%.*]], 2
4962
- ; CHECK-NEXT: [[B1:%.*]] = add i8 [[B:%.*]], 1
4963
- ; CHECK-NEXT: [[ICMP_:%.*]] = icmp ugt i8 [[A1]], [[B1]]
4964
- ; CHECK-NEXT: ret i1 [[ICMP_]]
4965
- ;
4966
- %a1 = or disjoint i8 %a , 2
4967
- %b1 = add i8 %b , 1
4968
- %icmp_ = icmp ugt i8 %a1 , %b1
4969
- ret i1 %icmp_
4970
- }
4971
-
4972
- define i1 @disjoint_or_ugt_3 (i8 %a , i8 %b ) {
4973
- ; CHECK-LABEL: @disjoint_or_ugt_3(
4974
- ; CHECK-NEXT: [[A1:%.*]] = or disjoint i8 [[A:%.*]], 2
4975
- ; CHECK-NEXT: [[B1:%.*]] = add nuw i8 [[B:%.*]], 1
4976
- ; CHECK-NEXT: [[ICMP_:%.*]] = icmp ugt i8 [[A1]], [[B1]]
4977
- ; CHECK-NEXT: ret i1 [[ICMP_]]
4978
- ;
4979
- %a1 = or disjoint i8 %a , 2
4980
- %b1 = add nuw i8 %b , 1
4981
- %icmp_ = icmp ugt i8 %a1 , %b1
4982
- ret i1 %icmp_
4983
- }
0 commit comments