@@ -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,11 +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 ]]
132
+ ; CHECK-NEXT: [[RESULT:%.*]] = icmp sgt i8 [[TMP0 ]], [[TMP1 ]]
159
133
; CHECK-NEXT: ret i1 [[RESULT]]
160
134
;
161
135
start:
@@ -171,10 +145,7 @@ define i1 @compare_signed_min_samesign(i8 %0, i8 %1) {
171
145
; CHECK-LABEL: define i1 @compare_signed_min_samesign(
172
146
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
173
147
; CHECK-NEXT: [[START:.*:]]
174
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], -128
175
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -128
176
- ; CHECK-NEXT: [[TMP4:%.*]] = icmp samesign slt i8 [[TMP0]], [[TMP1]]
177
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
148
+ ; CHECK-NEXT: [[RESULT:%.*]] = icmp slt i8 [[TMP0]], [[TMP1]]
178
149
; CHECK-NEXT: ret i1 [[RESULT]]
179
150
;
180
151
start:
@@ -189,10 +160,7 @@ define i1 @compare_flipped(i8 %0, i8 %1) {
189
160
; CHECK-LABEL: define i1 @compare_flipped(
190
161
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
191
162
; CHECK-NEXT: [[START:.*:]]
192
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP0]], 0
193
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], 0
194
- ; CHECK-NEXT: [[TMP4:%.*]] = icmp ugt i8 [[TMP1]], [[TMP0]]
195
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[TMP2]], i1 [[TMP3]], i1 [[TMP4]]
163
+ ; CHECK-NEXT: [[RESULT:%.*]] = icmp ult i8 [[TMP0]], [[TMP1]]
196
164
; CHECK-NEXT: ret i1 [[RESULT]]
197
165
;
198
166
start:
@@ -207,11 +175,8 @@ define i1 @compare_swapped(i8 %0, i8 %1) {
207
175
; CHECK-LABEL: define i1 @compare_swapped(
208
176
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
209
177
; CHECK-NEXT: [[START:.*:]]
210
- ; CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq i8 [[TMP0]], 0
211
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i8 [[TMP1]], 0
212
178
; 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]]
179
+ ; CHECK-NEXT: ret i1 [[RESULT]]
215
180
;
216
181
start:
217
182
%2 = icmp ne i8 %0 , 0
@@ -225,10 +190,7 @@ define i1 @compare_swapped_flipped_unsigned_max(i8 %0, i8 %1) {
225
190
; CHECK-LABEL: define i1 @compare_swapped_flipped_unsigned_max(
226
191
; CHECK-SAME: i8 [[TMP0:%.*]], i8 [[TMP1:%.*]]) {
227
192
; CHECK-NEXT: [[START:.*:]]
228
- ; CHECK-NEXT: [[DOTNOT:%.*]] = icmp eq i8 [[TMP0]], -1
229
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i8 [[TMP1]], -1
230
- ; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i8 [[TMP1]], [[TMP0]]
231
- ; CHECK-NEXT: [[RESULT:%.*]] = select i1 [[DOTNOT]], i1 [[TMP3]], i1 [[TMP2]]
193
+ ; CHECK-NEXT: [[RESULT:%.*]] = icmp ugt i8 [[TMP0]], [[TMP1]]
232
194
; CHECK-NEXT: ret i1 [[RESULT]]
233
195
;
234
196
start:
@@ -243,11 +205,8 @@ define i1 @compare_unsigned_min_illegal_type(i9 %0, i9 %1) {
243
205
; CHECK-LABEL: define i1 @compare_unsigned_min_illegal_type(
244
206
; CHECK-SAME: i9 [[TMP0:%.*]], i9 [[TMP1:%.*]]) {
245
207
; CHECK-NEXT: [[START:.*:]]
246
- ; CHECK-NEXT: [[TMP4:%.*]] = icmp eq i9 [[TMP0]], 0
247
- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i9 [[TMP1]], 0
248
208
; 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]]
209
+ ; CHECK-NEXT: ret i1 [[TMP2]]
251
210
;
252
211
start:
253
212
%2 = icmp eq i9 %0 , 0
@@ -260,11 +219,8 @@ start:
260
219
define <2 x i1 > @compare_vector (<2 x i8 > %x , <2 x i8 > %y ) {
261
220
; CHECK-LABEL: define <2 x i1> @compare_vector(
262
221
; 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
222
; 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]]
223
+ ; CHECK-NEXT: ret <2 x i1> [[TMP1]]
268
224
;
269
225
%2 = icmp eq <2 x i8 > %x , <i8 0 , i8 0 >
270
226
%3 = icmp ne <2 x i8 > %y , <i8 0 , i8 0 >
0 commit comments