@@ -6,9 +6,8 @@ declare void @use(i8)
6
6
define i1 @fold_sext_to_and (i8 %x ) {
7
7
; CHECK-LABEL: define i1 @fold_sext_to_and(
8
8
; CHECK-SAME: i8 [[X:%.*]]) {
9
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
10
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], -2147483647
11
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
9
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[X]], -127
10
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i8 [[TMP1]], 1
12
11
; CHECK-NEXT: ret i1 [[TMP3]]
13
12
;
14
13
%1 = sext i8 %x to i32
@@ -20,9 +19,8 @@ define i1 @fold_sext_to_and(i8 %x) {
20
19
define i1 @fold_sext_to_and1 (i8 %x ) {
21
20
; CHECK-LABEL: define i1 @fold_sext_to_and1(
22
21
; CHECK-SAME: i8 [[X:%.*]]) {
23
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
24
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], -2147483647
25
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i32 [[TMP2]], 1
22
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[X]], -127
23
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 1
26
24
; CHECK-NEXT: ret i1 [[TMP3]]
27
25
;
28
26
%1 = sext i8 %x to i32
@@ -34,9 +32,8 @@ define i1 @fold_sext_to_and1(i8 %x) {
34
32
define i1 @fold_sext_to_and2 (i8 %x ) {
35
33
; CHECK-LABEL: define i1 @fold_sext_to_and2(
36
34
; CHECK-SAME: i8 [[X:%.*]]) {
37
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
38
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], 1073741826
39
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 2
35
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[X]], -126
36
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i8 [[TMP1]], 2
40
37
; CHECK-NEXT: ret i1 [[TMP3]]
41
38
;
42
39
%1 = sext i8 %x to i32
@@ -48,9 +45,8 @@ define i1 @fold_sext_to_and2(i8 %x) {
48
45
define i1 @fold_sext_to_and3 (i8 %x ) {
49
46
; CHECK-LABEL: define i1 @fold_sext_to_and3(
50
47
; CHECK-SAME: i8 [[X:%.*]]) {
51
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
52
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], 1073741826
53
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i32 [[TMP2]], 2
48
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i8 [[X]], -126
49
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 2
54
50
; CHECK-NEXT: ret i1 [[TMP3]]
55
51
;
56
52
%1 = sext i8 %x to i32
@@ -64,8 +60,8 @@ define i1 @fold_sext_to_and_multi_use(i8 %x) {
64
60
; CHECK-SAME: i8 [[X:%.*]]) {
65
61
; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
66
62
; CHECK-NEXT: call void @use(i32 [[TMP1]])
67
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1 ]], -2147483647
68
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 1
63
+ ; CHECK-NEXT: [[TMP2:%.*]] = and i8 [[X ]], -127
64
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i8 [[TMP2]], 1
69
65
; CHECK-NEXT: ret i1 [[TMP3]]
70
66
;
71
67
%1 = sext i8 %x to i32
@@ -80,8 +76,8 @@ define i1 @fold_sext_to_and_multi_use1(i8 %x) {
80
76
; CHECK-SAME: i8 [[X:%.*]]) {
81
77
; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
82
78
; CHECK-NEXT: call void @use(i32 [[TMP1]])
83
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1 ]], -2147483647
84
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i32 [[TMP2]], 1
79
+ ; CHECK-NEXT: [[TMP2:%.*]] = and i8 [[X ]], -127
80
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP2]], 1
85
81
; CHECK-NEXT: ret i1 [[TMP3]]
86
82
;
87
83
%1 = sext i8 %x to i32
@@ -96,8 +92,8 @@ define i1 @fold_sext_to_and_multi_use2(i8 %x) {
96
92
; CHECK-SAME: i8 [[X:%.*]]) {
97
93
; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
98
94
; CHECK-NEXT: call void @use(i32 [[TMP1]])
99
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1 ]], 1073741826
100
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 2
95
+ ; CHECK-NEXT: [[TMP2:%.*]] = and i8 [[X ]], -126
96
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i8 [[TMP2]], 2
101
97
; CHECK-NEXT: ret i1 [[TMP3]]
102
98
;
103
99
%1 = sext i8 %x to i32
@@ -112,8 +108,8 @@ define i1 @fold_sext_to_and_multi_use3(i8 %x) {
112
108
; CHECK-SAME: i8 [[X:%.*]]) {
113
109
; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X]] to i32
114
110
; CHECK-NEXT: call void @use(i32 [[TMP1]])
115
- ; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1 ]], 1073741826
116
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i32 [[TMP2]], 2
111
+ ; CHECK-NEXT: [[TMP2:%.*]] = and i8 [[X ]], -126
112
+ ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP2]], 2
117
113
; CHECK-NEXT: ret i1 [[TMP3]]
118
114
;
119
115
%1 = sext i8 %x to i32
0 commit comments