mirror of
https://github.com/herumi/xbyak
synced 2024-11-20 16:06:14 -07:00
add detection of xsave
The XSAVE cpuid flag determines if the processor supports the XSAVE instructions(`xsave`, `xrestor`, `xsetbv`, `xgetbv`). The OSXSAVE cpuid flag determines if the _operating system_ has XSAVE **enabled**. Userland code has to use OSXSAVE for features such as AVX and AVX512 but it still matters to know if the processor itself supports it but not the operating system such as some virtual-machine contexts.
This commit is contained in:
parent
740dff2e86
commit
d700f6c357
2 changed files with 4 additions and 1 deletions
|
@ -36,7 +36,8 @@ void putCPUinfo(bool onlyCpuidFeature)
|
|||
{ Cpu::tE3DN, "e3dn" },
|
||||
{ Cpu::tAESNI, "aesni" },
|
||||
{ Cpu::tRDTSCP, "rdtscp" },
|
||||
{ Cpu::tOSXSAVE, "osxsave(xgetvb)" },
|
||||
{ Cpu::tXSAVE, "xsave(xgetvb)" },
|
||||
{ Cpu::tOSXSAVE, "osxsave" },
|
||||
{ Cpu::tPCLMULQDQ, "pclmulqdq" },
|
||||
{ Cpu::tAVX, "avx" },
|
||||
{ Cpu::tFMA, "fma" },
|
||||
|
|
|
@ -458,6 +458,7 @@ public:
|
|||
XBYAK_DEFINE_TYPE(74, tPREFETCHITI);
|
||||
XBYAK_DEFINE_TYPE(75, tSERIALIZE);
|
||||
XBYAK_DEFINE_TYPE(76, tUINTR);
|
||||
XBYAK_DEFINE_TYPE(77, tXSAVE);
|
||||
|
||||
#undef XBYAK_SPLIT_ID
|
||||
#undef XBYAK_DEFINE_TYPE
|
||||
|
@ -526,6 +527,7 @@ public:
|
|||
if (ECX & (1U << 23)) type_ |= tPOPCNT;
|
||||
if (ECX & (1U << 25)) type_ |= tAESNI;
|
||||
if (ECX & (1U << 1)) type_ |= tPCLMULQDQ;
|
||||
if (ECX & (1U << 26)) type_ |= tXSAVE;
|
||||
if (ECX & (1U << 27)) type_ |= tOSXSAVE;
|
||||
if (ECX & (1U << 30)) type_ |= tRDRAND;
|
||||
if (ECX & (1U << 29)) type_ |= tF16C;
|
||||
|
|
Loading…
Reference in a new issue