commit | 1b2e7c7da230e3d35e949f3baf058f709751f14b | [log] [tgz] |
---|---|---|
author | Wunkolo <Wunkolo@gmail.com> | Wed Jun 15 14:02:49 2022 -0700 |
committer | Wunkolo <Wunkolo@gmail.com> | Wed Jun 15 14:02:56 2022 -0700 |
tree | e22f7b2b52276ca482e151e9ad4faf701467dd76 | |
parent | 913099fc80e80f01fc0877c6016b9dd8cf1f0322 [diff] |
Fix detection of `GFNI`,`VAES`, and `VPCLMULQDQ` Previously these CPUID flags were only tested when the host supported AVX512. Before: ``` % sde64 -adl -- ./test_util64 64bit vendor intel mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe avx_vnni waitpkg clflushopt cldemote movdiri movdir64b popcnt ok family=6, model=A, stepping=0, extFamily=0, extModel=9 display:family=6, model=9A cache level=0 data cache size=32768 cores sharing data cache=1 cache level=1 data cache size=1048576 cores sharing data cache=1 cache level=2 data cache size=14417920 cores sharing data cache=1 SmtLevel =2 CoreLevel=1 ``` After: ``` % sde64 -adl -- ./test_util64 64bit vendor intel mmx mmx2 cmov sse sse2 sse3 ssse3 sse41 sse42 popcnt aesni rdtscp osxsave(xgetvb) pclmulqdq avx fma avx2 bmi1 bmi2 lzcnt prefetchw enh_rep rdrand adx rdseed smap sha f16c movbe gfni vaes vpclmulqdq avx_vnni waitpkg clflushopt cldemote movdiri movdir64b popcnt ok family=6, model=A, stepping=0, extFamily=0, extModel=9 display:family=6, model=9A cache level=0 data cache size=32768 cores sharing data cache=1 cache level=1 data cache size=1048576 cores sharing data cache=1 cache level=2 data cache size=14417920 cores sharing data cache=1 SmtLevel =2 CoreLevel=1 ```
A C++ JIT assembler for x86 (IA32), x64 (AMD64, x86-64)
Xbyak is a C++ header library that enables dynamically to assemble x86(IA32), x64(AMD64, x86-64) mnemonic.
The pronunciation of Xbyak is kəi-bja-k
. It is named from a Japanese word 開闢, which means the beginning of the world.
Note: Use and_()
, or_()
, ... instead of and()
, or()
. If you want to use them, then specify -fno-operator-names
option to gcc/clang.
ptr[(void*)0xffffffff]
causes an error.XBYAK_OLD_DISP_CHECK
if you need an old check, but the option will be remoevd.jmp(mem, T_FAR)
, call(mem, T_FAR)
retf()
for far absolute indirect jump.push(byte, imm)
(resp. push(word, imm)
) forces to cast imm
to 8(resp. 16) bit.#include <winsock2.h>
has been removed from xbyak.h, so add it explicitly if you need it.XBYAK_USE_MMAP_ALLOCATOR
will be defined on Linux/macOS unless XBYAK_DONT_USE_MMAP_ALLOCATOR
is defined.Almost C++03 or later compilers for x86/x64 such as Visual Studio, g++, clang++, Intel C++ compiler and g++ on mingw/cygwin.
GitHub | Website (Japanese) | herumi@nifty.com