Store each element of a given SIMD value vin different memory address computed form a base SIMD compatible iterator ptr and a SIMD integral value idx used as indexes.
A call to eve::scatter(v,ptr,idx) is semantically equivalent to:
for(std::size_t i=0;i<v.size();++i)
ptr[
idx.get(i)] = v.get(i);
typename decltype(detail::as_translated_type(as< T >{}))::type translate_t
Returns the final translated type of T.
Definition translation.hpp:107
#include <eve/module/core.hpp>
{
template<simd_value T, integral_simd_value Idx, simd_compatible_ptr<T> Ptr>
requires(T::size() == Idx::size())
}
constexpr auto scatter
Store a SIMD register to memory using scattered indexes.
Definition scatter.hpp:90
EVE Main Namespace.
Definition abi.hpp:19
Parameters
eve::scatter can be masked using Relative conditionals to skip scattering of certain elements.
The call eve::scatter[cond](v,p,i) is semantically equivalent to:
for(std::size_t
n=0;
n<v.size();++
n)
{
}
constexpr auto write
Callable object writing a scalar value to memory.
Definition write.hpp:78
Lightweight type-wrapper.
Definition as.hpp:29
#include <eve/module/core.hpp>
#include <iostream>
{
std::cout << "\n";
}
static constexpr size_type size() noexcept
Size of the wide in number of lanes.
Definition wide.hpp:443