Skip to content

Commit a6d1c61

Browse files
xldenisarichardson
authored andcommitted
[InstSimplify] Add tests for icmp with urem divisor (NFC)
2 parents 36d9971 + b778b04 commit a6d1c61

File tree

1 file changed

+47
-3
lines changed

1 file changed

+47
-3
lines changed

llvm/test/Transforms/InstSimplify/compare.ll

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,50 @@ define i1 @urem7(i32 %X) {
723723
ret i1 %B
724724
}
725725

726+
define i1 @urem8(i8 %X, i8 %Y) {
727+
; CHECK-LABEL: @urem8(
728+
; CHECK-NEXT: [[A:%.*]] = urem i8 [[X:%.*]], [[Y:%.*]]
729+
; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[A]], [[X]]
730+
; CHECK-NEXT: ret i1 [[B]]
731+
;
732+
%A = urem i8 %X, %Y
733+
%B = icmp ule i8 %A, %X
734+
ret i1 %B
735+
}
736+
737+
define i1 @urem9(i8 %X, i8 %Y) {
738+
; CHECK-LABEL: @urem9(
739+
; CHECK-NEXT: [[A:%.*]] = urem i8 [[X:%.*]], [[Y:%.*]]
740+
; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[A]], [[X]]
741+
; CHECK-NEXT: ret i1 [[B]]
742+
;
743+
%A = urem i8 %X, %Y
744+
%B = icmp ugt i8 %A, %X
745+
ret i1 %B
746+
}
747+
748+
define i1 @urem10(i8 %X, i8 %Y) {
749+
; CHECK-LABEL: @urem10(
750+
; CHECK-NEXT: [[A:%.*]] = urem i8 [[X:%.*]], [[Y:%.*]]
751+
; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], [[A]]
752+
; CHECK-NEXT: ret i1 [[B]]
753+
;
754+
%A = urem i8 %X, %Y
755+
%B = icmp uge i8 %X, %A
756+
ret i1 %B
757+
}
758+
759+
define i1 @urem11(i8 %X, i8 %Y) {
760+
; CHECK-LABEL: @urem11(
761+
; CHECK-NEXT: [[A:%.*]] = urem i8 [[X:%.*]], [[Y:%.*]]
762+
; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], [[A]]
763+
; CHECK-NEXT: ret i1 [[B]]
764+
;
765+
%A = urem i8 %X, %Y
766+
%B = icmp ult i8 %X, %A
767+
ret i1 %B
768+
}
769+
726770
; PR9343 #15
727771
define i1 @srem2(i16 %X, i32 %Y) {
728772
; CHECK-LABEL: @srem2(
@@ -961,7 +1005,7 @@ define i1 @alloca_compare(i64 %idx) {
9611005

9621006
define i1 @alloca_compare_no_null_opt(i64 %idx) #0 {
9631007
; CHECK-LABEL: @alloca_compare_no_null_opt(
964-
; CHECK-NEXT: [[SV:%.*]] = alloca { i32, i32, [124 x i32] }
1008+
; CHECK-NEXT: [[SV:%.*]] = alloca { i32, i32, [124 x i32] }, align 8
9651009
; CHECK-NEXT: [[CMP:%.*]] = getelementptr inbounds { i32, i32, [124 x i32] }, { i32, i32, [124 x i32] }* [[SV]], i32 0, i32 2, i64 [[IDX:%.*]]
9661010
; CHECK-NEXT: [[X:%.*]] = icmp eq i32* [[CMP]], null
9671011
; CHECK-NEXT: ret i1 [[X]]
@@ -995,7 +1039,7 @@ unreachableblock:
9951039

9961040
define i1 @alloca_argument_compare(i64* %arg) {
9971041
; CHECK-LABEL: @alloca_argument_compare(
998-
; CHECK-NEXT: [[ALLOC:%.*]] = alloca i64
1042+
; CHECK-NEXT: [[ALLOC:%.*]] = alloca i64, align 8
9991043
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64* [[ARG:%.*]], [[ALLOC]]
10001044
; CHECK-NEXT: ret i1 [[CMP]]
10011045
;
@@ -1008,7 +1052,7 @@ define i1 @alloca_argument_compare(i64* %arg) {
10081052

10091053
define i1 @alloca_argument_compare_swapped(i64* %arg) {
10101054
; CHECK-LABEL: @alloca_argument_compare_swapped(
1011-
; CHECK-NEXT: [[ALLOC:%.*]] = alloca i64
1055+
; CHECK-NEXT: [[ALLOC:%.*]] = alloca i64, align 8
10121056
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64* [[ALLOC]], [[ARG:%.*]]
10131057
; CHECK-NEXT: ret i1 [[CMP]]
10141058
;

0 commit comments

Comments
 (0)