3
3
4
4
define i8 @and_sub (i8 %a ) {
5
5
; 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
9
7
; CHECK-NEXT: ret i8 [[RET]]
10
8
;
11
9
%and1 = and i8 %a , 15
@@ -22,7 +20,7 @@ define i8 @and_sub_multi_use(i8 %a) {
22
20
; CHECK-NEXT: call void @use(i8 [[AND1]])
23
21
; CHECK-NEXT: [[AND2:%.*]] = and i8 [[A]], 3
24
22
; CHECK-NEXT: call void @use(i8 [[AND2]])
25
- ; CHECK-NEXT: [[RET:%.*]] = sub nsw i8 [[AND1 ]], [[AND2]]
23
+ ; CHECK-NEXT: [[RET:%.*]] = and i8 [[A ]], 12
26
24
; CHECK-NEXT: ret i8 [[RET]]
27
25
;
28
26
%and1 = and i8 %a , 15
@@ -35,9 +33,7 @@ define i8 @and_sub_multi_use(i8 %a) {
35
33
36
34
define <2 x i32 > @and_sub_vec (<2 x i32 > %a ) {
37
35
; 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>
41
37
; CHECK-NEXT: ret <2 x i32> [[RET]]
42
38
;
43
39
%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) {
49
45
50
46
define <2 x i32 > @and_sub_vec_posion (<2 x i32 > %a ) {
51
47
; 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
56
49
;
57
50
%and1 = and <2 x i32 > %a , <i32 11 , i32 poison>
58
51
%and2 = and <2 x i32 > %a , <i32 poison, i32 2 >
0 commit comments