[llvm] [RISCV] Lower (select c, y, 0) -> (qc.muliadd c, y-1) (PR #190323)
Sam Elliott via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 3 15:23:43 PDT 2026
================
@@ -9663,8 +9663,14 @@ static SDValue lowerSelectToBinOp(SDNode *N, SelectionDAG &DAG,
return DAG.getNode(ISD::AND, DL, VT, Neg, DAG.getFreeze(FalseV));
}
if (isNullConstant(FalseV)) {
- // (select c, (1 << ShAmount) + 1, 0) -> (c << ShAmount) + c
if (auto *TrueC = dyn_cast<ConstantSDNode>(TrueV)) {
+ // (select c, y, 0) -> (c * (y - 1)) + c
+ int64_t TrueM2 = TrueC->getSExtValue() - 1;
----------------
lenary wrote:
Both of these should probably share `TrueM1`, because `M1` i think means "minus 1".
https://github.com/llvm/llvm-project/pull/190323
More information about the llvm-commits
mailing list