Skip to content

Commit 5880526

Browse files
committed
[InstSimplify] Add test for simplifying ({u,s}rem (mul {nuw,nsw} X, C1), C0); NFC
1 parent 2632680 commit 5880526

File tree

1 file changed

+56
-1
lines changed
  • llvm/test/Transforms/InstSimplify

1 file changed

+56
-1
lines changed

llvm/test/Transforms/InstSimplify/rem.ll

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ define i32 @rem4() {
265265
; CHECK-NEXT: [[CALL:%.*]] = call i32 @external(), !range [[RNG0:![0-9]+]]
266266
; CHECK-NEXT: ret i32 [[CALL]]
267267
;
268-
%call = call i32 @external(), !range !0
268+
%call = call i32 @external() , !range !0
269269
%urem = urem i32 %call, 3
270270
ret i32 %urem
271271
}
@@ -488,3 +488,58 @@ define i8 @urem_mul_sdiv(i8 %x, i8 %y) {
488488
%mod = urem i8 %mul, %y
489489
ret i8 %mod
490490
}
491+
492+
define <2 x i8> @simplfy_srem_of_mul(<2 x i8> %x) {
493+
; CHECK-LABEL: @simplfy_srem_of_mul(
494+
; CHECK-NEXT: [[MUL:%.*]] = mul nsw <2 x i8> [[X:%.*]], <i8 20, i8 10>
495+
; CHECK-NEXT: [[R:%.*]] = srem <2 x i8> [[MUL]], <i8 5, i8 5>
496+
; CHECK-NEXT: ret <2 x i8> [[R]]
497+
;
498+
%mul = mul nsw <2 x i8> %x, <i8 20, i8 10>
499+
%r = srem <2 x i8> %mul, <i8 5, i8 5>
500+
ret <2 x i8> %r
501+
}
502+
503+
define <2 x i8> @simplfy_srem_of_mul_fail_bad_mod(<2 x i8> %x) {
504+
; CHECK-LABEL: @simplfy_srem_of_mul_fail_bad_mod(
505+
; CHECK-NEXT: [[MUL:%.*]] = mul nsw <2 x i8> [[X:%.*]], <i8 20, i8 11>
506+
; CHECK-NEXT: [[R:%.*]] = srem <2 x i8> [[MUL]], <i8 5, i8 5>
507+
; CHECK-NEXT: ret <2 x i8> [[R]]
508+
;
509+
%mul = mul nsw <2 x i8> %x, <i8 20, i8 11>
510+
%r = srem <2 x i8> %mul, <i8 5, i8 5>
511+
ret <2 x i8> %r
512+
}
513+
514+
define i8 @simplfy_urem_of_mul(i8 %x) {
515+
; CHECK-LABEL: @simplfy_urem_of_mul(
516+
; CHECK-NEXT: [[MUL:%.*]] = mul nuw i8 [[X:%.*]], 30
517+
; CHECK-NEXT: [[R:%.*]] = urem i8 [[MUL]], 10
518+
; CHECK-NEXT: ret i8 [[R]]
519+
;
520+
%mul = mul nuw i8 %x, 30
521+
%r = urem i8 %mul, 10
522+
ret i8 %r
523+
}
524+
525+
define i8 @simplfy_urem_of_mul_fail_bad_flag(i8 %x) {
526+
; CHECK-LABEL: @simplfy_urem_of_mul_fail_bad_flag(
527+
; CHECK-NEXT: [[MUL:%.*]] = mul nsw i8 [[X:%.*]], 30
528+
; CHECK-NEXT: [[R:%.*]] = urem i8 [[MUL]], 10
529+
; CHECK-NEXT: ret i8 [[R]]
530+
;
531+
%mul = mul nsw i8 %x, 30
532+
%r = urem i8 %mul, 10
533+
ret i8 %r
534+
}
535+
536+
define i8 @simplfy_urem_of_mul_fail_bad_mod(i8 %x) {
537+
; CHECK-LABEL: @simplfy_urem_of_mul_fail_bad_mod(
538+
; CHECK-NEXT: [[MUL:%.*]] = mul nuw i8 [[X:%.*]], 31
539+
; CHECK-NEXT: [[R:%.*]] = urem i8 [[MUL]], 10
540+
; CHECK-NEXT: ret i8 [[R]]
541+
;
542+
%mul = mul nuw i8 %x, 31
543+
%r = urem i8 %mul, 10
544+
ret i8 %r
545+
}

0 commit comments

Comments
 (0)