[llvm] InstCombine: reuse shifted/added values in reassociation (PR #202563)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 9 02:59:05 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Tianyi Jiao (squirrel1027)
<details>
<summary>Changes</summary>
Add regression test for reassociation. Adds llvm/test/Transforms/InstCombine/reassoc.ll to ensure InstCombine reuses shifted/added values during reassociation.\n\nThis test was validated locally by running 'opt -passes=instcombine' on reduced IR inputs and confirming the expected reassociation and reuse of shifted/added values. Patch: /tmp/0001-InstCombine-reassoc.patch
---
Full diff: https://github.com/llvm/llvm-project/pull/202563.diff
1 Files Affected:
- (added) llvm/test/Transforms/InstCombine/reassoc.ll (+35)
``````````diff
diff --git a/llvm/test/Transforms/InstCombine/reassoc.ll b/llvm/test/Transforms/InstCombine/reassoc.ll
new file mode 100644
index 0000000000000..8220b1237479c
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/reassoc.ll
@@ -0,0 +1,35 @@
+; RUN: opt -passes=instcombine -S < %s | FileCheck %s
+
+; CHECK-LABEL: define i8 @newDenseMat(
+; CHECK: %3 = shl i8 %1, 1
+; CHECK: %4 = mul i8 %0, %3
+
+define i8 @newDenseMat(i8 %0, i8 %1, i8* %2) {
+entry:
+ %4 = shl i8 %1, 1
+ %5 = shl i8 %0, 1
+ %6 = mul i8 %5, %1
+ store i8 %6, i8* %2, align 8
+ ret i8 %4
+}
+
+; CHECK-LABEL: define i32 @H5HF__sect_indirect_init_rows(
+; CHECK: %3 = add i32 %2, 1
+; CHECK: %4 = sub i32 %3, %1
+
+define noundef i32 @H5HF__sect_indirect_init_rows(i32* %0, i32 %1, i32 %2) {
+entry:
+ %4 = add i32 %2, 1
+ store i32 %4, i32* %0, align 8
+ %reass.sub = sub i32 %2, %1
+ %5 = add i32 %reass.sub, 1
+ ret i32 %5
+}
+
+define noundef i32 @tgt2(i32* %0, i32 %1, i32 %2) {
+entry:
+ %4 = add i32 %2, 1
+ store i32 %4, i32* %0, align 8
+ %5 = sub i32 %4, %1
+ ret i32 %5
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/202563
More information about the llvm-commits
mailing list