[llvm] [RISCV] Pass sign-extended value to isInt check in expandMul (PR #150211)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 24 10:05:26 PDT 2025


================
@@ -463,3 +463,27 @@ entry:
   %add = add nsw i32 %shlc1, %shlc2
   ret i32 %add
 }
+
+define i32 @testmuliaddnegimm(i32 %a, i32 %b) {
+; RV32IM-LABEL: testmuliaddnegimm:
+; RV32IM:       # %bb.0:
+; RV32IM-NEXT:    slli a1, a0, 1
+; RV32IM-NEXT:    add a0, a1, a0
+; RV32IM-NEXT:    li a1, 3
+; RV32IM-NEXT:    sub a0, a1, a0
+; RV32IM-NEXT:    ret
+;
+; RV32IMXQCIAC-LABEL: testmuliaddnegimm:
+; RV32IMXQCIAC:       # %bb.0:
+; RV32IMXQCIAC-NEXT:    li a1, 3
+; RV32IMXQCIAC-NEXT:    qc.muliadd a1, a0, -3
+; RV32IMXQCIAC-NEXT:    mv a0, a1
+; RV32IMXQCIAC-NEXT:    ret
+;
+; RV32IZBAMXQCIAC-LABEL: testmuliaddnegimm:
+; RV32IZBAMXQCIAC:       # %bb.0:
+; RV32IZBAMXQCIAC-NEXT:    ret
----------------
topperc wrote:

Fix for the corner case that caused this. https://github.com/llvm/llvm-project/pull/150464/files

I don't think it should block this patch.

https://github.com/llvm/llvm-project/pull/150211


More information about the llvm-commits mailing list