From ef2559d9116f4e8b80d5a9a24fd6c8dada9a0028 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 27 Feb 2024 09:53:03 -0400 Subject: [PATCH] OpcodeDispatcher: allow garbage with SCAS it's just feeding SUB flags which allow it Signed-off-by: Alyssa Rosenzweig --- FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index 0ac40e2f7..47eff0e47 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -3916,7 +3916,7 @@ void OpDispatchBuilder::SCASOp(OpcodeArgs) { OrderedNode *Dest_RDI = LoadGPRRegister(X86State::REG_RDI); Dest_RDI = AppendSegmentOffset(Dest_RDI, 0, FEXCore::X86Tables::DecodeFlags::FLAG_ES_PREFIX, true); - auto Src1 = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags); + auto Src1 = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags, {.AllowUpperGarbage = true}); auto Src2 = _LoadMemAutoTSO(GPRClass, Size, Dest_RDI, Size); GenerateFlags_SUB(Op, Src1, Src2); @@ -3967,7 +3967,7 @@ void OpDispatchBuilder::SCASOp(OpcodeArgs) { Dest_RDI = AppendSegmentOffset(Dest_RDI, 0, FEXCore::X86Tables::DecodeFlags::FLAG_ES_PREFIX, true); - auto Src1 = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags); + auto Src1 = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags, {.AllowUpperGarbage = true}); auto Src2 = _LoadMemAutoTSO(GPRClass, Size, Dest_RDI, Size); GenerateFlags_SUB(Op, Src1, Src2);