mirror of
https://github.com/hedge-dev/XenonRecomp.git
synced 2025-07-22 21:17:14 +00:00
Detect identical flush mode calls and don't print them.
This commit is contained in:
@@ -158,15 +158,35 @@ struct PPCFPSCRRegister
|
||||
_mm_setcsr(csr);
|
||||
}
|
||||
|
||||
inline void setFlushMode(bool enable) noexcept
|
||||
static constexpr size_t FlushMask = _MM_FLUSH_ZERO_MASK | _MM_DENORMALS_ZERO_MASK;
|
||||
|
||||
inline void enableFlushModeUnconditional()
|
||||
{
|
||||
constexpr uint32_t mask = _MM_FLUSH_ZERO_MASK | _MM_DENORMALS_ZERO_MASK;
|
||||
uint32_t value = enable ? (csr | mask) : (csr & ~mask);
|
||||
|
||||
if (csr != value)
|
||||
csr |= FlushMask;
|
||||
_mm_setcsr(csr);
|
||||
}
|
||||
|
||||
inline void disableFlushModeUnconditional()
|
||||
{
|
||||
csr &= ~FlushMask;
|
||||
_mm_setcsr(csr);
|
||||
}
|
||||
|
||||
inline void enableFlushMode()
|
||||
{
|
||||
if ((csr & FlushMask) != FlushMask) [[unlikely]]
|
||||
{
|
||||
_mm_setcsr(value);
|
||||
csr = value;
|
||||
csr |= FlushMask;
|
||||
_mm_setcsr(csr);
|
||||
}
|
||||
}
|
||||
|
||||
inline void disableFlushMode()
|
||||
{
|
||||
if ((csr & FlushMask) != 0) [[unlikely]]
|
||||
{
|
||||
csr &= ~FlushMask;
|
||||
_mm_setcsr(csr);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user