Skip to content

Commit 8e5536a

Browse files
committed
Pre-commit test (NFC)
1 parent 3a6ef8b commit 8e5536a

File tree

1 file changed

+101
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+101
-0
lines changed

llvm/test/Transforms/InstCombine/scmp.ll

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,107 @@ define <3 x i2> @scmp_unary_shuffle_ops(<3 x i8> %x, <3 x i8> %y) {
436436
ret <3 x i2> %r
437437
}
438438

439+
define i32 @scmp_ashr(i32 %a) {
440+
; CHECK-LABEL: define i32 @scmp_ashr(
441+
; CHECK-SAME: i32 [[A:%.*]]) {
442+
; CHECK-NEXT: [[A_LOBIT:%.*]] = ashr i32 [[A]], 31
443+
; CHECK-NEXT: [[CMP_INV:%.*]] = icmp slt i32 [[A]], 1
444+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP_INV]], i32 [[A_LOBIT]], i32 1
445+
; CHECK-NEXT: ret i32 [[RETVAL_0]]
446+
;
447+
%a.lobit = ashr i32 %a, 31
448+
%cmp.inv = icmp slt i32 %a, 1
449+
%retval.0 = select i1 %cmp.inv, i32 %a.lobit, i32 1
450+
ret i32 %retval.0
451+
}
452+
453+
define i32 @scmp_sgt_slt(i32 %a) {
454+
; CHECK-LABEL: define i32 @scmp_sgt_slt(
455+
; CHECK-SAME: i32 [[A:%.*]]) {
456+
; CHECK-NEXT: [[A_LOBIT:%.*]] = ashr i32 [[A]], 31
457+
; CHECK-NEXT: [[CMP_INV:%.*]] = icmp slt i32 [[A]], 1
458+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP_INV]], i32 [[A_LOBIT]], i32 1
459+
; CHECK-NEXT: ret i32 [[RETVAL_0]]
460+
;
461+
%cmp = icmp sgt i32 %a, 0
462+
%cmp1 = icmp slt i32 %a, 0
463+
%. = select i1 %cmp1, i32 -1, i32 0
464+
%retval.0 = select i1 %cmp, i32 1, i32 %.
465+
ret i32 %retval.0
466+
}
467+
468+
define i32 @scmp_zero_slt(i32 %a) {
469+
; CHECK-LABEL: define i32 @scmp_zero_slt(
470+
; CHECK-SAME: i32 [[A:%.*]]) {
471+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
472+
; CHECK-NEXT: [[CMP1_INV:%.*]] = icmp slt i32 [[A]], 1
473+
; CHECK-NEXT: [[DOT:%.*]] = select i1 [[CMP1_INV]], i32 -1, i32 1
474+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i32 0, i32 [[DOT]]
475+
; CHECK-NEXT: ret i32 [[RETVAL_0]]
476+
;
477+
%cmp = icmp eq i32 %a, 0
478+
%cmp1.inv = icmp slt i32 %a, 1
479+
%. = select i1 %cmp1.inv, i32 -1, i32 1
480+
%retval.0 = select i1 %cmp, i32 0, i32 %.
481+
ret i32 %retval.0
482+
}
483+
484+
define i32 @scmp_zero_sgt(i32 %a) {
485+
; CHECK-LABEL: define i32 @scmp_zero_sgt(
486+
; CHECK-SAME: i32 [[A:%.*]]) {
487+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A]], 0
488+
; CHECK-NEXT: [[CMP1_INV:%.*]] = icmp sgt i32 [[A]], -1
489+
; CHECK-NEXT: [[DOT:%.*]] = select i1 [[CMP1_INV]], i32 1, i32 -1
490+
; CHECK-NEXT: [[RETVAL_0:%.*]] = select i1 [[CMP]], i32 0, i32 [[DOT]]
491+
; CHECK-NEXT: ret i32 [[RETVAL_0]]
492+
;
493+
%cmp = icmp eq i32 %a, 0
494+
%cmp1.inv = icmp sgt i32 %a, -1
495+
%. = select i1 %cmp1.inv, i32 1, i32 -1
496+
%retval.0 = select i1 %cmp, i32 0, i32 %.
497+
ret i32 %retval.0
498+
}
499+
500+
501+
define i32 @scmp_sgt_slt_ab(i32 %a, i32 %b) {
502+
; CHECK-LABEL: define i32 @scmp_sgt_slt_ab(
503+
; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
504+
; CHECK-NEXT: [[RETVAL_0:%.*]] = call i32 @llvm.scmp.i32.i32(i32 [[A]], i32 [[B]])
505+
; CHECK-NEXT: ret i32 [[RETVAL_0]]
506+
;
507+
%cmp = icmp sgt i32 %a, %b
508+
%cmp1 = icmp slt i32 %a, %b
509+
%. = select i1 %cmp1, i32 -1, i32 0
510+
%retval.0 = select i1 %cmp, i32 1, i32 %.
511+
ret i32 %retval.0
512+
}
513+
514+
define i32 @scmp_zero_slt_ab(i32 %a, i32 %b) {
515+
; CHECK-LABEL: define i32 @scmp_zero_slt_ab(
516+
; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
517+
; CHECK-NEXT: [[RETVAL_0:%.*]] = call i32 @llvm.scmp.i32.i32(i32 [[A]], i32 [[B]])
518+
; CHECK-NEXT: ret i32 [[RETVAL_0]]
519+
;
520+
%cmp = icmp eq i32 %a, %b
521+
%cmp1.inv = icmp slt i32 %a, %b
522+
%. = select i1 %cmp1.inv, i32 -1, i32 1
523+
%retval.0 = select i1 %cmp, i32 0, i32 %.
524+
ret i32 %retval.0
525+
}
526+
527+
define i32 @scmp_zero_sgt_ab(i32 %a, i32 %b) {
528+
; CHECK-LABEL: define i32 @scmp_zero_sgt_ab(
529+
; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
530+
; CHECK-NEXT: [[RETVAL_0:%.*]] = call i32 @llvm.scmp.i32.i32(i32 [[A]], i32 [[B]])
531+
; CHECK-NEXT: ret i32 [[RETVAL_0]]
532+
;
533+
%cmp = icmp eq i32 %a, %b
534+
%cmp1.inv = icmp sgt i32 %a, %b
535+
%. = select i1 %cmp1.inv, i32 1, i32 -1
536+
%retval.0 = select i1 %cmp, i32 0, i32 %.
537+
ret i32 %retval.0
538+
}
539+
439540
; Negative test: true value of outer select is not zero
440541
define i8 @scmp_from_select_eq_and_gt_neg1(i32 %x, i32 %y) {
441542
; CHECK-LABEL: define i8 @scmp_from_select_eq_and_gt_neg1(

0 commit comments

Comments
 (0)