[llvm] [Hexagon] Use MCRegisterClass::hasSubClassEq in HexagonBitTracker. NFCI. (PR #226110)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 24 03:47:27 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-hexagon
Author: Jay Foad (jayfoad)
<details>
<summary>Changes</summary>
This avoids depending on the exact names of synthesized register classes
(motivated by #<!-- -->225809 which will change some of these) and generally
feels more future-proof.
Co-authored-by: Claude Opus 5 (1M context) <noreply@<!-- -->anthropic.com>
---
Full diff: https://github.com/llvm/llvm-project/pull/226110.diff
1 Files Affected:
- (modified) llvm/lib/Target/Hexagon/HexagonBitTracker.cpp (+10-22)
``````````diff
diff --git a/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp b/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp
index 360880a7afb19..a5d706a741322 100644
--- a/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp
@@ -80,20 +80,13 @@ BT::BitMask HexagonEvaluator::mask(Register Reg, unsigned Sub) const {
if (Sub == 0)
return MachineEvaluator::mask(Reg, 0);
const TargetRegisterClass &RC = *MRI.getRegClass(Reg);
- unsigned ID = RC.getID();
uint16_t RW = getRegBitWidth(RegisterRef(Reg, Sub));
const auto &HRI = static_cast<const HexagonRegisterInfo&>(TRI);
bool IsSubLo = (Sub == HRI.getHexagonSubRegIndex(RC, Hexagon::ps_sub_lo));
- switch (ID) {
- case Hexagon::DoubleRegsRegClassID:
- case Hexagon::DoubleRegs_with_isub_hi_in_IntRegsLow8RegClassID:
- case Hexagon::HvxWRRegClassID:
- case Hexagon::HvxVQRRegClassID:
- return IsSubLo ? BT::BitMask(0, RW-1)
- : BT::BitMask(RW, 2*RW-1);
- default:
- break;
- }
+ if (Hexagon::DoubleRegsRegClass.hasSubClassEq(&RC) ||
+ Hexagon::HvxWRRegClass.hasSubClassEq(&RC) ||
+ Hexagon::HvxVQRRegClass.hasSubClassEq(&RC))
+ return IsSubLo ? BT::BitMask(0, RW - 1) : BT::BitMask(RW, 2 * RW - 1);
#ifndef NDEBUG
dbgs() << printReg(Reg, &TRI, Sub) << " in reg class "
<< TRI.getRegClassName(&RC) << '\n';
@@ -130,17 +123,12 @@ const TargetRegisterClass &HexagonEvaluator::composeWithSubRegIndex(
assert(IsSubLo != IsSubHi && "Must refer to either low or high subreg");
#endif
- switch (RC.getID()) {
- case Hexagon::DoubleRegsRegClassID:
- case Hexagon::DoubleRegs_with_isub_hi_in_IntRegsLow8RegClassID:
- return Hexagon::IntRegsRegClass;
- case Hexagon::HvxWRRegClassID:
- return Hexagon::HvxVRRegClass;
- case Hexagon::HvxVQRRegClassID:
- return Hexagon::HvxWRRegClass;
- default:
- break;
- }
+ if (Hexagon::DoubleRegsRegClass.hasSubClassEq(&RC))
+ return Hexagon::IntRegsRegClass;
+ if (Hexagon::HvxWRRegClass.hasSubClassEq(&RC))
+ return Hexagon::HvxVRRegClass;
+ if (Hexagon::HvxVQRRegClass.hasSubClassEq(&RC))
+ return Hexagon::HvxWRRegClass;
#ifndef NDEBUG
dbgs() << "Reg class id: " << RC.getID() << " idx: " << Idx << '\n';
#endif
``````````
</details>
https://github.com/llvm/llvm-project/pull/226110
More information about the llvm-commits
mailing list