[llvm] [RISCV] Expand constant multiplication for targets without M extension (PR #137195)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Thu May 15 13:29:00 PDT 2025
================
@@ -882,6 +964,48 @@ define i64 @muli64_p72(i64 %a) nounwind {
;
; RV32IM-LABEL: muli64_p72:
; RV32IM: # %bb.0:
+; RV32IM-NEXT: li a2, 60
+; RV32IM-NEXT: slli a3, a1, 2
+; RV32IM-NEXT: slli a1, a1, 6
+; RV32IM-NEXT: sub a1, a1, a3
+; RV32IM-NEXT: slli a3, a0, 2
+; RV32IM-NEXT: mulhu a2, a0, a2
+; RV32IM-NEXT: slli a0, a0, 6
+; RV32IM-NEXT: add a1, a2, a1
+; RV32IM-NEXT: sub a0, a0, a3
+; RV32IM-NEXT: ret
+;
+; RV64I-LABEL: muli64_p72:
+; RV64I: # %bb.0:
+; RV64I-NEXT: slli a1, a0, 2
+; RV64I-NEXT: slli a0, a0, 6
+; RV64I-NEXT: sub a0, a0, a1
+; RV64I-NEXT: ret
+;
+; RV64IM-LABEL: muli64_p72:
+; RV64IM: # %bb.0:
+; RV64IM-NEXT: slli a1, a0, 2
+; RV64IM-NEXT: slli a0, a0, 6
+; RV64IM-NEXT: sub a0, a0, a1
+; RV64IM-NEXT: ret
+ %1 = mul i64 %a, 60
+ ret i64 %1
+}
+
+define i64 @muli64_p68(i64 %a) nounwind {
----------------
topperc wrote:
Test name says `p68` but the multiplier is 72
https://github.com/llvm/llvm-project/pull/137195
More information about the llvm-commits
mailing list