[llvm] [RISCV] Refactor RISCVDAGToDAGISel::selectSimm5Shl2. NFC (PR #148731)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 14 14:48:56 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Craig Topper (topperc)
<details>
<summary>Changes</summary>
Return from the for loop body instead of using a break and checking the shift amount after.
---
Full diff: https://github.com/llvm/llvm-project/pull/148731.diff
1 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp (+11-14)
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
index c97b14a254cdc..815b014cfb4ce 100644
--- a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
@@ -3776,21 +3776,18 @@ bool RISCVDAGToDAGISel::hasAllNBitUsers(SDNode *Node, unsigned Bits,
// Select a constant that can be represented as (sign_extend(imm5) << imm2).
bool RISCVDAGToDAGISel::selectSimm5Shl2(SDValue N, SDValue &Simm5,
SDValue &Shl2) {
- if (auto *C = dyn_cast<ConstantSDNode>(N)) {
- int64_t Offset = C->getSExtValue();
- unsigned Shift;
- for (Shift = 0; Shift < 4; Shift++)
- if (isInt<5>(Offset >> Shift) && ((Offset % (1LL << Shift)) == 0))
- break;
-
- // Constant cannot be encoded.
- if (Shift == 4)
- return false;
+ auto *C = dyn_cast<ConstantSDNode>(N);
+ if (!C)
+ return false;
- EVT Ty = N->getValueType(0);
- Simm5 = CurDAG->getSignedTargetConstant(Offset >> Shift, SDLoc(N), Ty);
- Shl2 = CurDAG->getTargetConstant(Shift, SDLoc(N), Ty);
- return true;
+ int64_t Offset = C->getSExtValue();
+ for (unsigned Shift = 0; Shift < 4; Shift++) {
+ if (isInt<5>(Offset >> Shift) && ((Offset % (1LL << Shift)) == 0)) {
+ EVT VT = N->getValueType(0);
+ Simm5 = CurDAG->getSignedTargetConstant(Offset >> Shift, SDLoc(N), VT);
+ Shl2 = CurDAG->getTargetConstant(Shift, SDLoc(N), VT);
+ return true;
+ }
}
return false;
``````````
</details>
https://github.com/llvm/llvm-project/pull/148731
More information about the llvm-commits
mailing list