[llvm] 23fa303 - [InstCombine] add test for udiv with shl divisor; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 12 08:53:19 PDT 2022


Author: Sanjay Patel
Date: 2022-10-12T11:53:02-04:00
New Revision: 23fa3031ffc42dbe309e44ff0b9f6d09bb77f724

URL: https://github.com/llvm/llvm-project/commit/23fa3031ffc42dbe309e44ff0b9f6d09bb77f724
DIFF: https://github.com/llvm/llvm-project/commit/23fa3031ffc42dbe309e44ff0b9f6d09bb77f724.diff

LOG: [InstCombine] add test for udiv with shl divisor; NFC

This would solve an example from issue #58137 more
generally, but it may require adding a canonicalization
for shift + shift to shift + add.

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/div-shift.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/div-shift.ll b/llvm/test/Transforms/InstCombine/div-shift.ll
index 0f5d4e72959c..084b596754cf 100644
--- a/llvm/test/Transforms/InstCombine/div-shift.ll
+++ b/llvm/test/Transforms/InstCombine/div-shift.ll
@@ -892,3 +892,17 @@ define i8 @udiv_shl_shl_nuw_nsw2(i8 %x, i8 %y, i8 %z) {
   %d = udiv i8 %xz, %yz
   ret i8 %d
 }
+
+; TODO: X / (Y << Z) --> (X >> Z) / Y
+; https://alive2.llvm.org/ce/z/FjoN_A
+
+define i8 @udiv_shl_nuw_divisor(i8 %x, i8 %y, i8 %z) {
+; CHECK-LABEL: @udiv_shl_nuw_divisor(
+; CHECK-NEXT:    [[S:%.*]] = shl nuw i8 [[Y:%.*]], [[Z:%.*]]
+; CHECK-NEXT:    [[D:%.*]] = udiv i8 [[X:%.*]], [[S]]
+; CHECK-NEXT:    ret i8 [[D]]
+;
+  %s = shl nuw i8 %y, %z
+  %d = udiv i8 %x, %s
+  ret i8 %d
+}


        


More information about the llvm-commits mailing list