[llvm] 6af39d9 - [RISCV][NFC] Simplify the sp-offset reduction by spimm of CM.PUSH/POP. (#66667)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 18 20:01:51 PDT 2023
Author: Yeting Kuo
Date: 2023-09-19T11:01:47+08:00
New Revision: 6af39d914c8377241b44f4e2fdd75b5ffff9c882
URL: https://github.com/llvm/llvm-project/commit/6af39d914c8377241b44f4e2fdd75b5ffff9c882
DIFF: https://github.com/llvm/llvm-project/commit/6af39d914c8377241b44f4e2fdd75b5ffff9c882.diff
LOG: [RISCV][NFC] Simplify the sp-offset reduction by spimm of CM.PUSH/POP. (#66667)
When inserting prolgue/epilogue, we use the spimm of CM.PUSH/POP to
reduce the following offset for sp. Previously, we tried to use the free
space of the push stack to minimize the following sp-offset. But it's
useless, since the free space must be less than 16 and required stack should
be aligned to 16 before/after the adjustment.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
index add933250f8473d..cbcf41a979c9e47 100644
--- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
@@ -276,16 +276,6 @@ static Register getMaxPushPopReg(const MachineFunction &MF,
return MaxPushPopReg;
}
-static uint64_t adjSPInPushPop(MachineBasicBlock::iterator MBBI,
- unsigned RequiredStack, unsigned FreePushStack,
- bool IsPop) {
- if (FreePushStack > RequiredStack)
- RequiredStack = 0;
- unsigned Spimm = std::min(RequiredStack, 48u);
- MBBI->getOperand(1).setImm(Spimm);
- return alignTo(RequiredStack - Spimm, 16);
-}
-
// Return true if the specified function should have a dedicated frame
// pointer register. This is true if frame pointer elimination is
// disabled, if it needs dynamic stack realignment, if the function has
@@ -539,10 +529,9 @@ void RISCVFrameLowering::emitPrologue(MachineFunction &MF,
if (RVFI->isPushable(MF) && FirstFrameSetup->getOpcode() == RISCV::CM_PUSH) {
// Use available stack adjustment in push instruction to allocate additional
// stack space.
- unsigned PushStack = RVFI->getRVPushRegs() * (STI.getXLen() / 8);
- unsigned SpImmBase = RVFI->getRVPushStackSize();
- StackSize = adjSPInPushPop(FirstFrameSetup, StackSize,
- (SpImmBase - PushStack), true);
+ uint64_t Spimm = std::min(StackSize, (uint64_t)48);
+ FirstFrameSetup->getOperand(1).setImm(Spimm);
+ StackSize -= Spimm;
}
if (StackSize != 0) {
@@ -777,9 +766,9 @@ void RISCVFrameLowering::emitEpilogue(MachineFunction &MF,
MBBI->getOpcode() == RISCV::CM_POP) {
// Use available stack adjustment in pop instruction to deallocate stack
// space.
- unsigned PushStack = RVFI->getRVPushRegs() * (STI.getXLen() / 8);
- unsigned SpImmBase = RVFI->getRVPushStackSize();
- StackSize = adjSPInPushPop(MBBI, StackSize, (SpImmBase - PushStack), true);
+ uint64_t Spimm = std::min(StackSize, (uint64_t)48);
+ MBBI->getOperand(1).setImm(Spimm);
+ StackSize -= Spimm;
}
// Deallocate stack
More information about the llvm-commits
mailing list