33
44define i8 @and_sub (i8 %a ) {
55; CHECK-LABEL: @and_sub(
6- ; CHECK-NEXT: [[AND1:%.*]] = and i8 [[A:%.*]], 15
7- ; CHECK-NEXT: [[AND2:%.*]] = and i8 [[A]], 3
8- ; CHECK-NEXT: [[RET:%.*]] = sub nsw i8 [[AND1]], [[AND2]]
6+ ; CHECK-NEXT: [[RET:%.*]] = and i8 [[A:%.*]], 12
97; CHECK-NEXT: ret i8 [[RET]]
108;
119 %and1 = and i8 %a , 15
@@ -22,7 +20,7 @@ define i8 @and_sub_multi_use(i8 %a) {
2220; CHECK-NEXT: call void @use(i8 [[AND1]])
2321; CHECK-NEXT: [[AND2:%.*]] = and i8 [[A]], 3
2422; CHECK-NEXT: call void @use(i8 [[AND2]])
25- ; CHECK-NEXT: [[RET:%.*]] = sub nsw i8 [[AND1 ]], [[AND2]]
23+ ; CHECK-NEXT: [[RET:%.*]] = and i8 [[A ]], 12
2624; CHECK-NEXT: ret i8 [[RET]]
2725;
2826 %and1 = and i8 %a , 15
@@ -35,9 +33,7 @@ define i8 @and_sub_multi_use(i8 %a) {
3533
3634define <2 x i32 > @and_sub_vec (<2 x i32 > %a ) {
3735; CHECK-LABEL: @and_sub_vec(
38- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i32> [[A:%.*]], <i32 11, i32 10>
39- ; CHECK-NEXT: [[AND2:%.*]] = and <2 x i32> [[A]], <i32 8, i32 2>
40- ; CHECK-NEXT: [[RET:%.*]] = sub nsw <2 x i32> [[AND1]], [[AND2]]
36+ ; CHECK-NEXT: [[RET:%.*]] = and <2 x i32> [[A:%.*]], <i32 3, i32 8>
4137; CHECK-NEXT: ret <2 x i32> [[RET]]
4238;
4339 %and1 = and <2 x i32 > %a , <i32 11 , i32 10 >
@@ -49,10 +45,7 @@ define <2 x i32> @and_sub_vec(<2 x i32> %a) {
4945
5046define <2 x i32 > @and_sub_vec_posion (<2 x i32 > %a ) {
5147; CHECK-LABEL: @and_sub_vec_posion(
52- ; CHECK-NEXT: [[AND1:%.*]] = and <2 x i32> [[A:%.*]], <i32 11, i32 poison>
53- ; CHECK-NEXT: [[AND2:%.*]] = and <2 x i32> [[A]], <i32 poison, i32 2>
54- ; CHECK-NEXT: [[RET:%.*]] = sub nsw <2 x i32> [[AND1]], [[AND2]]
55- ; CHECK-NEXT: ret <2 x i32> [[RET]]
48+ ; CHECK-NEXT: ret <2 x i32> poison
5649;
5750 %and1 = and <2 x i32 > %a , <i32 11 , i32 poison>
5851 %and2 = and <2 x i32 > %a , <i32 poison, i32 2 >
0 commit comments