From bce694ebb5068cd52319d4aa4700cbf7e04fa4cf Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 25 Dec 2023 06:38:51 -0800 Subject: [PATCH 1/4] FEXCore: Moves BitUtils to FHU No functional change --- FEXCore/Source/Common/SoftFloat.h | 2 +- FEXCore/Source/Interface/Core/ArchHelpers/Arm64Emitter.cpp | 3 ++- .../Source/Interface/Core/ArchHelpers/CodeEmitter/Emitter.h | 3 ++- FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp | 3 ++- FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp | 2 +- .../FEXCore/Utils => FEXHeaderUtils/FEXHeaderUtils}/BitUtils.h | 0 Source/Tools/CommonTools/HarnessHelpers.h | 2 +- 7 files changed, 9 insertions(+), 6 deletions(-) rename {FEXCore/include/FEXCore/Utils => FEXHeaderUtils/FEXHeaderUtils}/BitUtils.h (100%) diff --git a/FEXCore/Source/Common/SoftFloat.h b/FEXCore/Source/Common/SoftFloat.h index 9397aa64e8..597497ecbb 100644 --- a/FEXCore/Source/Common/SoftFloat.h +++ b/FEXCore/Source/Common/SoftFloat.h @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT #pragma once -#include #include #include #include +#include #include #include diff --git a/FEXCore/Source/Interface/Core/ArchHelpers/Arm64Emitter.cpp b/FEXCore/Source/Interface/Core/ArchHelpers/Arm64Emitter.cpp index ea13ac7702..2d3c6ddfe3 100644 --- a/FEXCore/Source/Interface/Core/ArchHelpers/Arm64Emitter.cpp +++ b/FEXCore/Source/Interface/Core/ArchHelpers/Arm64Emitter.cpp @@ -9,10 +9,11 @@ #include "Interface/HLE/Thunks/Thunks.h" #include -#include #include #include +#include + #include #include #include diff --git a/FEXCore/Source/Interface/Core/ArchHelpers/CodeEmitter/Emitter.h b/FEXCore/Source/Interface/Core/ArchHelpers/CodeEmitter/Emitter.h index 70aecc126f..df4ccfea47 100644 --- a/FEXCore/Source/Interface/Core/ArchHelpers/CodeEmitter/Emitter.h +++ b/FEXCore/Source/Interface/Core/ArchHelpers/CodeEmitter/Emitter.h @@ -4,13 +4,14 @@ #include "Interface/Core/ArchHelpers/CodeEmitter/Buffer.h" #include "Interface/Core/ArchHelpers/CodeEmitter/Registers.h" -#include #include #include #include #include #include +#include + #include #include diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index dfd71fcd4d..93b174c012 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -6,7 +6,6 @@ desc: Handles x86/64 ops to IR, no-pf opt, local-flags opt $end_info$ */ -#include "FEXCore/Utils/BitUtils.h" #include "FEXCore/Utils/Telemetry.h" #include "Interface/Context/Context.h" #include "Interface/Core/OpcodeDispatcher.h" @@ -23,6 +22,8 @@ desc: Handles x86/64 ops to IR, no-pf opt, local-flags opt #include #include +#include + #include #include #include diff --git a/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp b/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp index 5a993af22a..11b6e33842 100644 --- a/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp +++ b/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp @@ -13,7 +13,6 @@ tags: ir|opts #include #include #include -#include #include #include #include @@ -24,6 +23,7 @@ tags: ir|opts #include #include +#include #include #include diff --git a/FEXCore/include/FEXCore/Utils/BitUtils.h b/FEXHeaderUtils/FEXHeaderUtils/BitUtils.h similarity index 100% rename from FEXCore/include/FEXCore/Utils/BitUtils.h rename to FEXHeaderUtils/FEXHeaderUtils/BitUtils.h diff --git a/Source/Tools/CommonTools/HarnessHelpers.h b/Source/Tools/CommonTools/HarnessHelpers.h index b8549e38a3..9e42f98733 100644 --- a/Source/Tools/CommonTools/HarnessHelpers.h +++ b/Source/Tools/CommonTools/HarnessHelpers.h @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -22,6 +21,7 @@ #include #include #include +#include #include #include #include From 69d65fba4a5c30e4ddd2659e814ab0a5c5724ca6 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 25 Dec 2023 06:42:11 -0800 Subject: [PATCH 2/4] FEXCore: Removes unused SyscallVisitor This was expected to be part of the syscall optimizations we did but ended up getting manifested in a different way. Remove it. --- FEXCore/Source/Interface/Context/Context.cpp | 4 -- FEXCore/include/FEXCore/Core/Context.h | 1 - FEXCore/include/FEXCore/HLE/SyscallVisitor.h | 50 -------------------- 3 files changed, 55 deletions(-) delete mode 100644 FEXCore/include/FEXCore/HLE/SyscallVisitor.h diff --git a/FEXCore/Source/Interface/Context/Context.cpp b/FEXCore/Source/Interface/Context/Context.cpp index ce2eada41d..05d1d8e5d1 100644 --- a/FEXCore/Source/Interface/Context/Context.cpp +++ b/FEXCore/Source/Interface/Context/Context.cpp @@ -12,10 +12,6 @@ #include #include -namespace FEXCore::HLE { - class SyscallVisitor; -} - namespace FEXCore::Context { void InitializeStaticTables(OperatingMode Mode) { X86Tables::InitializeInfoTables(Mode); diff --git a/FEXCore/include/FEXCore/Core/Context.h b/FEXCore/include/FEXCore/Core/Context.h index d463e11932..9b4290f4b7 100644 --- a/FEXCore/include/FEXCore/Core/Context.h +++ b/FEXCore/include/FEXCore/Core/Context.h @@ -33,7 +33,6 @@ namespace FEXCore::CPU { namespace FEXCore::HLE { struct SyscallArguments; - class SyscallVisitor; class SyscallHandler; } diff --git a/FEXCore/include/FEXCore/HLE/SyscallVisitor.h b/FEXCore/include/FEXCore/HLE/SyscallVisitor.h deleted file mode 100644 index e95e26af51..0000000000 --- a/FEXCore/include/FEXCore/HLE/SyscallVisitor.h +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-License-Identifier: MIT -#pragma once -#include -#include - -namespace FEXCore::HLE { -#define INVALID_OP { LOGMAN_MSG_A_FMT("Tried to syscall with unknown number of registers"); return 0; } - class SyscallVisitor { - public: - SyscallVisitor(uint32_t Mask) : SyscallVisitor(Mask, false) {} - SyscallVisitor(uint32_t Mask, bool Constant) : ArgsMask { Mask }, ConstantVal { Constant } {} - - /** - * @brief If this syscall returns a constant value regardless of state then we can just read the value at compile time - * Won't happen often - * - * @return true if it is constant value - */ - bool IsConstant() { return ConstantVal; } - - virtual uint64_t VisitSyscall0() INVALID_OP - virtual uint64_t VisitSyscall1(uint64_t RDI) INVALID_OP - virtual uint64_t VisitSyscall2(uint64_t RDI, - uint64_t RSI) INVALID_OP - virtual uint64_t VisitSyscall3(uint64_t RDI, - uint64_t RSI, - uint64_t RDX) INVALID_OP - virtual uint64_t VisitSyscall4(uint64_t RDI, - uint64_t RSI, - uint64_t RDX, - uint64_t R10) INVALID_OP - virtual uint64_t VisitSyscall5(uint64_t RDI, - uint64_t RSI, - uint64_t RDX, - uint64_t R10, - uint64_t R8) INVALID_OP - // This one MUST be valid - // Hard fallback if we couldn't look it up - virtual uint64_t VisitSyscall6(uint64_t RDI, - uint64_t RSI, - uint64_t RDX, - uint64_t R10, - uint64_t R8, - uint64_t R9) = 0; - private: - uint32_t ArgsMask{}; - bool ConstantVal{}; - }; -#undef INVALID_OP -} From 257016bf1250c14e5ac6811cb65629efc567049e Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 25 Dec 2023 06:58:22 -0800 Subject: [PATCH 3/4] FEXCore: Moves BucketList out of public API NFC --- FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp | 3 ++- FEXCore/{include/FEXCore => Source}/Utils/BucketList.h | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename FEXCore/{include/FEXCore => Source}/Utils/BucketList.h (100%) diff --git a/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp b/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp index 11b6e33842..7cf976b7f5 100644 --- a/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp +++ b/FEXCore/Source/Interface/IR/Passes/RegisterAllocationPass.cpp @@ -5,6 +5,8 @@ tags: ir|opts $end_info$ */ +#include "Utils/BucketList.h" + #include "Interface/IR/Passes/RegisterAllocationPass.h" #include "FEXCore/Core/X86Enums.h" #include "Interface/IR/Passes.h" @@ -13,7 +15,6 @@ tags: ir|opts #include #include #include -#include #include #include #include diff --git a/FEXCore/include/FEXCore/Utils/BucketList.h b/FEXCore/Source/Utils/BucketList.h similarity index 100% rename from FEXCore/include/FEXCore/Utils/BucketList.h rename to FEXCore/Source/Utils/BucketList.h From b115c144fb8288ff9dee969091c8f48cff4b79c2 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 25 Dec 2023 07:07:17 -0800 Subject: [PATCH 4/4] FEXCore: Removes NetStream from public API Only used by GDBServer. NFC. --- FEXCore/Source/CMakeLists.txt | 1 - Source/Common/FEXServerClient.cpp | 1 - Source/Tools/LinuxEmulation/CMakeLists.txt | 1 + Source/Tools/LinuxEmulation/LinuxSyscalls/GdbServer.cpp | 3 ++- .../Tools/LinuxEmulation/LinuxSyscalls}/NetStream.cpp | 3 ++- .../Tools/LinuxEmulation/LinuxSyscalls}/NetStream.h | 0 6 files changed, 5 insertions(+), 4 deletions(-) rename {FEXCore/Source/Utils => Source/Tools/LinuxEmulation/LinuxSyscalls}/NetStream.cpp (98%) rename {FEXCore/include/FEXCore/Utils => Source/Tools/LinuxEmulation/LinuxSyscalls}/NetStream.h (100%) diff --git a/FEXCore/Source/CMakeLists.txt b/FEXCore/Source/CMakeLists.txt index 1f4ed43f81..36b820dc25 100644 --- a/FEXCore/Source/CMakeLists.txt +++ b/FEXCore/Source/CMakeLists.txt @@ -149,7 +149,6 @@ set (SRCS Interface/IR/Passes/DeadStoreElimination.cpp Interface/IR/Passes/RegisterAllocationPass.cpp Interface/IR/Passes/InlineCallOptimization.cpp - Utils/NetStream.cpp Utils/Telemetry.cpp Utils/Threads.cpp Utils/Profiler.cpp diff --git a/Source/Common/FEXServerClient.cpp b/Source/Common/FEXServerClient.cpp index 5fe651c466..6717c9cc39 100644 --- a/Source/Common/FEXServerClient.cpp +++ b/Source/Common/FEXServerClient.cpp @@ -5,7 +5,6 @@ #include #include #include -#include #include #include #include diff --git a/Source/Tools/LinuxEmulation/CMakeLists.txt b/Source/Tools/LinuxEmulation/CMakeLists.txt index 66e5fb7712..780c824c9c 100644 --- a/Source/Tools/LinuxEmulation/CMakeLists.txt +++ b/Source/Tools/LinuxEmulation/CMakeLists.txt @@ -6,6 +6,7 @@ set (SRCS LinuxSyscalls/EmulatedFiles/EmulatedFiles.cpp LinuxSyscalls/FileManagement.cpp LinuxSyscalls/LinuxAllocator.cpp + LinuxSyscalls/NetStream.cpp LinuxSyscalls/SignalDelegator.cpp LinuxSyscalls/Syscalls.cpp LinuxSyscalls/SyscallsSMCTracking.cpp diff --git a/Source/Tools/LinuxEmulation/LinuxSyscalls/GdbServer.cpp b/Source/Tools/LinuxEmulation/LinuxSyscalls/GdbServer.cpp index 4304e15814..521af25f41 100644 --- a/Source/Tools/LinuxEmulation/LinuxSyscalls/GdbServer.cpp +++ b/Source/Tools/LinuxEmulation/LinuxSyscalls/GdbServer.cpp @@ -6,6 +6,8 @@ desc: Provides a gdb interface to the guest state $end_info$ */ +#include "LinuxSyscalls/NetStream.h" + #include #include #include @@ -24,7 +26,6 @@ desc: Provides a gdb interface to the guest state #include #include #include -#include #include #include #include diff --git a/FEXCore/Source/Utils/NetStream.cpp b/Source/Tools/LinuxEmulation/LinuxSyscalls/NetStream.cpp similarity index 98% rename from FEXCore/Source/Utils/NetStream.cpp rename to Source/Tools/LinuxEmulation/LinuxSyscalls/NetStream.cpp index 932ba56071..7e8d3735f2 100644 --- a/FEXCore/Source/Utils/NetStream.cpp +++ b/Source/Tools/LinuxEmulation/LinuxSyscalls/NetStream.cpp @@ -1,7 +1,8 @@ // SPDX-License-Identifier: MIT +#include "LinuxSyscalls/NetStream.h" + #include #include -#include #include #include diff --git a/FEXCore/include/FEXCore/Utils/NetStream.h b/Source/Tools/LinuxEmulation/LinuxSyscalls/NetStream.h similarity index 100% rename from FEXCore/include/FEXCore/Utils/NetStream.h rename to Source/Tools/LinuxEmulation/LinuxSyscalls/NetStream.h