[x64] Add kX64EmitAVX512VBMI feature-flag and detection

Allows access to byte-element 2-register permutations(32-byte look up
tables) and for 64-bit multi-shifts.
Particularly adding this to accelerate the assembly of our `PERMUTE`
opcode.
This commit is contained in:
Wunkolo 2022-02-04 22:51:17 -08:00 committed by Rick Gibbed
parent d73088e5ca
commit f207239349
3 changed files with 4 additions and 0 deletions

View file

@ -42,6 +42,7 @@ DEFINE_int32(x64_extension_mask, -1,
" 512 = AVX512VL\n" " 512 = AVX512VL\n"
" 1024 = AVX512BW\n" " 1024 = AVX512BW\n"
" 2048 = AVX512DQ\n" " 2048 = AVX512DQ\n"
" 4096 = AVX512VBMI\n"
" -1 = Detect and utilize all possible processor features\n", " -1 = Detect and utilize all possible processor features\n",
"x64"); "x64");

View file

@ -98,6 +98,7 @@ X64Emitter::X64Emitter(X64Backend* backend, XbyakAllocator* allocator)
TEST_EMIT_FEATURE(kX64EmitAVX512VL, Xbyak::util::Cpu::tAVX512VL); TEST_EMIT_FEATURE(kX64EmitAVX512VL, Xbyak::util::Cpu::tAVX512VL);
TEST_EMIT_FEATURE(kX64EmitAVX512BW, Xbyak::util::Cpu::tAVX512BW); TEST_EMIT_FEATURE(kX64EmitAVX512BW, Xbyak::util::Cpu::tAVX512BW);
TEST_EMIT_FEATURE(kX64EmitAVX512DQ, Xbyak::util::Cpu::tAVX512DQ); TEST_EMIT_FEATURE(kX64EmitAVX512DQ, Xbyak::util::Cpu::tAVX512DQ);
TEST_EMIT_FEATURE(kX64EmitAVX512VBMI, Xbyak::util::Cpu::tAVX512_VBMI);
#undef TEST_EMIT_FEATURE #undef TEST_EMIT_FEATURE
} }

View file

@ -140,6 +140,8 @@ enum X64EmitterFeatureFlags {
kX64EmitAVX512BW = 1 << 10, kX64EmitAVX512BW = 1 << 10,
kX64EmitAVX512DQ = 1 << 11, kX64EmitAVX512DQ = 1 << 11,
kX64EmitAVX512VBMI = 1 << 12,
kX64EmitAVX512Ortho = kX64EmitAVX512F | kX64EmitAVX512VL, kX64EmitAVX512Ortho = kX64EmitAVX512F | kX64EmitAVX512VL,
kX64EmitAVX512Ortho64 = kX64EmitAVX512Ortho | kX64EmitAVX512DQ kX64EmitAVX512Ortho64 = kX64EmitAVX512Ortho | kX64EmitAVX512DQ
}; };