[clang] [llvm] [RISCV] QCI Interrupt Support (PR #129957)
Craig Topper via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 5 17:14:45 PST 2025
================
@@ -1892,9 +1970,23 @@ bool RISCVFrameLowering::spillCalleeSavedRegisters(
if (MI != MBB.end() && !MI->isDebugInstr())
DL = MI->getDebugLoc();
- // Emit CM.PUSH with base SPimm & evaluate Push stack
RISCVMachineFunctionInfo *RVFI = MF->getInfo<RISCVMachineFunctionInfo>();
- if (RVFI->isPushable(*MF)) {
+ if (RVFI->useQCIInterrupt(*MF)) {
+ // Emit QC.C.MIENTER(.NEST)
+ BuildMI(
+ MBB, MI, DL,
+ TII.get(RVFI->getInterruptStackKind(*MF) ==
+ RISCVMachineFunctionInfo::InterruptStackKind::QCINest
+ ? RISCV::QC_C_MIENTER_NEST
+ : RISCV::QC_C_MIENTER))
+ .setMIFlag(MachineInstr::FrameSetup);
+
+ for (auto [Reg, _Offset] : FixedCSRFIQCIInterruptMap) {
----------------
topperc wrote:
Dropy curly braces
https://github.com/llvm/llvm-project/pull/129957
More information about the cfe-commits
mailing list