[llvm] [RISCV][WIP] Let RA do the CSR saves. (PR #90819)
via llvm-commits
llvm-commits at lists.llvm.org
Wed May 1 22:11:52 PDT 2024
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff df91cde4da62aec22e4d384b1bc800590c7f561a d83e5170cb5555f5c93a81d31dcf58c9911c4fe3 -- llvm/lib/Target/RISCV/RISCVFrameLowering.cpp llvm/lib/Target/RISCV/RISCVFrameLowering.h llvm/lib/Target/RISCV/RISCVISelLowering.cpp llvm/lib/Target/RISCV/RISCVISelLowering.h llvm/lib/Target/RISCV/RISCVSubtarget.cpp llvm/lib/Target/RISCV/RISCVSubtarget.h
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
index b725bfb563..437a935c12 100644
--- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
@@ -1027,7 +1027,7 @@ RISCVFrameLowering::getFrameIndexReference(const MachineFunction &MF, int FI,
}
void RISCVFrameLowering::determineMustCalleeSaves(MachineFunction &MF,
- BitVector &SavedRegs) const {
+ BitVector &SavedRegs) const {
const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo();
// Resize before the early returns. Some backends expect that
@@ -1061,9 +1061,9 @@ void RISCVFrameLowering::determineMustCalleeSaves(MachineFunction &MF,
// execution we do not need the CSR spills either: setjmp stores all CSRs
// it was called with into the jmp_buf, which longjmp then restores.
if (MF.getFunction().hasFnAttribute(Attribute::NoReturn) &&
- MF.getFunction().hasFnAttribute(Attribute::NoUnwind) &&
- !MF.getFunction().hasFnAttribute(Attribute::UWTable) &&
- enableCalleeSaveSkip(MF))
+ MF.getFunction().hasFnAttribute(Attribute::NoUnwind) &&
+ !MF.getFunction().hasFnAttribute(Attribute::UWTable) &&
+ enableCalleeSaveSkip(MF))
return;
// Functions which call __builtin_unwind_init get all their registers saved.
diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.h b/llvm/lib/Target/RISCV/RISCVFrameLowering.h
index d7b9df8bd6..f6977d8092 100644
--- a/llvm/lib/Target/RISCV/RISCVFrameLowering.h
+++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.h
@@ -31,7 +31,8 @@ public:
StackOffset getFrameIndexReference(const MachineFunction &MF, int FI,
Register &FrameReg) const override;
- void determineMustCalleeSaves(MachineFunction &MF, BitVector &SavedRegs) const;
+ void determineMustCalleeSaves(MachineFunction &MF,
+ BitVector &SavedRegs) const;
void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,
RegScavenger *RS) const override;
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 7978dac4aa..c63e2d3753 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -21316,7 +21316,7 @@ unsigned RISCVTargetLowering::getCustomCtpopCost(EVT VT,
void RISCVTargetLowering::finalizeLowering(MachineFunction &MF) const {
const Function &F = MF.getFunction();
- if (!Subtarget.doCSRSavesInRA() || !F.doesNotThrow()) {
+ if (!Subtarget.doCSRSavesInRA() || !F.doesNotThrow()) {
TargetLoweringBase::finalizeLowering(MF);
return;
}
@@ -21336,7 +21336,7 @@ void RISCVTargetLowering::finalizeLowering(MachineFunction &MF) const {
BitVector MustCalleeSavedRegs;
TFI.determineMustCalleeSaves(MF, MustCalleeSavedRegs);
- const MCPhysReg * CSRegs = MF.getRegInfo().getCalleeSavedRegs();
+ const MCPhysReg *CSRegs = MF.getRegInfo().getCalleeSavedRegs();
SmallVector<MCPhysReg, 4> EligibleRegs;
for (int i = 0; CSRegs[i]; ++i) {
if (!MustCalleeSavedRegs[i])
@@ -21349,16 +21349,13 @@ void RISCVTargetLowering::finalizeLowering(MachineFunction &MF) const {
for (MCPhysReg Reg : EligibleRegs) {
SaveMBB->addLiveIn(Reg);
// TODO: should we use Maximal register class instead?
- Register VReg = MRI.createVirtualRegister(TRI.getMinimalPhysRegClass(Reg));
+ Register VReg =
+ MRI.createVirtualRegister(TRI.getMinimalPhysRegClass(Reg));
VRegs.push_back(VReg);
- BuildMI(
- *SaveMBB,
- SaveMBB->begin(),
- SaveMBB->findDebugLoc(SaveMBB->begin()),
- TII.get(TargetOpcode::COPY),
- VReg
- )
- .addReg(Reg);
+ BuildMI(*SaveMBB, SaveMBB->begin(),
+ SaveMBB->findDebugLoc(SaveMBB->begin()),
+ TII.get(TargetOpcode::COPY), VReg)
+ .addReg(Reg);
}
}
@@ -21368,22 +21365,12 @@ void RISCVTargetLowering::finalizeLowering(MachineFunction &MF) const {
auto VRegI = VRegs.begin();
for (MCPhysReg Reg : EligibleRegs) {
Register VReg = *VRegI;
- BuildMI(
- *RestoreMBB,
- ReturnMI.getIterator(),
- ReturnMI.getDebugLoc(),
- TII.get(TargetOpcode::COPY),
- Reg
- )
- .addReg(VReg);
- ReturnMI.addOperand(
- MF,
- MachineOperand::CreateReg(
- Reg,
- /*isDef=*/false,
- /*isImplicit=*/true
- )
- );
+ BuildMI(*RestoreMBB, ReturnMI.getIterator(), ReturnMI.getDebugLoc(),
+ TII.get(TargetOpcode::COPY), Reg)
+ .addReg(VReg);
+ ReturnMI.addOperand(MF, MachineOperand::CreateReg(Reg,
+ /*isDef=*/false,
+ /*isImplicit=*/true));
VRegI++;
}
}
diff --git a/llvm/lib/Target/RISCV/RISCVSubtarget.cpp b/llvm/lib/Target/RISCV/RISCVSubtarget.cpp
index 15476fc2d3..88dab938ab 100644
--- a/llvm/lib/Target/RISCV/RISCVSubtarget.cpp
+++ b/llvm/lib/Target/RISCV/RISCVSubtarget.cpp
@@ -67,8 +67,8 @@ static cl::opt<unsigned> RISCVMinimumJumpTableEntries(
static cl::opt<bool> RISCVEnableSaveCSRByRA(
"riscv-enable-save-csr-in-ra",
- cl::desc("Let register alloctor do csr saves/restores"),
- cl::init(false), cl::Hidden);
+ cl::desc("Let register alloctor do csr saves/restores"), cl::init(false),
+ cl::Hidden);
void RISCVSubtarget::anchor() {}
@@ -135,9 +135,7 @@ bool RISCVSubtarget::useConstantPoolForLargeInts() const {
return !RISCVDisableUsingConstantPoolForLargeInts;
}
-bool RISCVSubtarget::doCSRSavesInRA() const {
- return RISCVEnableSaveCSRByRA;
-}
+bool RISCVSubtarget::doCSRSavesInRA() const { return RISCVEnableSaveCSRByRA; }
unsigned RISCVSubtarget::getMaxBuildIntsCost() const {
// Loading integer from constant pool needs two instructions (the reason why
``````````
</details>
https://github.com/llvm/llvm-project/pull/90819
More information about the llvm-commits
mailing list