@@ -5,11 +5,8 @@ define i1 @compare_unsigned_min(i8 %0, i8 %1) {
5
5
; CHECK-LABEL: define i1 @compare_unsigned_min(
6
6
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
7
7
; CHECK-NEXT: [[START:.*:]]
8
- ; CHECK-NEXT: [[TMP4:%.*]] = icmp eq i8 [[TMP0]], 0
9
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 0
10
8
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i8 [[TMP0]], [[TMP1]]
11
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP4]], i1 [[TMP3]], i1 [[TMP2]]
12
- ; CHECK-NEXT: ret i1 [[RESULT]]
9
+ ; CHECK-NEXT: ret i1 [[TMP2]]
13
10
;
14
11
start:
15
12
%2 = icmp eq i8 %0 , 0
@@ -23,11 +20,8 @@ define i1 @compare_signed_min(i8 %0, i8 %1) {
23
20
; CHECK-LABEL: define i1 @compare_signed_min(
24
21
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
25
22
; CHECK-NEXT: [[START:.*:]]
26
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], -128
27
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -128
28
23
; CHECK-NEXT: [[TMP4:%.*]] = icmp slt i8 [[TMP0]], [[TMP1]]
29
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
30
- ; CHECK-NEXT: ret i1 [[RESULT]]
24
+ ; CHECK-NEXT: ret i1 [[TMP4]]
31
25
;
32
26
start:
33
27
%2 = icmp eq i8 %0 , -128
@@ -41,11 +35,8 @@ define i1 @compare_unsigned_max(i8 %0, i8 %1) {
41
35
; CHECK-LABEL: define i1 @compare_unsigned_max(
42
36
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
43
37
; CHECK-NEXT: [[START:.*:]]
44
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], -1
45
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -1
46
38
; CHECK-NEXT: [[TMP4:%.*]] = icmp ugt i8 [[TMP0]], [[TMP1]]
47
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
48
- ; CHECK-NEXT: ret i1 [[RESULT]]
39
+ ; CHECK-NEXT: ret i1 [[TMP4]]
49
40
;
50
41
start:
51
42
%2 = icmp eq i8 %0 , 255
@@ -59,11 +50,8 @@ define i1 @compare_signed_max(i8 %0, i8 %1) {
59
50
; CHECK-LABEL: define i1 @compare_signed_max(
60
51
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
61
52
; CHECK-NEXT: [[START:.*:]]
62
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], 127
63
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 127
64
53
; CHECK-NEXT: [[TMP4:%.*]] = icmp sgt i8 [[TMP0]], [[TMP1]]
65
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
66
- ; CHECK-NEXT: ret i1 [[RESULT]]
54
+ ; CHECK-NEXT: ret i1 [[TMP4]]
67
55
;
68
56
start:
69
57
%2 = icmp eq i8 %0 , 127
@@ -77,11 +65,8 @@ define i1 @relational_cmp_unsigned_min(i8 %0, i8 %1) {
77
65
; CHECK-LABEL: define i1 @relational_cmp_unsigned_min(
78
66
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
79
67
; CHECK-NEXT: [[START:.*:]]
80
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], 0
81
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 0
82
68
; CHECK-NEXT: [[TMP4:%.*]] = icmp ult i8 [[TMP0]], [[TMP1]]
83
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
84
- ; CHECK-NEXT: ret i1 [[RESULT]]
69
+ ; CHECK-NEXT: ret i1 [[TMP4]]
85
70
;
86
71
start:
87
72
%2 = icmp ule i8 %0 , 0
@@ -95,11 +80,8 @@ define i1 @relational_cmp_signed_min(i8 %0, i8 %1) {
95
80
; CHECK-LABEL: define i1 @relational_cmp_signed_min(
96
81
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
97
82
; CHECK-NEXT: [[START:.*:]]
98
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], -128
99
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -128
100
83
; CHECK-NEXT: [[TMP4:%.*]] = icmp slt i8 [[TMP0]], [[TMP1]]
101
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
102
- ; CHECK-NEXT: ret i1 [[RESULT]]
84
+ ; CHECK-NEXT: ret i1 [[TMP4]]
103
85
;
104
86
start:
105
87
%2 = icmp sle i8 %0 , -128
@@ -113,11 +95,8 @@ define i1 @relational_cmp_unsigned_max(i8 %0, i8 %1) {
113
95
; CHECK-LABEL: define i1 @relational_cmp_unsigned_max(
114
96
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
115
97
; CHECK-NEXT: [[START:.*:]]
116
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], -1
117
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -1
118
98
; CHECK-NEXT: [[TMP4:%.*]] = icmp ugt i8 [[TMP0]], [[TMP1]]
119
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
120
- ; CHECK-NEXT: ret i1 [[RESULT]]
99
+ ; CHECK-NEXT: ret i1 [[TMP4]]
121
100
;
122
101
start:
123
102
%2 = icmp uge i8 %0 , 255
@@ -131,11 +110,8 @@ define i1 @relational_cmp_signed_max(i8 %0, i8 %1) {
131
110
; CHECK-LABEL: define i1 @relational_cmp_signed_max(
132
111
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
133
112
; CHECK-NEXT: [[START:.*:]]
134
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], 127
135
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 127
136
113
; CHECK-NEXT: [[TMP4:%.*]] = icmp sgt i8 [[TMP0]], [[TMP1]]
137
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
138
- ; CHECK-NEXT: ret i1 [[RESULT]]
114
+ ; CHECK-NEXT: ret i1 [[TMP4]]
139
115
;
140
116
start:
141
117
%2 = icmp sge i8 %0 , 127
@@ -151,12 +127,9 @@ define i1 @compare_signed_max_multiuse(i8 %0, i8 %1) {
151
127
; CHECK-LABEL: define i1 @compare_signed_max_multiuse(
152
128
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
153
129
; CHECK-NEXT: [[START:.*:]]
154
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], 127
155
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 127
156
130
; CHECK-NEXT: [[TMP4:%.*]] = icmp sgt i8 [[TMP0]], [[TMP1]]
157
131
; CHECK-NEXT: call void @use(i1 [[TMP4]])
158
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
159
- ; CHECK-NEXT: ret i1 [[RESULT]]
132
+ ; CHECK-NEXT: ret i1 [[TMP4]]
160
133
;
161
134
start:
162
135
%2 = icmp eq i8 %0 , 127
@@ -171,11 +144,8 @@ define i1 @compare_signed_min_samesign(i8 %0, i8 %1) {
171
144
; CHECK-LABEL: define i1 @compare_signed_min_samesign(
172
145
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
173
146
; CHECK-NEXT: [[START:.*:]]
174
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], -128
175
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -128
176
147
; CHECK-NEXT: [[TMP4:%.*]] = icmp samesign slt i8 [[TMP0]], [[TMP1]]
177
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
178
- ; CHECK-NEXT: ret i1 [[RESULT]]
148
+ ; CHECK-NEXT: ret i1 [[TMP4]]
179
149
;
180
150
start:
181
151
%2 = icmp eq i8 %0 , -128
@@ -189,11 +159,8 @@ define i1 @compare_flipped(i8 %0, i8 %1) {
189
159
; CHECK-LABEL: define i1 @compare_flipped(
190
160
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
191
161
; CHECK-NEXT: [[START:.*:]]
192
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], 0
193
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 0
194
162
; CHECK-NEXT: [[TMP4:%.*]] = icmp ugt i8 [[TMP1]], [[TMP0]]
195
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
196
- ; CHECK-NEXT: ret i1 [[RESULT]]
163
+ ; CHECK-NEXT: ret i1 [[TMP4]]
197
164
;
198
165
start:
199
166
%2 = icmp eq i8 %0 , 0
@@ -207,11 +174,8 @@ define i1 @compare_swapped(i8 %0, i8 %1) {
207
174
; CHECK-LABEL: define i1 @compare_swapped(
208
175
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
209
176
; CHECK-NEXT: [[START:.*:]]
210
- ; CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq i8 [[TMP0]], 0
211
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i8 [[TMP1]], 0
212
177
; CHECK-NEXT: [[RESULT:%.*]] = icmp ult i8 [[TMP0]], [[TMP1]]
213
- ; CHECK-NEXT: [[RESULT1:%.*]] = select i1 [[DOTNOT]], i1 [[TMP2]], i1 [[RESULT]]
214
- ; CHECK-NEXT: ret i1 [[RESULT1]]
178
+ ; CHECK-NEXT: ret i1 [[RESULT]]
215
179
;
216
180
start:
217
181
%2 = icmp ne i8 %0 , 0
@@ -225,11 +189,8 @@ define i1 @compare_swapped_flipped_unsigned_max(i8 %0, i8 %1) {
225
189
; CHECK-LABEL: define i1 @compare_swapped_flipped_unsigned_max(
226
190
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
227
191
; CHECK-NEXT: [[START:.*:]]
228
- ; CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq i8 [[TMP0]], -1
229
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -1
230
192
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i8 [[TMP1]], [[TMP0]]
231
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[DOTNOT]], i1 [[TMP3]], i1 [[TMP2]]
232
- ; CHECK-NEXT: ret i1 [[RESULT]]
193
+ ; CHECK-NEXT: ret i1 [[TMP2]]
233
194
;
234
195
start:
235
196
%2 = icmp ne i8 %0 , 255
@@ -243,11 +204,8 @@ define i1 @compare_unsigned_min_illegal_type(i9 %0, i9 %1) {
243
204
; CHECK-LABEL: define i1 @compare_unsigned_min_illegal_type(
244
205
; CHECK-SAME: i9 [[TMP0:%.*]], i9 [[TMP1:%.*]]) {
245
206
; CHECK-NEXT: [[START:.*:]]
246
- ; CHECK-NEXT: [[TMP4:%.*]] = icmp eq i9 [[TMP0]], 0
247
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i9 [[TMP1]], 0
248
207
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i9 [[TMP0]], [[TMP1]]
249
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP4]], i1 [[TMP3]], i1 [[TMP2]]
250
- ; CHECK-NEXT: ret i1 [[RESULT]]
208
+ ; CHECK-NEXT: ret i1 [[TMP2]]
251
209
;
252
210
start:
253
211
%2 = icmp eq i9 %0 , 0
@@ -260,11 +218,8 @@ start:
260
218
define <2 x i1 > @compare_vector (<2 x i8 > %x , <2 x i8 > %y ) {
261
219
; CHECK-LABEL: define <2 x i1> @compare_vector(
262
220
; CHECK-SAME: <2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]]) {
263
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq <2 x i8> [[X]], zeroinitializer
264
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne <2 x i8> [[Y]], zeroinitializer
265
221
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult <2 x i8> [[X]], [[Y]]
266
- ; CHECK-NEXT: [[RESULT:%.*]] = select <2 x i1> [[TMP3]], <2 x i1> [[TMP2]], <2 x i1> [[TMP1]]
267
- ; CHECK-NEXT: ret <2 x i1> [[RESULT]]
222
+ ; CHECK-NEXT: ret <2 x i1> [[TMP1]]
268
223
;
269
224
%2 = icmp eq <2 x i8 > %x , <i8 0 , i8 0 >
270
225
%3 = icmp ne <2 x i8 > %y , <i8 0 , i8 0 >
0 commit comments