[llvm] [InstCombine] Drop NSW when converting `shl X, BW - 1` back into mul (PR #121633)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 4 12:43:50 PST 2025
================
@@ -372,6 +372,32 @@ define <2 x i8> @srem_XY_XZ_with_CY_gt_CZ_no_nuw_out(<2 x i8> %X) {
ret <2 x i8> %r
}
+define i8 @srem_XY_XZ_with_CY_gt_CZ_drop_nsw(i8 noundef %X) {
+; CHECK-LABEL: @srem_XY_XZ_with_CY_gt_CZ_drop_nsw(
+; CHECK-NEXT: [[BO0:%.*]] = mul nsw i8 [[X:%.*]], 127
+; CHECK-NEXT: [[BO1:%.*]] = shl nsw i8 [[X]], 7
+; CHECK-NEXT: [[R:%.*]] = srem i8 [[BO1]], [[BO0]]
+; CHECK-NEXT: ret i8 [[R]]
+;
+ %BO0 = mul nsw i8 %X, 127
+ %BO1 = shl nsw i8 %X, 7
+ %r = srem i8 %BO1, %BO0
+ ret i8 %r
+}
+
+define i8 @srem_XY_XZ_with_CY_gt_CZ_drop_nsw_commuted(i8 noundef %X) {
----------------
goldsteinn wrote:
So I think you can drop `Op1PreserveNSW`
https://github.com/llvm/llvm-project/pull/121633
More information about the llvm-commits
mailing list