summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/x64CPUDetect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Src/x64CPUDetect.cpp')
-rw-r--r--Source/Core/Common/Src/x64CPUDetect.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/Source/Core/Common/Src/x64CPUDetect.cpp b/Source/Core/Common/Src/x64CPUDetect.cpp
index 182cca5224..d6f36eb142 100644
--- a/Source/Core/Common/Src/x64CPUDetect.cpp
+++ b/Source/Core/Common/Src/x64CPUDetect.cpp
@@ -162,6 +162,7 @@ void CPUInfo::Detect()
if ((cpu_id[2] >> 20) & 1) bSSE4_2 = true;
if ((cpu_id[2] >> 25) & 1) bAES = true;
+ // To check DAZ support, we first need to check FXSAVE support.
if ((cpu_id[3] >> 24) & 1)
{
// We can use FXSAVE.
@@ -181,7 +182,12 @@ void CPUInfo::Detect()
// lowest byte of MXCSR_MASK
if ((fx_state[0x1C] >> 6) & 1)
- bDAZ = true;
+ {
+ // On x86, the FTZ field (supported since SSE1) only flushes denormal _outputs_ to zero,
+ // now that we checked DAZ support (flushing denormal _inputs_ to zero),
+ // we can set our generic flag.
+ bFlushToZero = true;
+ }
}
// AVX support requires 3 separate checks: