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.
2 files changed
tree: 5b20886455e0529ca322697d54018d419545bc19
  1. .github/
  2. cmake/
  3. doc/
  4. gen/
  5. sample/
  6. test/
  7. xbyak/
  8. .gitignore
  9. Android.bp
  10. CMakeLists.txt
  12. Makefile
  15. readme.txt
  16. xbyak.sln

Xbyak 6.69 Badge Build

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.


  • header file only
  • Intel/MASM like syntax
  • fully support AVX-512

Note: Use and_(), or_(), ... instead of and(), or(). If you want to use them, then specify -fno-operator-names option to gcc/clang.


  • add amx_fp16/avx_vnni_int8/avx_ne_convert/avx-ifma
  • add movdiri, movdir64b, clwb, cldemote
  • WAITPKG instructions (tpause, umonitor, umwait) are supported.
  • MmapAllocator supports memfd with user-defined strings. see sample/memfd.cpp
  • strictly check address offset disp32 in a signed 32-bit integer. e.g., ptr[(void*)0xffffffff] causes an error.
    • define XBYAK_OLD_DISP_CHECK if you need an old check, but the option will be remoevd.
  • add jmp(mem, T_FAR), call(mem, T_FAR) retf() for far absolute indirect jump.
  • vnni instructions such as vpdpbusd supports vex encoding.
  • (break backward compatibility) push(byte, imm) (resp. push(word, imm)) forces to cast imm to 8(resp. 16) bit.
  • (Windows) #include <winsock2.h> has been removed from xbyak.h, so add it explicitly if you need it.
  • support exception-less mode see. Exception-less mode
  • XBYAK_USE_MMAP_ALLOCATOR will be defined on Linux/macOS unless XBYAK_DONT_USE_MMAP_ALLOCATOR is defined.

Supported OS

  • Windows (Xp, Vista, 7, 10, 11) (32 / 64 bit)
  • Linux (32 / 64 bit)
  • macOS (Intel CPU)

Supported Compilers

Almost C++03 or later compilers for x86/x64 such as Visual Studio, g++, clang++, Intel C++ compiler and g++ on mingw/cygwin.


BSD-3-Clause License


光成滋生 Mitsunari Shigeo

GitHub | Website (Japanese) |

Sponsors welcome

GitHub Sponsor