@@ -348,10 +348,7 @@ define i8 @scmp_from_select_gt_and_lt(i32 %x, i32 %y) {
348348define i8 @scmp_from_select_eq_and_gt (i32 %x , i32 %y ) {
349349; CHECK-LABEL: define i8 @scmp_from_select_eq_and_gt(
350350; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
351- ; CHECK-NEXT: [[EQ:%.*]] = icmp eq i32 [[X]], [[Y]]
352- ; CHECK-NEXT: [[GT:%.*]] = icmp sgt i32 [[X]], [[Y]]
353- ; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[GT]], i8 1, i8 -1
354- ; CHECK-NEXT: [[R:%.*]] = select i1 [[EQ]], i8 0, i8 [[SEL1]]
351+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[X]], i32 [[Y]])
355352; CHECK-NEXT: ret i8 [[R]]
356353;
357354 %eq = icmp eq i32 %x , %y
@@ -364,10 +361,7 @@ define i8 @scmp_from_select_eq_and_gt(i32 %x, i32 %y) {
364361define i8 @scmp_from_select_eq_and_gt_commuted1 (i32 %x , i32 %y ) {
365362; CHECK-LABEL: define i8 @scmp_from_select_eq_and_gt_commuted1(
366363; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
367- ; CHECK-NEXT: [[EQ:%.*]] = icmp eq i32 [[X]], [[Y]]
368- ; CHECK-NEXT: [[GT:%.*]] = icmp slt i32 [[X]], [[Y]]
369- ; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[GT]], i8 1, i8 -1
370- ; CHECK-NEXT: [[R:%.*]] = select i1 [[EQ]], i8 0, i8 [[SEL1]]
364+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[Y]], i32 [[X]])
371365; CHECK-NEXT: ret i8 [[R]]
372366;
373367 %eq = icmp eq i32 %x , %y
@@ -380,10 +374,7 @@ define i8 @scmp_from_select_eq_and_gt_commuted1(i32 %x, i32 %y) {
380374define i8 @scmp_from_select_eq_and_gt_commuted2 (i32 %x , i32 %y ) {
381375; CHECK-LABEL: define i8 @scmp_from_select_eq_and_gt_commuted2(
382376; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
383- ; CHECK-NEXT: [[EQ:%.*]] = icmp eq i32 [[X]], [[Y]]
384- ; CHECK-NEXT: [[GT:%.*]] = icmp sgt i32 [[X]], [[Y]]
385- ; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[GT]], i8 -1, i8 1
386- ; CHECK-NEXT: [[R:%.*]] = select i1 [[EQ]], i8 0, i8 [[SEL1]]
377+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[Y]], i32 [[X]])
387378; CHECK-NEXT: ret i8 [[R]]
388379;
389380 %eq = icmp eq i32 %x , %y
@@ -396,10 +387,7 @@ define i8 @scmp_from_select_eq_and_gt_commuted2(i32 %x, i32 %y) {
396387define i8 @scmp_from_select_eq_and_gt_commuted3 (i32 %x , i32 %y ) {
397388; CHECK-LABEL: define i8 @scmp_from_select_eq_and_gt_commuted3(
398389; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
399- ; CHECK-NEXT: [[EQ:%.*]] = icmp eq i32 [[X]], [[Y]]
400- ; CHECK-NEXT: [[GT:%.*]] = icmp slt i32 [[X]], [[Y]]
401- ; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[GT]], i8 -1, i8 1
402- ; CHECK-NEXT: [[R:%.*]] = select i1 [[EQ]], i8 0, i8 [[SEL1]]
390+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[X]], i32 [[Y]])
403391; CHECK-NEXT: ret i8 [[R]]
404392;
405393 %eq = icmp eq i32 %x , %y
0 commit comments