18 static constexpr
size_t size = 1;
47 template <
typename F,
typename M>
48 static inline void storeu([[maybe_unused]] F* memory, [[maybe_unused]] M value) {}
55 template <
typename F,
typename M>
56 static inline void store([[maybe_unused]] F* memory, [[maybe_unused]] M value) {}
64 static F
load([[maybe_unused]]
const F* memory) {
74 static F
loadu([[maybe_unused]]
const F* memory) {
84 static F
set([[maybe_unused]] F value) {
104 template <
typename M>
105 static M
add([[maybe_unused]] M lhs, [[maybe_unused]] M rhs) {
115 template <
typename M>
116 static M
sub([[maybe_unused]] M lhs, [[maybe_unused]] M rhs) {
127 template <
typename M>
128 static M
fmadd([[maybe_unused]] M a, [[maybe_unused]] M b, [[maybe_unused]] M c) {
138 template <
typename M>
139 static M
mul([[maybe_unused]] M lhs, [[maybe_unused]] M rhs) {
149 template <
typename M>
150 static M
div([[maybe_unused]] M lhs, [[maybe_unused]] M rhs) {
160 template <
typename M>
161 static M
max([[maybe_unused]] M lhs, [[maybe_unused]] M rhs) {
171 template <
typename M>
172 static M
min([[maybe_unused]] M lhs, [[maybe_unused]] M rhs) {
181 template <
typename M>
182 static M
sqrt([[maybe_unused]] M value) {
191 template <
typename M>
192 static M
minus([[maybe_unused]] M value) {
199 template <
typename M>
200 static M
hadd([[maybe_unused]] M value) {
207 template <
typename T>
static M minus([[maybe_unused]] M value)
Compute the negative value of the input.
Definition: no_vectorization.hpp:192
static M sqrt([[maybe_unused]] M value)
Vector square root.
Definition: no_vectorization.hpp:182
static M mul([[maybe_unused]] M lhs, [[maybe_unused]] M rhs)
Vector multiplication or lhs and rhs.
Definition: no_vectorization.hpp:139
Define traits to get vectorization information for types when no vector mode is available.
Definition: no_vectorization.hpp:16
static M min([[maybe_unused]] M lhs, [[maybe_unused]] M rhs)
Vector minimum or lhs and rhs.
Definition: no_vectorization.hpp:172
static F round_up([[maybe_unused]] F x)
Create a vector containing the rounded up values.
Definition: no_vectorization.hpp:94
static constexpr size_t alignment
Necessary number of bytes of alignment for this type.
Definition: no_vectorization.hpp:19
static M div([[maybe_unused]] M lhs, [[maybe_unused]] M rhs)
Vector division or lhs and rhs.
Definition: no_vectorization.hpp:150
static M fmadd([[maybe_unused]] M a, [[maybe_unused]] M b, [[maybe_unused]] M c)
Vector multiplication of a and b and add the result to c.
Definition: no_vectorization.hpp:128
Root namespace for the ETL library.
Definition: adapter.hpp:15
static F load([[maybe_unused]] const F *memory)
Aligned load a vector from memory.
Definition: no_vectorization.hpp:64
static void store([[maybe_unused]] F *memory, [[maybe_unused]] M value)
Aligned store value to memory.
Definition: no_vectorization.hpp:56
static constexpr size_t size
Numbers of elements done at once.
Definition: no_vectorization.hpp:18
static F loadu([[maybe_unused]] const F *memory)
Unaligned load a vector from memory.
Definition: no_vectorization.hpp:74
T intrinsic_type
The intrinsic type.
Definition: no_vectorization.hpp:21
static M add([[maybe_unused]] M lhs, [[maybe_unused]] M rhs)
Vector addition or lhs and rhs.
Definition: no_vectorization.hpp:105
static M max([[maybe_unused]] M lhs, [[maybe_unused]] M rhs)
Vector maximum or lhs and rhs.
Definition: no_vectorization.hpp:161
static T zero()
Return a vector type filled with zeroes of the correct type.
Definition: no_vectorization.hpp:208
static M sub([[maybe_unused]] M lhs, [[maybe_unused]] M rhs)
Vector subtraction or lhs and rhs.
Definition: no_vectorization.hpp:116
static constexpr bool vectorizable
Boolean flag indicating if the type is vectorizable or not.
Definition: no_vectorization.hpp:17
static M hadd([[maybe_unused]] M value)
Perform an horizontal sum of the given vector.
Definition: no_vectorization.hpp:200
typename traits< T >::intrinsic_type vec_type
The vector type for this vectorization implementation.
Definition: no_vectorization.hpp:40
Vectorization support when no vectorization is enabled.
Definition: no_vectorization.hpp:29
static void storeu([[maybe_unused]] F *memory, [[maybe_unused]] M value)
Unaligned store value to memory.
Definition: no_vectorization.hpp:48