a JIT assembler for x86(IA-32)/x64(AMD64, x86-64) MMX/SSE/SSE2/SSE3/SSSE3/SSE4/FPU/AVX/AVX2/AVX-512 by C++ header
Go to file
Wunkolo ab3f40587b Allow constexpr TypeT operator|
This allows for a compile-time alias of multiple CPU flag types:

```
Xbyak::util::Cpu host_caps;
...
using namespace Xbyak::util;

static constexpr auto AVX512Ortho = Cpu::tAVX512F | Cpu::tAVX512VL;
static constexpr auto AVX512OrthoFloat = AVX512Ortho | Cpu::tAVX512DQ;

if (host_caps.has(AVX512Ortho))
{
    ...
}
```
2023-06-25 14:57:09 -07:00
.github ci: use containers 2022-12-02 15:10:35 +01:00
cmake build(meson): fix CMake Config file include dir 2021-10-10 21:30:09 +02:00
doc Update changelog.md 2023-05-16 02:48:16 +09:00
gen add senduipi/stui/testui/uiret 2023-02-20 14:07:43 +09:00
sample add detection of xsave 2023-03-22 17:40:34 -07:00
test add senduipi/stui/testui/uiret 2023-02-20 14:07:43 +09:00
xbyak Allow constexpr TypeT operator| 2023-06-25 14:57:09 -07:00
.gitignore support slightly more modern cmake 2020-11-19 18:27:05 -08:00
Android.bp Changes to compile xbyak project for openvino 2022-09-09 10:56:19 +09:00
CMakeLists.txt v6.69.1 2023-03-23 14:28:34 +09:00
COPYRIGHT delete the sentences translated into Japanese from COPYRIGHT 2021-10-07 10:41:53 +09:00
Makefile Possibility to specify a different PREFIX 2020-04-08 09:26:15 +01:00
meson.build v6.69.1 2023-03-23 14:28:34 +09:00
readme.md v6.69.1 2023-03-23 14:28:34 +09:00
readme.txt v6.69.1 2023-03-23 14:28:34 +09:00
xbyak.sln remove *.user and *.vcproj 2019-09-16 21:47:19 +09:00

Xbyak 6.69.1 Badge Build

A C++ JIT assembler for x86 (IA32), x64 (AMD64, x86-64)

Menu

Abstract

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.

Feature

  • 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.

News

  • 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.

License

BSD-3-Clause License

Author

光成滋生Mitsunari Shigeo

GitHub|Website (Japanese)|herumi@nifty.com

Sponsors welcome

GitHub Sponsor