|
hi_force_inline static constexpr mask_type | to_mask (value_type a) noexcept |
|
hi_force_inline static constexpr signed_mask_type | to_signed_mask (value_type a) noexcept |
|
template<std::unsigned_integral M> |
hi_force_inline static constexpr value_type | to_value (M a) noexcept |
|
template<std::signed_integral M> |
hi_force_inline static constexpr value_type | to_value (M a) noexcept |
|
static hi_force_inline array_type | undefined () noexcept |
|
template<std::same_as< value_type >... Args>
requires (sizeof...(Args) == N) |
hi_force_inline static constexpr array_type | set (Args... args) noexcept |
|
hi_force_inline static constexpr array_type | set (value_type arg) noexcept |
|
hi_force_inline static constexpr array_type | set_zero () noexcept |
|
hi_force_inline static constexpr array_type | set_all_ones () noexcept |
|
hi_force_inline static constexpr array_type | set_one () noexcept |
|
hi_force_inline static constexpr array_type | broadcast (value_type a) noexcept |
|
hi_force_inline static constexpr array_type | broadcast (array_type a) noexcept |
|
template<size_t I> |
hi_force_inline static constexpr value_type | get (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | set_mask (size_t mask) noexcept |
| Set each element to all ones or all zero based on the bits of the mask.
|
|
hi_force_inline static constexpr size_t | get_mask (array_type a) noexcept |
| Get an integer mask where each bit in the mask corresponds with the top-bit of each element.
|
|
template<array_generic_convertible_to< value_type > O> |
hi_force_inline static constexpr array_type | convert (std::array< O, N > a) noexcept |
|
hi_force_inline static constexpr array_type | neg (array_type a) noexcept |
|
template<std::size_t Mask> |
hi_force_inline static constexpr array_type | neg_mask (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | inv (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | rcp (array_type a) noexcept |
|
static hi_force_inline array_type | sqrt (array_type a) noexcept |
|
static hi_force_inline array_type | rsqrt (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | abs (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | round (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | floor (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | ceil (array_type a) noexcept |
|
hi_force_inline static constexpr array_type | add (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | sub (array_type a, array_type b) noexcept |
|
template<std::size_t Mask> |
hi_force_inline static constexpr array_type | addsub_mask (array_type a, array_type b) noexcept |
| Add or subtract based on the mask.
|
|
hi_force_inline static constexpr array_type | mul (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | div (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | mod (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | eq (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | ne (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | lt (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | gt (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | le (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | ge (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr bool | test (array_type a, array_type b) noexcept |
| Test the two operands.
|
|
hi_force_inline static constexpr bool | all_equal (array_type a, array_type b) noexcept |
| Compare the two operands.
|
|
hi_force_inline static constexpr array_type | max (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | min (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | clamp (array_type v, array_type lo, array_type hi) noexcept |
|
hi_force_inline static constexpr array_type | _or (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | _and (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | _xor (array_type a, array_type b) noexcept |
|
hi_force_inline static constexpr array_type | andnot (array_type a, array_type b) noexcept |
| andnot of two operands
|
|
hi_force_inline static constexpr array_type | sll (array_type a, unsigned int b) noexcept |
|
hi_force_inline static constexpr array_type | srl (array_type a, unsigned int b) noexcept |
|
hi_force_inline static constexpr array_type | sra (array_type a, unsigned int b) noexcept |
|
hi_force_inline static constexpr array_type | hadd (array_type a, array_type b) noexcept |
| Add the elements of both operands pairwise and return the packed result.
|
|
hi_force_inline static constexpr array_type | hsub (array_type a, array_type b) noexcept |
|
template<size_t I, int First, int... Rest> |
hi_force_inline static constexpr void | _shuffle (array_type &r, array_type a) noexcept |
|
template<size_t I, int First, int... Rest> |
static constexpr bool | _have_to_shuffle () noexcept |
|
template<int... Indices> |
hi_force_inline static constexpr array_type | shuffle (array_type a) noexcept |
|
template<size_t Mask> |
hi_force_inline static constexpr array_type | blend (array_type a, array_type b) noexcept |
|
template<std::derived_from< array_type >... Columns>
requires (sizeof...(Columns) == N) |
static constexpr std::array< array_type, N > | transpose (Columns... columns) noexcept |
|
template<size_t I, int Value, int First, int... Rest> |
static constexpr void | _make_swizzle_blend_mask (std::size_t &r) noexcept |
|
template<int Value, int... Indices> |
static constexpr std::size_t | _make_swizzle_blend_mask () noexcept |
|
template<int... Indices> |
hi_force_inline static constexpr array_type | swizzle (array_type a) noexcept |
| Swizzle elements.
|
|
hi_force_inline static constexpr array_type | sum (array_type a) noexcept |
|
template<size_t Mask> |
hi_force_inline static constexpr array_type | dot (array_type a, array_type b) noexcept |
|
template<size_t Mask> |
hi_force_inline static constexpr array_type | hypot (array_type a) noexcept |
|
template<size_t Mask> |
hi_force_inline static constexpr array_type | rhypot (array_type a) noexcept |
|
template<size_t Mask> |
hi_force_inline static constexpr array_type | normalize (array_type a) noexcept |
|
template<typename T,
std::size_t N>
struct hi::v1::array_generic< T, N >
Intrinsic operations on arrays.