E.V.E
v2023.02.15
Loading...
Searching...
No Matches
◆
load
eve::load = functor<
load_t
>
inline
constexpr
Header file
#include <eve/module/core.hpp>
Callable Signatures
namespace
eve
{
// Regular overloads
template
<detail::data_source Ptr>
wide_value_type_t<Ptr>
load
(
Ptr
ptr)
const
noexcept
;
// 1
template
<detail::data_source Ptr, std::ptrdiff_t N>
as_wide_t<value_type_t<Ptr>
,
fixed<N>
>
load
(
Ptr
ptr,
fixed<N>
)
const
noexcept
;
// 1
template
<detail::data_source Ptr, arithmetic_simd_value W
id
e>
requires
std::same_as<value_type_t<Ptr>,
element_type_t<Wide>
>
Wide
load
(
Ptr
ptr,
as<Wide>
tgt
)
const
noexcept
;
// 1
template<detail::data_source Ptr, logical_simd_value Wide>
(
sizeof
(
value_type_t<Ptr>
) ==
sizeof
(
element_type_t<Wide>
))
Wide
load
(
Ptr
ptr,
as<Wide>
tgt
)
const
noexcept
;
// 1
// Conditional overloads
auto
load
[
relative_conditional_expr
c
](
/* any non-iterator version of the above overloads */
)
const
noexcept
;
// 2
// Semantic options
auto
load
[unsafe](
/* any non-iterator version of the above overloads */
)
const
noexcept
;
// 3
}
eve::relative_conditional_expr
Specifies that a type is a Conditional Expression using relative mask.
Definition
conditional.hpp:52
eve::load
constexpr auto load
Loads data from a pointer or a pair of iterators into a SIMD value.
Definition
load.hpp:71
eve::translate_t
typename decltype(detail::as_translated_type(as< T >{}))::type translate_t
Returns the final translated type of T.
Definition
translation.hpp:107
eve
EVE Main Namespace.
Definition
abi.hpp:19
Parameters
ptr
: A data source referencing the data to load.
c
: A
relative conditional expression
that determines which elements to load.
Return value
A
SIMD value
containing the element referenced by the data source or the iterators.
Same as 1., but elements whose corresponding condition mask lane evaluates to
false
are left undefined.
Same as 1., but uses as scalar version of the operation if a sanitizer is enabled.
Note
and 3. may be sub-optimal for non-contiguous iterators.
Example
#include <eve/eve.hpp>
#include <iostream>
#include <vector>
#include <list>
int
main
()
{
std::array<double, 16>
doubles
= {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f};
std::cout <<
eve::load
(
doubles
.data() + 3) <<
"\n"
;
std::vector<float>
vec
= {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
std::cout <<
eve::load
(
vec
.data(),
eve::as
<
eve::wide
<
float
,
eve::fixed<4>
>>{}) <<
"\n"
;
std::list<float>
lst
= {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
std::cout <<
eve::load
(
lst
.begin(),
eve::lane<8>
) <<
"\n"
;
int
arr
[8] = {2, 4, 6, 8, 10, 12, 14, 16};
std::cout <<
eve::load
[
eve::keep_between
(2, 5).
else_
(-99)](
arr
,
eve::lane<8>
) <<
"\n"
;
}
eve::as
Lightweight type-wrapper.
Definition
as.hpp:29
eve::keep_between::else_
constexpr auto else_(V const &v) const
Extends a conditional expression with an alternative value.
Definition
conditional.hpp:549
eve::keep_between
Conditional expression keeping all lanes between two position.
Definition
conditional.hpp:528
eve::wide
Wrapper for SIMD registers.
Definition
wide.hpp:94
eve