[llvm] [RISCV] Expand multiplication by `(2/4/8 * 3/5/9 + 1) << N` with SHL_ADD (PR #166372)
Piotr Fusik via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 7 01:49:17 PST 2025
================
@@ -636,12 +663,26 @@ define i64 @addmul20(i64 %a, i64 %b) {
}
define i64 @addmul22(i64 %a, i64 %b) {
-; CHECK-LABEL: addmul22:
-; CHECK: # %bb.0:
-; CHECK-NEXT: li a2, 22
-; CHECK-NEXT: mul a0, a0, a2
-; CHECK-NEXT: add a0, a0, a1
-; CHECK-NEXT: ret
+; RV64I-LABEL: addmul22:
+; RV64I: # %bb.0:
+; RV64I-NEXT: li a2, 22
+; RV64I-NEXT: mul a0, a0, a2
+; RV64I-NEXT: add a0, a0, a1
+; RV64I-NEXT: ret
+;
+; RV64ZBA-LABEL: addmul22:
+; RV64ZBA: # %bb.0:
+; RV64ZBA-NEXT: sh2add a2, a0, a0
----------------
pfusik wrote:
Now I see these transforms are disabled when optimizing for size: https://github.com/llvm/llvm-project/blob/9a8203df3f7aecf1ffe5362866ea0cd6c44abbd8/llvm/lib/Target/RISCV/RISCVISelLowering.cpp#L16606
https://github.com/llvm/llvm-project/pull/166372
More information about the llvm-commits
mailing list