@@ -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
727771define i1 @srem2 (i16 %X , i32 %Y ) {
728772; CHECK-LABEL: @srem2(
@@ -961,7 +1005,7 @@ define i1 @alloca_compare(i64 %idx) {
9611005
9621006define 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
9961040define 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
10091053define 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