48 lines
1.2 KiB
Diff
48 lines
1.2 KiB
Diff
Origin: https://github.com/dolphin-emu/dolphin/commit/2ab51c73c6e384b55ac8b95891bcecc455fae0da.patch
|
|
Subject: [PATCH] intrinsics: stop defining _xgetbv/_XCR_XFEATURE_ENABLED_MASK,
|
|
which are reserved
|
|
|
|
---
|
|
--- Source/Core/Common/x64CPUDetect.cpp 2016-06-24 10:09:07.000000000 +0200
|
|
+++ - 2018-08-19 19:43:35.737800299 +0200
|
|
@@ -41,15 +41,27 @@
|
|
return __cpuidex(info, function_id, 0);
|
|
}
|
|
|
|
-#define _XCR_XFEATURE_ENABLED_MASK 0
|
|
-static u64 _xgetbv(u32 index)
|
|
+#endif // ifndef _WIN32
|
|
+
|
|
+#ifdef _WIN32
|
|
+
|
|
+static u64 xgetbv(u32 index)
|
|
+{
|
|
+ return _xgetbv(index);
|
|
+}
|
|
+constexpr u32 XCR_XFEATURE_ENABLED_MASK = _XCR_XFEATURE_ENABLED_MASK;
|
|
+
|
|
+#else
|
|
+
|
|
+static u64 xgetbv(u32 index)
|
|
{
|
|
u32 eax, edx;
|
|
__asm__ __volatile__("xgetbv" : "=a"(eax), "=d"(edx) : "c"(index));
|
|
return ((u64)edx << 32) | eax;
|
|
}
|
|
+constexpr u32 XCR_XFEATURE_ENABLED_MASK = 0;
|
|
+#endif // ifdef _WIN32
|
|
|
|
-#endif // ifndef _WIN32
|
|
|
|
CPUInfo cpu_info;
|
|
|
|
@@ -134,7 +146,7 @@
|
|
// - XGETBV result has the XCR bit set.
|
|
if (((cpu_id[2] >> 28) & 1) && ((cpu_id[2] >> 27) & 1))
|
|
{
|
|
- if ((_xgetbv(_XCR_XFEATURE_ENABLED_MASK) & 0x6) == 0x6)
|
|
+ if ((xgetbv(XCR_XFEATURE_ENABLED_MASK) & 0x6) == 0x6)
|
|
{
|
|
bAVX = true;
|
|
if ((cpu_id[2] >> 12) & 1)
|