Architecture manipulation

xsimd provides an high level description of the instruction sets it manipulates. The mentionned types are primarily used as template parameters for batch, and when interacting with xsimd::dispatch().

struct avx2 : public xsimd::avx
#include <xsimd_avx2_register.hpp>

AVX2 instructions.

Subclassed by xsimd::fma5

struct avx512bw : public xsimd::avx512dq
#include <xsimd_avx512bw_register.hpp>

AVX512BW instructions.

struct avx512cd : public xsimd::avx512f
#include <xsimd_avx512cd_register.hpp>

AVX512CD instrutions.

Subclassed by xsimd::avx512dq

struct avx512dq : public xsimd::avx512cd
#include <xsimd_avx512dq_register.hpp>

AVX512DQ instructions.

Subclassed by xsimd::avx512bw

struct avx512f : public xsimd::generic
#include <xsimd_avx512f_register.hpp>

AVX512F instructions.

Subclassed by xsimd::avx512cd

struct avx : public xsimd::generic
#include <xsimd_avx_register.hpp>

AVX instructions.

Subclassed by xsimd::avx2

struct fma3 : public xsimd::sse4_2
#include <xsimd_fma3_register.hpp>

SSE4.2 + FMA instructions.

struct fma5 : public xsimd::avx2
#include <xsimd_fma5_register.hpp>

AVX2 + FMA instructions.

struct neon64 : public xsimd::neon
#include <xsimd_neon64_register.hpp>

NEON instructions for arm64.

struct neon : public xsimd::generic
#include <xsimd_neon_register.hpp>

NEON instructions for arm32.

Subclassed by xsimd::neon64

struct sse2 : public xsimd::generic
#include <xsimd_sse2_register.hpp>

SSE2 instructions.

Subclassed by xsimd::sse3

struct sse3 : public xsimd::sse2
#include <xsimd_sse3_register.hpp>

SSE3 instructions.

Subclassed by xsimd::ssse3

struct sse4_1 : public xsimd::ssse3
#include <xsimd_sse4_1_register.hpp>

SSE4.1 instructions.

Subclassed by xsimd::sse4_2

struct sse4_2 : public xsimd::sse4_1
#include <xsimd_sse4_2_register.hpp>

SSE4.2 instructions.

Subclassed by xsimd::fma3

struct ssse3 : public xsimd::sse3
#include <xsimd_ssse3_register.hpp>

SSSE3 instructions.

Subclassed by xsimd::sse4_1