[llvm] [MCA][X86] Pretend To Have a Stack Engine (PR #153348)
Aiden Grossman via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 14 15:37:38 PDT 2025
================
@@ -36,11 +36,29 @@ void X86InstrPostProcess::setMemBarriers(std::unique_ptr<Instruction> &Inst,
}
}
+void X86InstrPostProcess::useStackEngine(std::unique_ptr<Instruction> &Inst,
+ const MCInst &MCI) {
+ // TODO(boomanaiden154): We currently do not handle PUSHF/POPF because we
+ // have not done the necessary benchmarking to see if they are also
+ // optimized by the stack engine.
+ if (X86::isPOP(MCI.getOpcode()) || X86::isPUSH(MCI.getOpcode())) {
+ auto *StackRegisterDef =
+ llvm::find_if(Inst->getDefs(), [](const WriteState &State) {
+ return State.getRegisterID() == X86::RSP;
+ });
+ assert(
+ StackRegisterDef != Inst->getDefs().end() &&
+ "Expected push instruction to implicitly use stack pointer register.");
+ Inst->getDefs().erase(StackRegisterDef);
+ }
+}
+
void X86InstrPostProcess::postProcessInstruction(
std::unique_ptr<Instruction> &Inst, const MCInst &MCI) {
// Currently, we only modify certain instructions' IsALoadBarrier and
----------------
boomanaiden154 wrote:
Yep. Done.
https://github.com/llvm/llvm-project/pull/153348
More information about the llvm-commits
mailing list