intrinsics: stop defining _xgetbv/_XCR_XFEATURE_ENABLED_MASK, which are reserved
This commit is contained in:
parent
1ec3a4db6c
commit
823fdda30c
|
@ -37,15 +37,26 @@ static inline void __cpuid(int info[4], int function_id)
|
||||||
return __cpuidex(info, function_id, 0);
|
return __cpuidex(info, function_id, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define _XCR_XFEATURE_ENABLED_MASK 0
|
#endif // ifndef _WIN32
|
||||||
static u64 _xgetbv(u32 index)
|
|
||||||
|
#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;
|
u32 eax, edx;
|
||||||
__asm__ __volatile__("xgetbv" : "=a"(eax), "=d"(edx) : "c"(index));
|
__asm__ __volatile__("xgetbv" : "=a"(eax), "=d"(edx) : "c"(index));
|
||||||
return ((u64)edx << 32) | eax;
|
return ((u64)edx << 32) | eax;
|
||||||
}
|
}
|
||||||
|
constexpr u32 XCR_XFEATURE_ENABLED_MASK = 0;
|
||||||
#endif // ifndef _WIN32
|
#endif // ifdef _WIN32
|
||||||
|
|
||||||
CPUInfo cpu_info;
|
CPUInfo cpu_info;
|
||||||
|
|
||||||
|
@ -139,7 +150,7 @@ void CPUInfo::Detect()
|
||||||
// - XGETBV result has the XCR bit set.
|
// - XGETBV result has the XCR bit set.
|
||||||
if (((cpu_id[2] >> 28) & 1) && ((cpu_id[2] >> 27) & 1))
|
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;
|
bAVX = true;
|
||||||
if ((cpu_id[2] >> 12) & 1)
|
if ((cpu_id[2] >> 12) & 1)
|
||||||
|
|
Loading…
Reference in New Issue