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 - #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.
-
static constexpr bool
-
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<>
structfma3<avx>¶ - #include <xsimd_fma3_avx_register.hpp>
AVX + FMA instructions.
Inherits from xsimd::avx
- template <>
-
template<>
structfma3<avx2>¶ - #include <xsimd_fma3_avx2_register.hpp>
AVX2 + FMA instructions.
Inherits from xsimd::avx2
- template <>
-
template<>
structfma3<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
- #include <xsimd_arch.hpp>