https://github.com/lenary closed
https://github.com/llvm/llvm-project/pull/129957
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/topperc approved this pull request.
LGTM
https://github.com/llvm/llvm-project/pull/129957
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -382,6 +410,10 @@ void
RISCVFrameLowering::determineFrameLayout(MachineFunction &MF) const {
// Get the number of bytes to allocate from the FrameInfo.
uint64_t FrameSize = MFI.getStackSize();
+ // QCI Interrupts use at least 96 bytes of stack space
+ if (RVFI->useQC
@@ -382,6 +410,10 @@ void
RISCVFrameLowering::determineFrameLayout(MachineFunction &MF) const {
// Get the number of bytes to allocate from the FrameInfo.
uint64_t FrameSize = MFI.getStackSize();
+ // QCI Interrupts use at least 96 bytes of stack space
+ if (RVFI->useQC
@@ -2116,6 +2214,11 @@ bool RISCVFrameLowering::canUseAsEpilogue(const
MachineBasicBlock &MBB) const {
MachineBasicBlock *TmpMBB = const_cast(&MBB);
const auto *RVFI = MF->getInfo();
+ // Qe do not want QC.C.MILEAVERET to be subject to shrink-wrapping - it must
-
@@ -2828,8 +2828,17 @@ targets. This attribute may be attached to a function
definition and instructs
the backend to generate appropriate function entry/exit code so that it can be
used directly as an interrupt service routine.
-Permissible values for this parameter are ``sup
@@ -2116,6 +2214,11 @@ bool RISCVFrameLowering::canUseAsEpilogue(const
MachineBasicBlock &MBB) const {
MachineBasicBlock *TmpMBB = const_cast(&MBB);
const auto *RVFI = MF->getInfo();
+ // Qe do not want QC.C.MILEAVERET to be subject to shrink-wrapping - it must
-
@@ -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();
- if (RVFI->isPusha
@@ -20831,9 +20831,20 @@ SDValue RISCVTargetLowering::LowerFormalArguments(
StringRef Kind =
MF.getFunction().getFnAttribute("interrupt").getValueAsString();
-if (!(Kind == "supervisor" || Kind == "machine"))
+constexpr StringRef SupportedInterruptKinds[] = {
@@ -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();
- if (RVFI->isPusha
@@ -20831,9 +20831,20 @@ SDValue RISCVTargetLowering::LowerFormalArguments(
StringRef Kind =
MF.getFunction().getFnAttribute("interrupt").getValueAsString();
-if (!(Kind == "supervisor" || Kind == "machine"))
+constexpr StringRef SupportedInterruptKinds[] = {
@@ -2828,8 +2828,17 @@ targets. This attribute may be attached to a function
definition and instructs
the backend to generate appropriate function entry/exit code so that it can be
used directly as an interrupt service routine.
-Permissible values for this parameter are ``sup
llvmbot wrote:
@llvm/pr-subscribers-clang
Author: Sam Elliott (lenary)
Changes
This change adds support for `qci-nest` and `qci-nonest` interrupt attribute
values. Both of these are machine-mode interrupts, which use instructions in
Xqciint to push and pop A- and T-registers (and a few o
llvmbot wrote:
@llvm/pr-subscribers-clang-codegen
Author: Sam Elliott (lenary)
Changes
This change adds support for `qci-nest` and `qci-nonest` interrupt attribute
values. Both of these are machine-mode interrupts, which use instructions in
Xqciint to push and pop A- and T-registers (and
llvmbot wrote:
@llvm/pr-subscribers-backend-risc-v
Author: Sam Elliott (lenary)
Changes
This change adds support for `qci-nest` and `qci-nonest` interrupt attribute
values. Both of these are machine-mode interrupts, which use instructions in
Xqciint to push and pop A- and T-registers (an
15 matches
Mail list logo