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>