[clang] [llvm] [SPARC] Support reserving arbitrary general purpose registers (PR #74927)
Sergei Barannikov via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 19 04:33:24 PST 2023
================
@@ -1125,6 +1130,19 @@ Register SparcTargetLowering::getRegisterByName(const char* RegName, LLT VT,
.Case("g4", SP::G4).Case("g5", SP::G5).Case("g6", SP::G6).Case("g7", SP::G7)
.Default(0);
+ const SparcRegisterInfo *MRI = Subtarget->getRegisterInfo();
+ unsigned DwarfRegNum = MRI->getDwarfRegNum(Reg, false);
+ if (!MRI->isReservedReg(MF, Reg)) {
+ bool IsG = DwarfRegNum < 8, IsO = DwarfRegNum >= 8 && DwarfRegNum < 16,
+ IsL = DwarfRegNum >= 16 && DwarfRegNum < 24, IsI = DwarfRegNum >= 24;
+ unsigned NumInBank = DwarfRegNum % 8;
+ if ((IsG && !Subtarget->isGRegisterReserved(NumInBank)) ||
----------------
s-barannikov wrote:
All `is*RegisterReserved` methods return false here (because of isReservedReg returning false above).
https://github.com/llvm/llvm-project/pull/74927
More information about the llvm-commits
mailing list