diff --git a/sample/test_util.cpp b/sample/test_util.cpp index 66869ee..f88c265 100644 --- a/sample/test_util.cpp +++ b/sample/test_util.cpp @@ -105,6 +105,8 @@ void putCPUinfo(bool onlyCpuidFeature) { Cpu::tAVX_VNNI_INT16, "avx_vnni_int16" }, { Cpu::tAPX_F, "apx_f" }, { Cpu::tAVX10, "avx10" }, + { Cpu::tAESKLE, "aeskle" }, + { Cpu::tWIDE_KL, "wide_kl" }, }; for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) { if (cpu.has(tbl[i].type)) printf(" %s", tbl[i].str); diff --git a/xbyak/xbyak_util.h b/xbyak/xbyak_util.h index 200a903..da6c277 100644 --- a/xbyak/xbyak_util.h +++ b/xbyak/xbyak_util.h @@ -473,6 +473,8 @@ public: XBYAK_DEFINE_TYPE(81, tAVX_VNNI_INT16); XBYAK_DEFINE_TYPE(82, tAPX_F); XBYAK_DEFINE_TYPE(83, tAVX10); + XBYAK_DEFINE_TYPE(84, tAESKLE); + XBYAK_DEFINE_TYPE(84, tWIDE_KL); #undef XBYAK_SPLIT_ID #undef XBYAK_DEFINE_TYPE @@ -635,6 +637,11 @@ public: if (EDX & (1U << 21)) type_ |= tAPX_F; } } + if (maxNum >= 0x19) { + getCpuidEx(0x19, 0, data); + if (EBX & (1U << 0)) type_ |= tAESKLE; + if (EBX & (1U << 2)) type_ |= tWIDE_KL; + } if (has(tAVX10) && maxNum >= 0x24) { getCpuidEx(0x24, 0, data); avx10version_ = EBX & mask(7);