Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #11679 from lioncash/fpu
Common: Move FPU-related helpers into Common namespace
  • Loading branch information
AdmiralCurtiss committed Mar 21, 2023
2 parents d41751c + 0888c93 commit 4ae4a28
Show file tree
Hide file tree
Showing 9 changed files with 17 additions and 17 deletions.
6 changes: 3 additions & 3 deletions Source/Core/Common/ArmFPURoundMode.cpp
Expand Up @@ -11,6 +11,8 @@
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"

namespace Common::FPU
{
static u64 GetFPCR()
{
#ifdef _MSC_VER
Expand All @@ -31,8 +33,6 @@ static void SetFPCR(u64 fpcr)
#endif
}

namespace FPURoundMode
{
static const u64 default_fpcr = GetFPCR();
static u64 saved_fpcr = default_fpcr;

Expand Down Expand Up @@ -87,4 +87,4 @@ void LoadDefaultSIMDState()
SetFPCR(default_fpcr);
}

} // namespace FPURoundMode
} // namespace Common::FPU
4 changes: 2 additions & 2 deletions Source/Core/Common/FPURoundMode.h
Expand Up @@ -5,7 +5,7 @@

#include "Common/CommonTypes.h"

namespace FPURoundMode
namespace Common::FPU
{
enum RoundMode : u32
{
Expand All @@ -27,4 +27,4 @@ void SetSIMDMode(RoundMode rounding_mode, bool non_ieee_mode);
void SaveSIMDState();
void LoadSIMDState();
void LoadDefaultSIMDState();
} // namespace FPURoundMode
} // namespace Common::FPU
4 changes: 2 additions & 2 deletions Source/Core/Common/GenericFPURoundMode.cpp
Expand Up @@ -6,7 +6,7 @@
#include "Common/CommonTypes.h"

// Generic, do nothing
namespace FPURoundMode
namespace Common::FPU
{
void SetSIMDMode(RoundMode rounding_mode, bool non_ieee_mode)
{
Expand All @@ -20,4 +20,4 @@ void LoadSIMDState()
void LoadDefaultSIMDState()
{
}
} // namespace FPURoundMode
} // namespace Common::FPU
4 changes: 2 additions & 2 deletions Source/Core/Common/x64FPURoundMode.cpp
Expand Up @@ -9,7 +9,7 @@
#include "Common/CommonTypes.h"
#include "Common/Intrinsics.h"

namespace FPURoundMode
namespace Common::FPU
{
// Get the default SSE states here.
static u32 saved_sse_state = _mm_getcsr();
Expand Down Expand Up @@ -49,4 +49,4 @@ void LoadDefaultSIMDState()
{
_mm_setcsr(default_sse_state);
}
} // namespace FPURoundMode
} // namespace Common::FPU
2 changes: 1 addition & 1 deletion Source/Core/Core/Core.cpp
Expand Up @@ -644,7 +644,7 @@ static void EmuThread(std::unique_ptr<BootParameters> boot, WindowSystemInfo wsi
// thread, and then takes over and becomes the video thread
Common::SetCurrentThreadName("Video thread");
UndeclareAsCPUThread();
FPURoundMode::LoadDefaultSIMDState();
Common::FPU::LoadDefaultSIMDState();

// Spawn the CPU thread. The CPU thread will signal the event that boot is complete.
s_cpu_thread = std::thread(cpuThreadFunc, savestate_path, delete_savestate);
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/Core/PowerPC/Gekko.h
Expand Up @@ -436,7 +436,7 @@ enum FPSCRExceptionFlag : u32
union UReg_FPSCR
{
// Rounding mode (towards: nearest, zero, +inf, -inf)
BitField<0, 2, FPURoundMode::RoundMode> RN;
BitField<0, 2, Common::FPU::RoundMode> RN;
// Non-IEEE mode enable (aka flush-to-zero)
BitField<2, 1, u32> NI;
// Inexact exception enable
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/Core/PowerPC/PowerPC.cpp
Expand Up @@ -686,7 +686,7 @@ void RoundingModeUpdated()
// The rounding mode is separate for each thread, so this must run on the CPU thread
ASSERT(Core::IsCPUThread());

FPURoundMode::SetSIMDMode(PowerPC::ppcState.fpscr.RN, PowerPC::ppcState.fpscr.NI);
Common::FPU::SetSIMDMode(PowerPC::ppcState.fpscr.RN, PowerPC::ppcState.fpscr.NI);
}

} // namespace PowerPC
6 changes: 3 additions & 3 deletions Source/Core/VideoCommon/Fifo.cpp
Expand Up @@ -455,8 +455,8 @@ int FifoManager::RunGpuOnCpu(Core::System& system, int ticks)
{
if (!reset_simd_state)
{
FPURoundMode::SaveSIMDState();
FPURoundMode::LoadDefaultSIMDState();
Common::FPU::SaveSIMDState();
Common::FPU::LoadDefaultSIMDState();
reset_simd_state = true;
}
ReadDataFromFifo(system, fifo.CPReadPointer.load(std::memory_order_relaxed));
Expand Down Expand Up @@ -484,7 +484,7 @@ int FifoManager::RunGpuOnCpu(Core::System& system, int ticks)

if (reset_simd_state)
{
FPURoundMode::LoadSIMDState();
Common::FPU::LoadSIMDState();
}

// Discard all available ticks as there is nothing to do any more.
Expand Down
Expand Up @@ -84,12 +84,12 @@ class TestConversion : private JitArm64

// Set the rounding mode to something that's as annoying as possible to handle
// (flush-to-zero enabled, and rounding not symmetric about the origin)
FPURoundMode::SetSIMDMode(FPURoundMode::RoundMode::ROUND_UP, true);
Common::FPU::SetSIMDMode(Common::FPU::RoundMode::ROUND_UP, true);
}

~TestConversion() override
{
FPURoundMode::LoadDefaultSIMDState();
Common::FPU::LoadDefaultSIMDState();

FreeCodeSpace();
}
Expand Down

0 comments on commit 4ae4a28

Please sign in to comment.