Add CPU detection
This commit is contained in:
parent
a050d9bf1f
commit
bf8fced073
|
@ -210,7 +210,7 @@ FPU::FPU ()
|
||||||
if ((cpu_info[2] & (1<<27)) /* OSXSAVE */ &&
|
if ((cpu_info[2] & (1<<27)) /* OSXSAVE */ &&
|
||||||
(cpu_info[2] & (1<<28) /* AVX */) &&
|
(cpu_info[2] & (1<<28) /* AVX */) &&
|
||||||
((_xgetbv (_XCR_XFEATURE_ENABLED_MASK) & 0x6) == 0x6)) { /* OS really supports XSAVE */
|
((_xgetbv (_XCR_XFEATURE_ENABLED_MASK) & 0x6) == 0x6)) { /* OS really supports XSAVE */
|
||||||
info << _("AVX-capable processor") << endmsg;
|
info << _("AVX capable processor") << endmsg;
|
||||||
_flags = Flags (_flags | (HasAVX));
|
_flags = Flags (_flags | (HasAVX));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,6 +219,11 @@ FPU::FPU ()
|
||||||
_flags = Flags (_flags | (HasFMA));
|
_flags = Flags (_flags | (HasFMA));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cpu_info[2] & (1<<16) /* AVX512F */) {
|
||||||
|
info << _("AVX512F capable processor") << endmsg;
|
||||||
|
_flags = Flags (_flags | (HasAVX512F));
|
||||||
|
}
|
||||||
|
|
||||||
if (cpu_info[3] & (1<<25)) {
|
if (cpu_info[3] & (1<<25)) {
|
||||||
_flags = Flags (_flags | (HasSSE|HasFlushToZero));
|
_flags = Flags (_flags | (HasSSE|HasFlushToZero));
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ class LIBPBD_API FPU {
|
||||||
HasAVX = 0x10,
|
HasAVX = 0x10,
|
||||||
HasNEON = 0x20,
|
HasNEON = 0x20,
|
||||||
HasFMA = 0x40,
|
HasFMA = 0x40,
|
||||||
|
HasAVX512F = 0x80,
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -47,6 +48,7 @@ class LIBPBD_API FPU {
|
||||||
bool has_sse () const { return _flags & HasSSE; }
|
bool has_sse () const { return _flags & HasSSE; }
|
||||||
bool has_sse2 () const { return _flags & HasSSE2; }
|
bool has_sse2 () const { return _flags & HasSSE2; }
|
||||||
bool has_avx () const { return _flags & HasAVX; }
|
bool has_avx () const { return _flags & HasAVX; }
|
||||||
|
bool has_avx512f () const { return _flags & HasAVX512F; }
|
||||||
bool has_fma() const { return _flags & HasFMA; }
|
bool has_fma() const { return _flags & HasFMA; }
|
||||||
bool has_neon () const { return _flags & HasNEON; }
|
bool has_neon () const { return _flags & HasNEON; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user