std::datapar::basic_simd, std::datapar::simd
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Numerics library
Mathematical special functions (C++17)
Mathematical constants (C++20)
Basic linear algebra algorithms (C++26)
Data-parallel types (SIMD) (C++26)
Floating-point environment (C++11)
Bit manipulation (C++20)
Saturation arithmetic (C++26)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
Data-parallel types (SIMD)
basic_simdsimd
std::datapar::basic_simd
Defined in header
<simd>
template< class T, class Abi = /*native-abi*/<T> >
class basic_simd;
(1)
(since C++26)
class basic_simd;
template< class T, /*simd-size-type*/ N = /*simd-size-v*/<T, /*native-abi*/<T>> >
using simd = basic_simd<T, /*deduce-abi-t*/<T, N>>;
(2)
(since C++26)
using simd = basic_simd<T, /*deduce-abi-t*/<T, N>>;
1)
std::datapar::basic_simd
specialization is a data-parallel type. The default ABI tag is determined by the implementation at compile-time.2)
std::datapar::simd
is an alias template that allows users to specify the width to a certain size. The default width is determined by the implementation at compile-time.Every specialization of basic_simd
is a complete type. The specialization is
- enabled, if
T
is a vectorizable type, and there exists valueM
in the range[
1,
64]
such thatAbi
is deduce-abi-t <T, M>, - otherwise disabled, if
T
is not a vectorizable type, - otherwise, it is implementation-defined if such specialization is enabled.
If basic_simd<T, Abi> is disabled, the specialization has all deleted default constructor, destructor, copy constructor, and copy assignment. In addition, only the member types below are present.
If basic_simd<T, Abi> is enabled, basic_simd<T, Abi> is TriviallyCopyable.
Contents
[edit] Template parameters
T
-
element type; a vectorizable type
Abi
-
tag type used to determine the width and storage
N
-
the width of the data-parallel type; the number of elements
[edit] Member types
Type
Definition
value_type
T
mask_type
datapar::basic_simd_mask<sizeof(T), Abi>
abi_type
Abi
[edit] Member constant
Name
Description
constexpr std::integral_constant <
simd-size-type
,
simd-size-v
<T, Abi>> size[static]
basic_simd
(public static member constant)
[edit] Member functions
[edit] Non-member functions
[edit] Deduction guide
template< class R, class... Ts >
basic_simd( R&& r, Ts... ) -> /* see below */;
(since C++26)
basic_simd( R&& r, Ts... ) -> /* see below */;
The deduction guide is present only if:
-
R
modelscontiguous_range
andsized_range
, and - ranges::size (r) is a constant expression.
The deduced type is equivalent to datapar::simd<ranges::range_value_t <R>, ranges::size (r)>.
[edit] Notes
Implementations are recommended to support explicit conversions between enabled specializations of basic_simd
and appropriate implementation-defined types. These appropriate types are non-standard vector types which are available in the implementation.
[edit] Example
This section is incomplete
Reason: no example
Reason: no example
[edit] See also
(C++26)
basic_simd_mask
that can specify its width(alias template)[edit]