@@ -119,7 +119,9 @@ define <2 x i1> @sext_sext_uge_op0_wide(<2 x i16> %x, <2 x i8> %y) {
119
119
120
120
define i1 @zext_sext_sgt (i8 %x , i8 %y ) {
121
121
; CHECK-LABEL: @zext_sext_sgt(
122
- ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], [[Y:%.*]]
122
+ ; CHECK-NEXT: [[A:%.*]] = zext i8 [[X:%.*]] to i32
123
+ ; CHECK-NEXT: [[B:%.*]] = sext i8 [[Y:%.*]] to i32
124
+ ; CHECK-NEXT: [[C:%.*]] = icmp sgt i32 [[A]], [[B]]
123
125
; CHECK-NEXT: ret i1 [[C]]
124
126
;
125
127
%a = zext i8 %x to i32
@@ -130,7 +132,9 @@ define i1 @zext_sext_sgt(i8 %x, i8 %y) {
130
132
131
133
define i1 @zext_sext_ugt (i8 %x , i8 %y ) {
132
134
; CHECK-LABEL: @zext_sext_ugt(
133
- ; CHECK-NEXT: [[C:%.*]] = icmp ugt i8 [[X:%.*]], [[Y:%.*]]
135
+ ; CHECK-NEXT: [[A:%.*]] = zext i8 [[X:%.*]] to i32
136
+ ; CHECK-NEXT: [[B:%.*]] = sext i8 [[Y:%.*]] to i32
137
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A]], [[B]]
134
138
; CHECK-NEXT: ret i1 [[C]]
135
139
;
136
140
%a = zext i8 %x to i32
@@ -141,7 +145,9 @@ define i1 @zext_sext_ugt(i8 %x, i8 %y) {
141
145
142
146
define i1 @zext_sext_eq (i8 %x , i8 %y ) {
143
147
; CHECK-LABEL: @zext_sext_eq(
144
- ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[X:%.*]], [[Y:%.*]]
148
+ ; CHECK-NEXT: [[A:%.*]] = zext i8 [[X:%.*]] to i32
149
+ ; CHECK-NEXT: [[B:%.*]] = sext i8 [[Y:%.*]] to i32
150
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq i32 [[A]], [[B]]
145
151
; CHECK-NEXT: ret i1 [[C]]
146
152
;
147
153
%a = zext i8 %x to i32
@@ -152,8 +158,9 @@ define i1 @zext_sext_eq(i8 %x, i8 %y) {
152
158
153
159
define i1 @zext_sext_sle_op0_narrow (i8 %x , i16 %y ) {
154
160
; CHECK-LABEL: @zext_sext_sle_op0_narrow(
155
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[X:%.*]] to i16
156
- ; CHECK-NEXT: [[C:%.*]] = icmp sle i16 [[TMP1]], [[Y:%.*]]
161
+ ; CHECK-NEXT: [[A:%.*]] = zext i8 [[X:%.*]] to i32
162
+ ; CHECK-NEXT: [[B:%.*]] = sext i16 [[Y:%.*]] to i32
163
+ ; CHECK-NEXT: [[C:%.*]] = icmp sle i32 [[A]], [[B]]
157
164
; CHECK-NEXT: ret i1 [[C]]
158
165
;
159
166
%a = zext i8 %x to i32
@@ -164,8 +171,9 @@ define i1 @zext_sext_sle_op0_narrow(i8 %x, i16 %y) {
164
171
165
172
define i1 @zext_sext_ule_op0_wide (i9 %x , i8 %y ) {
166
173
; CHECK-LABEL: @zext_sext_ule_op0_wide(
167
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[Y:%.*]] to i9
168
- ; CHECK-NEXT: [[C:%.*]] = icmp uge i9 [[TMP1]], [[X:%.*]]
174
+ ; CHECK-NEXT: [[A:%.*]] = zext i9 [[X:%.*]] to i32
175
+ ; CHECK-NEXT: [[B:%.*]] = sext i8 [[Y:%.*]] to i32
176
+ ; CHECK-NEXT: [[C:%.*]] = icmp ule i32 [[A]], [[B]]
169
177
; CHECK-NEXT: ret i1 [[C]]
170
178
;
171
179
%a = zext i9 %x to i32
@@ -176,7 +184,9 @@ define i1 @zext_sext_ule_op0_wide(i9 %x, i8 %y) {
176
184
177
185
define i1 @sext_zext_slt (i8 %x , i8 %y ) {
178
186
; CHECK-LABEL: @sext_zext_slt(
179
- ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], [[Y:%.*]]
187
+ ; CHECK-NEXT: [[A:%.*]] = sext i8 [[X:%.*]] to i32
188
+ ; CHECK-NEXT: [[B:%.*]] = zext i8 [[Y:%.*]] to i32
189
+ ; CHECK-NEXT: [[C:%.*]] = icmp slt i32 [[A]], [[B]]
180
190
; CHECK-NEXT: ret i1 [[C]]
181
191
;
182
192
%a = sext i8 %x to i32
@@ -187,7 +197,9 @@ define i1 @sext_zext_slt(i8 %x, i8 %y) {
187
197
188
198
define i1 @sext_zext_ult (i8 %x , i8 %y ) {
189
199
; CHECK-LABEL: @sext_zext_ult(
190
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], [[Y:%.*]]
200
+ ; CHECK-NEXT: [[A:%.*]] = sext i8 [[X:%.*]] to i32
201
+ ; CHECK-NEXT: [[B:%.*]] = zext i8 [[Y:%.*]] to i32
202
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A]], [[B]]
191
203
; CHECK-NEXT: ret i1 [[C]]
192
204
;
193
205
%a = sext i8 %x to i32
@@ -198,7 +210,9 @@ define i1 @sext_zext_ult(i8 %x, i8 %y) {
198
210
199
211
define <2 x i1 > @sext_zext_ne (<2 x i8 > %x , <2 x i8 > %y ) {
200
212
; CHECK-LABEL: @sext_zext_ne(
201
- ; CHECK-NEXT: [[C:%.*]] = icmp ne <2 x i8> [[X:%.*]], [[Y:%.*]]
213
+ ; CHECK-NEXT: [[A:%.*]] = sext <2 x i8> [[X:%.*]] to <2 x i32>
214
+ ; CHECK-NEXT: [[B:%.*]] = zext <2 x i8> [[Y:%.*]] to <2 x i32>
215
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne <2 x i32> [[A]], [[B]]
202
216
; CHECK-NEXT: ret <2 x i1> [[C]]
203
217
;
204
218
%a = sext <2 x i8 > %x to <2 x i32 >
@@ -209,8 +223,9 @@ define <2 x i1> @sext_zext_ne(<2 x i8> %x, <2 x i8> %y) {
209
223
210
224
define i1 @sext_zext_sge_op0_narrow (i5 %x , i8 %y ) {
211
225
; CHECK-LABEL: @sext_zext_sge_op0_narrow(
212
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i5 [[X:%.*]] to i8
213
- ; CHECK-NEXT: [[C:%.*]] = icmp sge i8 [[TMP1]], [[Y:%.*]]
226
+ ; CHECK-NEXT: [[A:%.*]] = sext i5 [[X:%.*]] to i32
227
+ ; CHECK-NEXT: [[B:%.*]] = zext i8 [[Y:%.*]] to i32
228
+ ; CHECK-NEXT: [[C:%.*]] = icmp sge i32 [[A]], [[B]]
214
229
; CHECK-NEXT: ret i1 [[C]]
215
230
;
216
231
%a = sext i5 %x to i32
@@ -221,8 +236,9 @@ define i1 @sext_zext_sge_op0_narrow(i5 %x, i8 %y) {
221
236
222
237
define i1 @sext_zext_uge_op0_wide (i16 %x , i8 %y ) {
223
238
; CHECK-LABEL: @sext_zext_uge_op0_wide(
224
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[Y:%.*]] to i16
225
- ; CHECK-NEXT: [[C:%.*]] = icmp ule i16 [[TMP1]], [[X:%.*]]
239
+ ; CHECK-NEXT: [[A:%.*]] = sext i16 [[X:%.*]] to i32
240
+ ; CHECK-NEXT: [[B:%.*]] = zext i8 [[Y:%.*]] to i32
241
+ ; CHECK-NEXT: [[C:%.*]] = icmp uge i32 [[A]], [[B]]
226
242
; CHECK-NEXT: ret i1 [[C]]
227
243
;
228
244
%a = sext i16 %x to i32
@@ -380,8 +396,9 @@ define i1 @zext_eq_sext(i1 %a, i1 %b) {
380
396
381
397
define i1 @zext_eq_sext_fail_not_i1 (i1 %a , i8 %b ) {
382
398
; CHECK-LABEL: @zext_eq_sext_fail_not_i1(
383
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i1 [[A:%.*]] to i8
384
- ; CHECK-NEXT: [[TOBOOL4:%.*]] = icmp eq i8 [[TMP1]], [[B:%.*]]
399
+ ; CHECK-NEXT: [[CONV:%.*]] = zext i1 [[A:%.*]] to i32
400
+ ; CHECK-NEXT: [[CONV3_NEG:%.*]] = sext i8 [[B:%.*]] to i32
401
+ ; CHECK-NEXT: [[TOBOOL4:%.*]] = icmp eq i32 [[CONV]], [[CONV3_NEG]]
385
402
; CHECK-NEXT: ret i1 [[TOBOOL4]]
386
403
;
387
404
%conv = zext i1 %a to i32
0 commit comments