From a4c677bcbfd9fb0c213ce4921965804901fa6cf2 Mon Sep 17 00:00:00 2001 From: Stefanos Kornilios Mitsis Poiitidis Date: Fri, 28 Aug 2020 18:24:04 +0300 Subject: [PATCH] Interpreter: Fix Mask calculation for OP_NOT --- .../Source/Interface/Core/Interpreter/InterpreterCore.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/External/FEXCore/Source/Interface/Core/Interpreter/InterpreterCore.cpp b/External/FEXCore/Source/Interface/Core/Interpreter/InterpreterCore.cpp index f4a37ecdd..a8d4365a1 100644 --- a/External/FEXCore/Source/Interface/Core/Interpreter/InterpreterCore.cpp +++ b/External/FEXCore/Source/Interface/Core/Interpreter/InterpreterCore.cpp @@ -874,7 +874,8 @@ void InterpreterCore::ExecuteCode(FEXCore::Core::InternalThreadState *Thread) { case IR::OP_NOT: { auto Op = IROp->C(); uint64_t Src = *GetSrc(Op->Header.Args[0]); - uint8_t Mask = OpSize * 8 - 1; + const uint64_t mask[9]= { 0, 0xFF, 0xFFFF, 0, 0xFFFFFFFF, 0, 0, 0, 0xFFFFFFFFFFFFFFFFULL }; + uint64_t Mask = mask[OpSize]; GD = (~Src) & Mask; break; }