diff --git a/FEXCore/Source/Interface/Config/Config.json.in b/FEXCore/Source/Interface/Config/Config.json.in index 14d2a6c40..9ddfb3231 100644 --- a/FEXCore/Source/Interface/Config/Config.json.in +++ b/FEXCore/Source/Interface/Config/Config.json.in @@ -434,7 +434,7 @@ "Default": "true", "Desc": [ "Use volatile metadata in PE files to inform TSO instructions when available.", - "When metadata is unavailable falls back to the currently enabled TSO options." + "When metadata is unavailable falls back to the currently enabled TSO options." ] }, "X87ReducedPrecision": { @@ -444,15 +444,6 @@ "Emulates X87 floating point using 64-bit precision. This reduces emulation accuracy and may result in rendering bugs." ] }, - "ABILocalFlags": { - "Type": "bool", - "Default": "false", - "Desc": [ - "When enabled enables an optimization around flags.", - "Assumes flags are not used across cals.", - "Hand-written assembly can violate this assumption." - ] - }, "StallProcess": { "Type": "bool", "Default": "false", diff --git a/FEXCore/Source/Interface/Context/Context.h b/FEXCore/Source/Interface/Context/Context.h index 9db63d02f..e6cac75dd 100644 --- a/FEXCore/Source/Interface/Context/Context.h +++ b/FEXCore/Source/Interface/Context/Context.h @@ -198,7 +198,6 @@ public: FEX_CONFIG_OPT(TSOEnabled, TSOENABLED); FEX_CONFIG_OPT(VectorTSOEnabled, VECTORTSOENABLED); FEX_CONFIG_OPT(MemcpySetTSOEnabled, MEMCPYSETTSOENABLED); - FEX_CONFIG_OPT(ABILocalFlags, ABILOCALFLAGS); FEX_CONFIG_OPT(SMCChecks, SMCCHECKS); FEX_CONFIG_OPT(MaxInstPerBlock, MAXINST); FEX_CONFIG_OPT(RootFSPath, ROOTFS); diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index 5c753fd23..9023102a2 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -150,12 +150,6 @@ void OpDispatchBuilder::NOPOp(OpcodeArgs) {} void OpDispatchBuilder::RETOp(OpcodeArgs) { const auto GPRSize = GetGPROpSize(); - // ABI Optimization: Flags don't survive calls or rets - if (CTX->Config.ABILocalFlags) { - _InvalidateFlags(~0UL); // all flags - InvalidatePF_AF(); - } - Ref SP = _RMWHandle(LoadGPRRegister(X86State::REG_RSP)); Ref NewRIP = Pop(GPRSize, SP); @@ -519,12 +513,6 @@ void OpDispatchBuilder::CALLOp(OpcodeArgs) { BlockSetRIP = true; - // ABI Optimization: Flags don't survive calls or rets - if (CTX->Config.ABILocalFlags) { - _InvalidateFlags(~0UL); // all flags - InvalidatePF_AF(); - } - // Call instruction only uses up to 32-bit signed displacement int64_t TargetOffset = Op->Src[0].Literal();