From 881c940693fef4ac21213d2be4551214f3c69b16 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 11 Aug 2024 09:20:20 -0400 Subject: [PATCH] OpcodeDispatcher: optimize POP Signed-off-by: Alyssa Rosenzweig --- FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index d548429ee..de9138b6c 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -506,18 +506,8 @@ void OpDispatchBuilder::PUSHSegmentOp(OpcodeArgs) { } void OpDispatchBuilder::POPOp(OpcodeArgs) { - const uint8_t Size = GetSrcSize(Op); - - auto Constant = _Constant(Size); - auto OldSP = LoadGPRRegister(X86State::REG_RSP); - auto NewGPR = _LoadMem(GPRClass, Size, OldSP, Size); - auto NewSP = _Add(OpSize::i64Bit, OldSP, Constant); - - // Store the new stack pointer - StoreGPRRegister(X86State::REG_RSP, NewSP); - - // Store what we loaded from the stack - StoreResult(GPRClass, Op, NewGPR, -1); + Ref Value = Pop(GetSrcSize(Op)); + StoreResult(GPRClass, Op, Value, -1); } void OpDispatchBuilder::POPAOp(OpcodeArgs) {