[llvm] [RISCV] Emit constant on RHS of ADD. NFC (PR #217730)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 20 11:49:53 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Craig Topper (topperc)
<details>
<summary>Changes</summary>
Avoids needing to canonicalize later.
---
Full diff: https://github.com/llvm/llvm-project/pull/217730.diff
1 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVISelLowering.cpp (+2-2)
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 3aceff8a6497d..0208816a8f8a8 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -10630,13 +10630,13 @@ SDValue RISCVTargetLowering::lowerSELECT(SDValue Op, SelectionDAG &DAG) const {
if ((TrueVal - FalseVal).isPowerOf2() && FalseVal.isSignedIntN(12)) {
SDValue Log2 = DAG.getConstant((TrueVal - FalseVal).logBase2(), DL, VT);
SDValue BitDiff = DAG.getNode(ISD::SHL, DL, VT, CondV, Log2);
- return DAG.getNode(ISD::ADD, DL, VT, FalseV, BitDiff);
+ return DAG.getNode(ISD::ADD, DL, VT, BitDiff, FalseV);
}
if ((FalseVal - TrueVal).isPowerOf2() && TrueVal.isSignedIntN(12)) {
SDValue Log2 = DAG.getConstant((FalseVal - TrueVal).logBase2(), DL, VT);
CondV = DAG.getLogicalNOT(DL, CondV, CondV->getValueType(0));
SDValue BitDiff = DAG.getNode(ISD::SHL, DL, VT, CondV, Log2);
- return DAG.getNode(ISD::ADD, DL, VT, TrueV, BitDiff);
+ return DAG.getNode(ISD::ADD, DL, VT, BitDiff, TrueV);
}
auto getCost = [&](const APInt &Delta, const APInt &Addend) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/217730
More information about the llvm-commits
mailing list