Skip to content

Commit 7ba99fd

Browse files
committed
[InstCombine][NFC] Precommit tests for https://reviews.llvm.org/D149918
1 parent a67ae8c commit 7ba99fd

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

llvm/test/Transforms/InstCombine/icmp-shr-lt-gt.ll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,19 @@ define i1 @ashrsgt_01_00(i4 %x) {
897897
ret i1 %c
898898
}
899899

900+
define i1 @ashrsgt_01_00_multiuse(i4 %x, ptr %p) {
901+
; CHECK-LABEL: @ashrsgt_01_00_multiuse(
902+
; CHECK-NEXT: [[S:%.*]] = ashr i4 [[X:%.*]], 1
903+
; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X]], 1
904+
; CHECK-NEXT: store i4 [[S]], ptr [[P:%.*]], align 1
905+
; CHECK-NEXT: ret i1 [[C]]
906+
;
907+
%s = ashr i4 %x, 1
908+
%c = icmp sgt i4 %s, 0
909+
store i4 %s, ptr %p
910+
ret i1 %c
911+
}
912+
900913
define i1 @ashrsgt_01_01(i4 %x) {
901914
; CHECK-LABEL: @ashrsgt_01_01(
902915
; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 3

llvm/test/Transforms/InstCombine/icmp-shr.ll

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,19 @@ define i1 @ashr_ugt_0(i4 %x) {
576576
ret i1 %r
577577
}
578578

579+
define i1 @ashr_ugt_0_multiuse(i4 %x, ptr %p) {
580+
; CHECK-LABEL: @ashr_ugt_0_multiuse(
581+
; CHECK-NEXT: [[S:%.*]] = ashr i4 [[X:%.*]], 1
582+
; CHECK-NEXT: [[R:%.*]] = icmp ugt i4 [[X]], 1
583+
; CHECK-NEXT: store i4 [[S]], ptr [[P:%.*]], align 1
584+
; CHECK-NEXT: ret i1 [[R]]
585+
;
586+
%s = ashr i4 %x, 1
587+
%r = icmp ugt i4 %s, 0 ; 0b0000
588+
store i4 %s, ptr %p
589+
ret i1 %r
590+
}
591+
579592
define i1 @ashr_ugt_1(i4 %x) {
580593
; CHECK-LABEL: @ashr_ugt_1(
581594
; CHECK-NEXT: [[R:%.*]] = icmp ugt i4 [[X:%.*]], 3
@@ -764,6 +777,19 @@ define i1 @ashr_ult_2(i4 %x) {
764777
ret i1 %r
765778
}
766779

780+
define i1 @ashr_ult_2_multiuse(i4 %x, ptr %p) {
781+
; CHECK-LABEL: @ashr_ult_2_multiuse(
782+
; CHECK-NEXT: [[S:%.*]] = ashr i4 [[X:%.*]], 1
783+
; CHECK-NEXT: [[R:%.*]] = icmp ult i4 [[X]], 4
784+
; CHECK-NEXT: store i4 [[S]], ptr [[P:%.*]], align 1
785+
; CHECK-NEXT: ret i1 [[R]]
786+
;
787+
%s = ashr i4 %x, 1
788+
%r = icmp ult i4 %s, 2 ; 0b0010
789+
store i4 %s, ptr %p
790+
ret i1 %r
791+
}
792+
767793
; negative test
768794

769795
define i1 @ashr_ult_3(i4 %x) {
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt -O1 -S < %s | FileCheck %s
3+
4+
define i32 @testa(i32 %mul) {
5+
; CHECK-LABEL: define i32 @testa(
6+
; CHECK-SAME: i32 [[MUL:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
7+
; CHECK-NEXT: [[SHR:%.*]] = ashr i32 [[MUL]], 15
8+
; CHECK-NEXT: [[CMP4_I:%.*]] = icmp slt i32 [[MUL]], 1073741824
9+
; CHECK-NEXT: [[SPEC_SELECT_I:%.*]] = select i1 [[CMP4_I]], i32 [[SHR]], i32 32767
10+
; CHECK-NEXT: ret i32 [[SPEC_SELECT_I]]
11+
;
12+
%shr = ashr i32 %mul, 15
13+
%cmp4.i = icmp sgt i32 %shr, 32767
14+
%switch.i = icmp ult i1 %cmp4.i, true
15+
%spec.select.i = select i1 %switch.i, i32 %shr, i32 32767
16+
ret i32 %spec.select.i
17+
}
18+
19+
define i32 @testb(i32 %mul) {
20+
; CHECK-LABEL: define i32 @testb(
21+
; CHECK-SAME: i32 [[MUL:%.*]]) local_unnamed_addr #[[ATTR0]] {
22+
; CHECK-NEXT: [[SHR102:%.*]] = ashr i32 [[MUL]], 7
23+
; CHECK-NEXT: [[CMP4_I:%.*]] = icmp sgt i32 [[MUL]], 16383
24+
; CHECK-NEXT: [[RETVAL_0_I:%.*]] = select i1 [[CMP4_I]], i32 127, i32 -128
25+
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[MUL]], 16384
26+
; CHECK-NEXT: [[CLEANUP_DEST_SLOT_0_I:%.*]] = icmp ult i32 [[TMP1]], 32768
27+
; CHECK-NEXT: [[SPEC_SELECT_I:%.*]] = select i1 [[CLEANUP_DEST_SLOT_0_I]], i32 [[SHR102]], i32 [[RETVAL_0_I]]
28+
; CHECK-NEXT: ret i32 [[SPEC_SELECT_I]]
29+
;
30+
%shr102 = ashr i32 %mul, 7
31+
%cmp4.i = icmp sgt i32 %shr102, 127
32+
%cmp6.i = icmp slt i32 %shr102, -128
33+
%retval.0.i = select i1 %cmp4.i, i32 127, i32 -128
34+
%cleanup.dest.slot.0.i = select i1 %cmp4.i, i1 true, i1 %cmp6.i
35+
%switch.i = icmp ult i1 %cleanup.dest.slot.0.i, true
36+
%spec.select.i = select i1 %switch.i, i32 %shr102, i32 %retval.0.i
37+
ret i32 %spec.select.i
38+
}

0 commit comments

Comments
 (0)