@@ -177,10 +177,7 @@ define <2 x i8> @sel_shuf_narrowing_commute2(<4 x i8> %x, <4 x i8> %y, <2 x i8>
177
177
178
178
define i8 @strong_order_cmp_slt_eq (i32 %a , i32 %b ) {
179
179
; CHECK-LABEL: @strong_order_cmp_slt_eq(
180
- ; CHECK-NEXT: [[CMP_LT:%.*]] = icmp slt i32 [[A:%.*]], [[B:%.*]]
181
- ; CHECK-NEXT: [[SEL_LT:%.*]] = select i1 [[CMP_LT]], i8 -1, i8 1
182
- ; CHECK-NEXT: [[CMP_EQ:%.*]] = icmp eq i32 [[A]], [[B]]
183
- ; CHECK-NEXT: [[SEL_EQ:%.*]] = select i1 [[CMP_EQ]], i8 0, i8 [[SEL_LT]]
180
+ ; CHECK-NEXT: [[SEL_EQ:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[A:%.*]], i32 [[B:%.*]])
184
181
; CHECK-NEXT: ret i8 [[SEL_EQ]]
185
182
;
186
183
%cmp.lt = icmp slt i32 %a , %b
@@ -192,10 +189,7 @@ define i8 @strong_order_cmp_slt_eq(i32 %a, i32 %b) {
192
189
193
190
define i8 @strong_order_cmp_ult_eq (i32 %a , i32 %b ) {
194
191
; CHECK-LABEL: @strong_order_cmp_ult_eq(
195
- ; CHECK-NEXT: [[CMP_LT:%.*]] = icmp ult i32 [[A:%.*]], [[B:%.*]]
196
- ; CHECK-NEXT: [[SEL_LT:%.*]] = select i1 [[CMP_LT]], i8 -1, i8 1
197
- ; CHECK-NEXT: [[CMP_EQ:%.*]] = icmp eq i32 [[A]], [[B]]
198
- ; CHECK-NEXT: [[SEL_EQ:%.*]] = select i1 [[CMP_EQ]], i8 0, i8 [[SEL_LT]]
192
+ ; CHECK-NEXT: [[SEL_EQ:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 [[A:%.*]], i32 [[B:%.*]])
199
193
; CHECK-NEXT: ret i8 [[SEL_EQ]]
200
194
;
201
195
%cmp.lt = icmp ult i32 %a , %b
@@ -252,10 +246,7 @@ define i8 @strong_order_cmp_slt_ult_wrong_pred(i32 %a, i32 %b) {
252
246
253
247
define i8 @strong_order_cmp_sgt_eq (i32 %a , i32 %b ) {
254
248
; CHECK-LABEL: @strong_order_cmp_sgt_eq(
255
- ; CHECK-NEXT: [[CMP_GT:%.*]] = icmp sgt i32 [[A:%.*]], [[B:%.*]]
256
- ; CHECK-NEXT: [[SEL_GT:%.*]] = select i1 [[CMP_GT]], i8 1, i8 -1
257
- ; CHECK-NEXT: [[CMP_EQ:%.*]] = icmp eq i32 [[A]], [[B]]
258
- ; CHECK-NEXT: [[SEL_EQ:%.*]] = select i1 [[CMP_EQ]], i8 0, i8 [[SEL_GT]]
249
+ ; CHECK-NEXT: [[SEL_EQ:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[A:%.*]], i32 [[B:%.*]])
259
250
; CHECK-NEXT: ret i8 [[SEL_EQ]]
260
251
;
261
252
%cmp.gt = icmp sgt i32 %a , %b
@@ -267,10 +258,7 @@ define i8 @strong_order_cmp_sgt_eq(i32 %a, i32 %b) {
267
258
268
259
define i8 @strong_order_cmp_ugt_eq (i32 %a , i32 %b ) {
269
260
; CHECK-LABEL: @strong_order_cmp_ugt_eq(
270
- ; CHECK-NEXT: [[CMP_GT:%.*]] = icmp ugt i32 [[A:%.*]], [[B:%.*]]
271
- ; CHECK-NEXT: [[SEL_GT:%.*]] = select i1 [[CMP_GT]], i8 1, i8 -1
272
- ; CHECK-NEXT: [[CMP_EQ:%.*]] = icmp eq i32 [[A]], [[B]]
273
- ; CHECK-NEXT: [[SEL_EQ:%.*]] = select i1 [[CMP_EQ]], i8 0, i8 [[SEL_GT]]
261
+ ; CHECK-NEXT: [[SEL_EQ:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 [[A:%.*]], i32 [[B:%.*]])
274
262
; CHECK-NEXT: ret i8 [[SEL_EQ]]
275
263
;
276
264
%cmp.gt = icmp ugt i32 %a , %b
@@ -395,9 +383,7 @@ define i8 @strong_order_cmp_slt_eq_slt_not_oneuse(i32 %a, i32 %b) {
395
383
; CHECK-LABEL: @strong_order_cmp_slt_eq_slt_not_oneuse(
396
384
; CHECK-NEXT: [[CMP_LT:%.*]] = icmp slt i32 [[A:%.*]], [[B:%.*]]
397
385
; CHECK-NEXT: call void @use1(i1 [[CMP_LT]])
398
- ; CHECK-NEXT: [[SEL_LT:%.*]] = select i1 [[CMP_LT]], i8 -1, i8 1
399
- ; CHECK-NEXT: [[CMP_EQ:%.*]] = icmp eq i32 [[A]], [[B]]
400
- ; CHECK-NEXT: [[SEL_EQ:%.*]] = select i1 [[CMP_EQ]], i8 0, i8 [[SEL_LT]]
386
+ ; CHECK-NEXT: [[SEL_EQ:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[A]], i32 [[B]])
401
387
; CHECK-NEXT: ret i8 [[SEL_EQ]]
402
388
;
403
389
%cmp.lt = icmp slt i32 %a , %b
@@ -410,11 +396,9 @@ define i8 @strong_order_cmp_slt_eq_slt_not_oneuse(i32 %a, i32 %b) {
410
396
411
397
define i8 @strong_order_cmp_sgt_eq_eq_not_oneuse (i32 %a , i32 %b ) {
412
398
; CHECK-LABEL: @strong_order_cmp_sgt_eq_eq_not_oneuse(
413
- ; CHECK-NEXT: [[CMP_GT:%.*]] = icmp sgt i32 [[A:%.*]], [[B:%.*]]
414
- ; CHECK-NEXT: [[SEL_GT:%.*]] = select i1 [[CMP_GT]], i8 1, i8 -1
415
- ; CHECK-NEXT: [[CMP_EQ:%.*]] = icmp eq i32 [[A]], [[B]]
399
+ ; CHECK-NEXT: [[CMP_EQ:%.*]] = icmp eq i32 [[A:%.*]], [[B:%.*]]
416
400
; CHECK-NEXT: call void @use1(i1 [[CMP_EQ]])
417
- ; CHECK-NEXT: [[SEL_EQ:%.*]] = select i1 [[CMP_EQ ]], i8 0, i8 [[SEL_GT]]
401
+ ; CHECK-NEXT: [[SEL_EQ:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[A ]], i32 [[B]])
418
402
; CHECK-NEXT: ret i8 [[SEL_EQ]]
419
403
;
420
404
%cmp.gt = icmp sgt i32 %a , %b
0 commit comments