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().

The best available architecture is available at compile time through xsimd::best_arch which also happens to be xsimd::default_arch.

group architectures
struct unavailable
#include <xsimd_arch.hpp>

Dummy architectures that only appears in a list of architecture when no other architecture has been detected.

struct generic
#include <xsimd_generic_arch.hpp>

Base class for all architectures.

Subclassed by xsimd::avx, xsimd::avx512f, xsimd::detail::sve< Width >, xsimd::neon, xsimd::sse2

Public Static Functions

static constexpr bool supported()

Whether this architecture is supported at compile-time.

static constexpr bool available()

Whether this architecture is available at run-time.

static constexpr std::size_t alignment()

If this architectures supports aligned memory accesses, the required alignment.

static constexpr bool requires_alignment()

Whether this architecture requires aligned memory access.

static constexpr unsigned version()

Unique identifier for this architecture.

static constexpr char const *name()

Name of the architecture.

struct avx2
#include <xsimd_avx2_register.hpp>

AVX2 instructions.

Inherits from xsimd::avx

Subclassed by xsimd::fma3< avx2 >

struct avx512bw
#include <xsimd_avx512bw_register.hpp>

AVX512BW instructions.

Inherits from xsimd::avx512dq

struct avx512cd
#include <xsimd_avx512cd_register.hpp>

AVX512CD instructions.

Inherits from xsimd::avx512f

Subclassed by xsimd::avx512dq

struct avx512dq
#include <xsimd_avx512dq_register.hpp>

AVX512DQ instructions.

Inherits from xsimd::avx512cd

Subclassed by xsimd::avx512bw

struct avx512f
#include <xsimd_avx512f_register.hpp>

AVX512F instructions.

Inherits from xsimd::generic

Subclassed by xsimd::avx512cd

struct avx
#include <xsimd_avx_register.hpp>

AVX instructions.

Inherits from xsimd::generic

Subclassed by xsimd::avx2, xsimd::fma3< avx >

template <>
template<>
struct fma3<avx>
#include <xsimd_fma3_avx_register.hpp>

AVX + FMA instructions.

Inherits from xsimd::avx

template <>
template<>
struct fma3<avx2>
#include <xsimd_fma3_avx2_register.hpp>

AVX2 + FMA instructions.

Inherits from xsimd::avx2

template <>
template<>
struct fma3<sse4_2>
#include <xsimd_fma3_sse_register.hpp>

SSE4.2 + FMA instructions.

Inherits from xsimd::sse4_2

struct fma4
#include <xsimd_fma4_register.hpp>

SSE4.2 + FMA4 instructions.

Inherits from xsimd::sse4_2

struct neon64
#include <xsimd_neon64_register.hpp>

NEON instructions for arm64.

Inherits from xsimd::neon

struct neon
#include <xsimd_neon_register.hpp>

NEON instructions for arm32.

Inherits from xsimd::generic

Subclassed by xsimd::neon64

struct sse2
#include <xsimd_sse2_register.hpp>

SSE2 instructions.

Inherits from xsimd::generic

Subclassed by xsimd::sse3

struct sse3
#include <xsimd_sse3_register.hpp>

SSE3 instructions.

Inherits from xsimd::sse2

Subclassed by xsimd::ssse3

struct sse4_1
#include <xsimd_sse4_1_register.hpp>

SSE4.1 instructions.

Inherits from xsimd::ssse3

Subclassed by xsimd::sse4_2

struct sse4_2
#include <xsimd_sse4_2_register.hpp>

SSE4.2 instructions.

Inherits from xsimd::sse4_1

Subclassed by xsimd::fma3< sse4_2 >, xsimd::fma4

struct ssse3
#include <xsimd_ssse3_register.hpp>

SSSE3 instructions.

Inherits from xsimd::sse3

Subclassed by xsimd::sse4_1

template <size_t Width>
struct sve
#include <xsimd_sve_register.hpp>

SVE instructions (fixed vector size) for arm64.

Inherits from xsimd::generic