Grok 12.0.1
Classes | Namespaces | Macros | Typedefs | Functions | Variables
arm_neon-inl.h File Reference
#include "hwy/ops/shared-inl.h"
#include <arm_neon.h>
#include "hwy/ops/tuple-inl.h"

Go to the source code of this file.

Classes

struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< uint64_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< int64_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< float32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< float32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< uint64_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< int64_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< float32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< float32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< uint64_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< int64_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< float32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< float32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint64_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int8_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int32_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int64_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< float16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< float16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< float16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< bfloat16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< bfloat16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< bfloat16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< bfloat16_t, N >
 
class  hwy::HWY_NAMESPACE::Vec128< T, N >
 
struct  hwy::HWY_NAMESPACE::Mask128< T, N >
 
struct  hwy::HWY_NAMESPACE::detail::Vec64ValsWrapper< T >
 
struct  hwy::HWY_NAMESPACE::detail::ShiftLeftBytesT< kBytes >
 
struct  hwy::HWY_NAMESPACE::detail::ShiftLeftBytesT< 0 >
 
struct  hwy::HWY_NAMESPACE::detail::ShiftLeftBytesT< 0xFF >
 
struct  hwy::HWY_NAMESPACE::detail::ShiftRightBytesT< kBytes >
 
struct  hwy::HWY_NAMESPACE::detail::ShiftRightBytesT< 0 >
 
struct  hwy::HWY_NAMESPACE::detail::ShiftRightBytesT< 0xFF >
 
struct  hwy::HWY_NAMESPACE::Indices128< T, N >
 
struct  hwy::HWY_NAMESPACE::CompressIsPartition< T >
 

Namespaces

namespace  hwy
 
namespace  hwy::HWY_NAMESPACE
 
namespace  hwy::HWY_NAMESPACE::detail
 

Macros

#define HWY_NEON_BUILD_TPL_1
 
#define HWY_NEON_BUILD_TPL_2
 
#define HWY_NEON_BUILD_TPL_3
 
#define HWY_NEON_BUILD_RET_1(type, size)   Vec128<type##_t, size>
 
#define HWY_NEON_BUILD_RET_2(type, size)   Vec128<type##_t, size>
 
#define HWY_NEON_BUILD_RET_3(type, size)   Vec128<type##_t, size>
 
#define HWY_NEON_BUILD_PARAM_1(type, size)   const Vec128<type##_t, size> a
 
#define HWY_NEON_BUILD_PARAM_2(type, size)    const Vec128<type##_t, size> a, const Vec128<type##_t, size> b
 
#define HWY_NEON_BUILD_PARAM_3(type, size)
 
#define HWY_NEON_BUILD_ARG_1   a.raw
 
#define HWY_NEON_BUILD_ARG_2   a.raw, b.raw
 
#define HWY_NEON_BUILD_ARG_3   a.raw, b.raw, c.raw
 
#define HWY_NEON_EVAL(func, ...)   func(__VA_ARGS__)
 
#define HWY_NEON_DEF_FUNCTION(type, size, name, prefix, infix, suffix, args)
 
#define HWY_NEON_DEF_FUNCTION_UINT_8(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_INT_8(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UINT_16(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_INT_16(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UINT_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_INT_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UINT_64(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_INT_64(name, prefix, infix, args)
 
#define HWY_NEON_HAVE_BFLOAT16   0
 
#define HWY_NEON_HAVE_F32_TO_BF16C   0
 
#define HWY_NEON_DEF_FUNCTION_BFLOAT_16(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FLOAT_16_UNCONDITIONAL(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FLOAT_16(name, prefix, infix, args)
 
#define HWY_NEON_IF_EMULATED_D(D)   HWY_IF_SPECIAL_FLOAT_D(D)
 
#define HWY_NEON_DEF_FUNCTION_FLOAT_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FLOAT_64(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UINT_8_16_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_INT_8_16_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UINTS(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_INTS(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_INTS_UINTS(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FLOAT_16_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_ALL_FLOATS(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_ALL_TYPES(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UI_8_16_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UIF_8_16_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UIF_64(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FULL_UI_64(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FULL_UIF_64(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FULL_UI(name, prefix, infix, args)
 
#define HWY_NEON_BUILD_TPL_HWY_SET
 
#define HWY_NEON_BUILD_RET_HWY_SET(type, size)   Vec128<type##_t, size>
 
#define HWY_NEON_BUILD_PARAM_HWY_SET(type, size)    Simd<type##_t, size, 0> /* tag */, type##_t t
 
#define HWY_NEON_BUILD_ARG_HWY_SET   t
 
#define HWY_NEON_BUILD_TPL_HWY_CAST_TO_U8
 
#define HWY_NEON_BUILD_RET_HWY_CAST_TO_U8(type, size)    Vec128<uint8_t, size * sizeof(type##_t)>
 
#define HWY_NEON_BUILD_PARAM_HWY_CAST_TO_U8(type, size)   Vec128<type##_t, size> v
 
#define HWY_NEON_BUILD_ARG_HWY_CAST_TO_U8   v.raw
 
#define HWY_NEON_BUILD_TPL_HWY_GET   template <size_t kLane>
 
#define HWY_NEON_BUILD_RET_HWY_GET(type, size)   type##_t
 
#define HWY_NEON_BUILD_PARAM_HWY_GET(type, size)   Vec128<type##_t, size> v
 
#define HWY_NEON_BUILD_ARG_HWY_GET   v.raw, kLane
 
#define HWY_NEON_BUILD_TPL_HWY_INSERT   template <size_t kLane>
 
#define HWY_NEON_BUILD_RET_HWY_INSERT(type, size)   Vec128<type##_t, size>
 
#define HWY_NEON_BUILD_PARAM_HWY_INSERT(type, size)    Vec128<type##_t, size> v, type##_t t
 
#define HWY_NEON_BUILD_ARG_HWY_INSERT   t, v.raw, kLane
 
#define HWY_NATIVE_I32_SATURATED_ADDSUB
 
#define HWY_NATIVE_U32_SATURATED_ADDSUB
 
#define HWY_NATIVE_I64_SATURATED_ADDSUB
 
#define HWY_NATIVE_U64_SATURATED_ADDSUB
 
#define HWY_NATIVE_SATURATED_NEG_8_16_32
 
#define HWY_NEON_DEF_FUNCTION(type, size, name, prefix, infix, suffix, args)
 
#define HWY_NATIVE_MUL_8
 
#define HWY_NATIVE_INTEGER_ABS_DIFF
 
#define HWY_NATIVE_INT_FMA
 
#define HWY_NATIVE_BITWISE_IF_THEN_ELSE
 
#define HWY_NATIVE_POPCNT
 
#define HWY_NATIVE_SATURATED_ABS
 
#define HWY_NEON_BUILD_TPL_HWY_IF
 
#define HWY_NEON_BUILD_RET_HWY_IF(type, size)   Vec128<type##_t, size>
 
#define HWY_NEON_BUILD_PARAM_HWY_IF(type, size)
 
#define HWY_NEON_BUILD_ARG_HWY_IF   mask.raw, yes.raw, no.raw
 
#define HWY_NEON_IF_EMULATED_IF_THEN_ELSE(V)   HWY_IF_SPECIAL_FLOAT_V(V)
 
#define HWY_NEON_BUILD_TPL_HWY_COMPARE
 
#define HWY_NEON_BUILD_RET_HWY_COMPARE(type, size)   Mask128<type##_t, size>
 
#define HWY_NEON_BUILD_PARAM_HWY_COMPARE(type, size)    const Vec128<type##_t, size> a, const Vec128<type##_t, size> b
 
#define HWY_NEON_BUILD_ARG_HWY_COMPARE   a.raw, b.raw
 
#define HWY_NEON_DEF_FUNCTION(type, size, name, prefix, infix, suffix, args)
 
#define HWY_NEON_BUILD_TPL_HWY_TESTBIT
 
#define HWY_NEON_BUILD_RET_HWY_TESTBIT(type, size)   Mask128<type##_t, size>
 
#define HWY_NEON_BUILD_PARAM_HWY_TESTBIT(type, size)    Vec128<type##_t, size> v, Vec128<type##_t, size> bit
 
#define HWY_NEON_BUILD_ARG_HWY_TESTBIT   v.raw, bit.raw
 
#define HWY_NATIVE_F32_TO_UI64_PROMOTE_IN_RANGE_TO
 
#define HWY_NATIVE_REVERSE2_8
 
#define HWY_NATIVE_I16_SATWIDENMULACCUMFIXEDPOINT
 
#define HWY_NEON_BUILD_TPL_HWY_TRN
 
#define HWY_NEON_BUILD_RET_HWY_TRN(type, size)   type##x##size##x2_t
 
#define HWY_NEON_BUILD_PARAM_HWY_TRN(TYPE, size)    Raw128<TYPE##_t, size>::type a, Raw128<TYPE##_t, size>::type b
 
#define HWY_NEON_BUILD_ARG_HWY_TRN   a, b
 
#define HWY_NATIVE_AES
 
#define HWY_IF_SUM_OF_LANES_D(D)
 
#define HWY_IF_MINMAX_OF_LANES_D(D)
 
#define HWY_NEON_BUILD_TYPE_T(type, size)   type##x##size##_t
 
#define HWY_NEON_DEF_PAIRWISE_REDUCTION(type, size, name, prefix, suffix)
 
#define HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(type, size, half, name, prefix, suffix)
 
#define HWY_NEON_DEF_PAIRWISE_REDUCTIONS(name, prefix)
 
#define HWY_NATIVE_REDUCE_SUM_4_UI8
 
#define HWY_NATIVE_LOAD_STORE_INTERLEAVED
 
#define HWY_NEON_BUILD_TPL_HWY_LOAD_INT
 
#define HWY_NEON_BUILD_ARG_HWY_LOAD_INT   from
 
#define HWY_IF_LOAD_INT(D)
 
#define HWY_NEON_DEF_FUNCTION_LOAD_INT(name, prefix, infix, args)
 
#define HWY_NEON_BUILD_RET_HWY_LOAD_INT(type, size)    decltype(Tuple2<type##_t, size>().raw)
 
#define HWY_NEON_BUILD_PARAM_HWY_LOAD_INT(type, size)    const NativeLaneType<type##_t>*from, Tuple2<type##_t, size>
 
#define HWY_NEON_BUILD_RET_HWY_LOAD_INT(type, size)    decltype(Tuple3<type##_t, size>().raw)
 
#define HWY_NEON_BUILD_PARAM_HWY_LOAD_INT(type, size)    const NativeLaneType<type##_t>*from, Tuple3<type##_t, size>
 
#define HWY_NEON_BUILD_RET_HWY_LOAD_INT(type, size)    decltype(Tuple4<type##_t, size>().raw)
 
#define HWY_NEON_BUILD_PARAM_HWY_LOAD_INT(type, size)    const NativeLaneType<type##_t>*from, Tuple4<type##_t, size>
 
#define HWY_NEON_BUILD_TPL_HWY_STORE_INT
 
#define HWY_NEON_BUILD_RET_HWY_STORE_INT(type, size)   void
 
#define HWY_NEON_BUILD_ARG_HWY_STORE_INT   to, tup.raw
 
#define HWY_IF_STORE_INT(D)
 
#define HWY_NEON_DEF_FUNCTION_STORE_INT(name, prefix, infix, args)
 
#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT(type, size)    Tuple2<type##_t, size> tup, NativeLaneType<type##_t>*to
 
#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT(type, size)    Tuple3<type##_t, size> tup, NativeLaneType<type##_t>*to
 
#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT(type, size)    Tuple4<type##_t, size> tup, NativeLaneType<type##_t>*to
 
#define HWY_NATIVE_LEADING_ZERO_COUNT
 

Typedefs

template<typename T >
using hwy::HWY_NAMESPACE::Vec64 = Vec128<T, 8 / sizeof(T)>
 
template<typename T >
using hwy::HWY_NAMESPACE::Vec32 = Vec128<T, 4 / sizeof(T)>
 
template<typename T >
using hwy::HWY_NAMESPACE::Vec16 = Vec128<T, 2 / sizeof(T)>
 
template<typename T >
using hwy::HWY_NAMESPACE::Mask64 = Mask128<T, 8 / sizeof(T)>
 
template<class V >
using hwy::HWY_NAMESPACE::DFromV = Simd<typename V::PrivateT, V::kPrivateN, 0>
 
template<class M >
using hwy::HWY_NAMESPACE::DFromM = Simd<typename M::PrivateT, M::kPrivateN, 0>
 
template<class V >
using hwy::HWY_NAMESPACE::TFromV = typename V::PrivateT
 
template<class D >
using hwy::HWY_NAMESPACE::VFromD = decltype(Set(D(), TFromD<D>()))
 
template<class D >
using hwy::HWY_NAMESPACE::MFromD = decltype(MaskFromVec(VFromD<D>()))
 

Functions

 HWY_BEFORE_NAMESPACE ()
 
template<class D , HWY_NEON_IF_EMULATED_D(D) >
HWY_API Vec128< TFromD< D >, MaxLanes(D())> hwy::HWY_NAMESPACE::detail::NativeSet (D d, TFromD< D > t)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , typename T >
HWY_INLINE Vec128< TFromD< D > > hwy::HWY_NAMESPACE::Set (D, T t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , typename T >
HWY_API Vec128< TFromD< D >, MaxLanes(D())> hwy::HWY_NAMESPACE::Set (D, T t)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Zero (D d)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Undefined (D)
 
template<class D , HWY_IF_UI8_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D > t4, TFromD< D > t5, TFromD< D > t6, TFromD< D > t7, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >)
 
template<class D , HWY_IF_UI16_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >)
 
template<class D , HWY_IF_UI32_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D >, TFromD< D >)
 
template<class D , HWY_IF_T_SIZE_D(D, 8) , HWY_IF_V_SIZE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D >)
 
template<class D , HWY_IF_BF16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D > t4, TFromD< D > t5, TFromD< D > t6, TFromD< D > t7)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Iota0 (D d)
 
template<class D , typename T2 >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Iota (D d, const T2 first)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< uint8_t > hi, Vec64< uint8_t > lo)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< uint16_t > hi, Vec64< uint16_t > lo)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< uint32_t > hi, Vec64< uint32_t > lo)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< uint64_t > hi, Vec64< uint64_t > lo)
 
template<class D , HWY_IF_I8_D(D) >
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< int8_t > hi, Vec64< int8_t > lo)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< int16_t > hi, Vec64< int16_t > lo)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< int32_t > hi, Vec64< int32_t > lo)
 
template<class D , HWY_IF_I64_D(D) >
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Combine (D, Vec64< int64_t > hi, Vec64< int64_t > lo)
 
template<class D , class DH = Half<D>, HWY_NEON_IF_EMULATED_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Combine (D d, VFromD< DH > hi, VFromD< DH > lo)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Combine (D, Vec64< float > hi, Vec64< float > lo)
 
template<size_t N>
HWY_INLINE Vec128< uint8_t, N > hwy::HWY_NAMESPACE::detail::BitCastToByte (Vec128< uint8_t, N > v)
 
 hwy::HWY_NAMESPACE::detail::HWY_NEON_DEF_FUNCTION_ALL_FLOATS (BitCastToByte, vreinterpret, _u8_, HWY_CAST_TO_U8) HWY_NEON_DEF_FUNCTION_BFLOAT_16(BitCastToByte
 
template<size_t N>
HWY_CAST_TO_U8 HWY_INLINE Vec128< uint8_t, N *2 > hwy::HWY_NAMESPACE::detail::BitCastToByte (Vec128< float16_t, N > v)
 
template<size_t N>
HWY_INLINE Vec128< uint8_t, N *2 > hwy::HWY_NAMESPACE::detail::BitCastToByte (Vec128< bfloat16_t, N > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I8_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, VFromD< RebindToUnsigned< D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U16_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, VFromD< Repartition< uint8_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U64_D(D) >
HWY_INLINE Vec64< uint64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec64< uint8_t > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I64_D(D) >
HWY_INLINE Vec64< int64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec64< uint8_t > v)
 
template<class D , HWY_IF_I8_D(D) >
HWY_INLINE Vec128< int8_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_INLINE Vec128< uint16_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_I16_D(D) >
HWY_INLINE Vec128< int16_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_INLINE Vec128< uint32_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_INLINE Vec128< int32_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_U64_D(D) >
HWY_INLINE Vec128< uint64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_I64_D(D) >
HWY_INLINE Vec128< int64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_INLINE Vec128< float > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_F16_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t > v)
 
template<class D , class FromT >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::BitCast (D d, Vec128< FromT, Repartition< FromT, D >().MaxLanes()> v)
 
template<class D , class FromV , HWY_IF_V_SIZE_LE_V(FromV, 8) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ResizeBitCast (D d, FromV v)
 
template<size_t kLane, class V , HWY_NEON_IF_EMULATED_D(DFromV< V >) >
static HWY_INLINE HWY_MAYBE_UNUSED TFromV< V > hwy::HWY_NAMESPACE::detail::GetLane (V v)
 
template<class V >
HWY_API TFromV< V > hwy::HWY_NAMESPACE::GetLane (const V v)
 
template<typename T >
HWY_APIhwy::HWY_NAMESPACE::ExtractLane (const Vec128< T, 1 > v, size_t i)
 
template<typename T >
HWY_APIhwy::HWY_NAMESPACE::ExtractLane (const Vec128< T, 2 > v, size_t i)
 
template<typename T >
HWY_APIhwy::HWY_NAMESPACE::ExtractLane (const Vec128< T, 4 > v, size_t i)
 
template<typename T >
HWY_APIhwy::HWY_NAMESPACE::ExtractLane (const Vec128< T, 8 > v, size_t i)
 
template<typename T >
HWY_APIhwy::HWY_NAMESPACE::ExtractLane (const Vec128< T, 16 > v, size_t i)
 
template<size_t kLane, class V , class D = DFromV<V>, HWY_NEON_IF_EMULATED_D(D) >
HWY_APIhwy::HWY_NAMESPACE::detail::InsertLane (const V v, TFromD< D > t)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 1 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 2 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 4 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 4 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 8 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 8 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 16 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 16 > v, size_t i, T t)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::SumsOf8 (const Vec128< uint8_t > v)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::SumsOf8 (const Vec64< uint8_t > v)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::SumsOf8 (const Vec128< int8_t > v)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::SumsOf8 (const Vec64< int8_t > v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::SignedTag, hwy::SizeTag< 1 >, V v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::UnsignedTag, hwy::SizeTag< 1 >, V v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::SignedTag, hwy::SizeTag< 2 >, V v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::UnsignedTag, hwy::SizeTag< 2 >, V v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::SignedTag, hwy::SizeTag< 4 >, V v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::UnsignedTag, hwy::SizeTag< 4 >, V v)
 
template<size_t N>
HWY_API Vec128< float16_t, N > hwy::HWY_NAMESPACE::Neg (const Vec128< float16_t, N > v)
 
template<size_t N>
HWY_API Vec128< bfloat16_t, N > hwy::HWY_NAMESPACE::Neg (const Vec128< bfloat16_t, N > v)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::Neg (const Vec64< int64_t > v)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Neg (const Vec128< int64_t > v)
 
template<int kBits, typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::RotateRight (const Vec128< T, N > v)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::operator<< (Vec128< uint8_t > v, Vec128< uint8_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint8_t, N, 8) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::operator<< (Vec128< uint8_t, N > v, Vec128< uint8_t, N > bits)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::operator<< (Vec128< uint16_t > v, Vec128< uint16_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint16_t, N, 8) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::operator<< (Vec128< uint16_t, N > v, Vec128< uint16_t, N > bits)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::operator<< (Vec128< uint32_t > v, Vec128< uint32_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint32_t, N, 8) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator<< (Vec128< uint32_t, N > v, Vec128< uint32_t, N > bits)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::operator<< (Vec128< uint64_t > v, Vec128< uint64_t > bits)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::operator<< (Vec64< uint64_t > v, Vec64< uint64_t > bits)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::operator<< (Vec128< int8_t > v, Vec128< int8_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(int8_t, N, 8) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::operator<< (Vec128< int8_t, N > v, Vec128< int8_t, N > bits)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::operator<< (Vec128< int16_t > v, Vec128< int16_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(int16_t, N, 8) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::operator<< (Vec128< int16_t, N > v, Vec128< int16_t, N > bits)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::operator<< (Vec128< int32_t > v, Vec128< int32_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(int32_t, N, 8) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator<< (Vec128< int32_t, N > v, Vec128< int32_t, N > bits)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::operator<< (Vec128< int64_t > v, Vec128< int64_t > bits)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::operator<< (Vec64< int64_t > v, Vec64< int64_t > bits)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::operator>> (Vec128< uint8_t > v, Vec128< uint8_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint8_t, N, 8) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< uint8_t, N > v, Vec128< uint8_t, N > bits)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::operator>> (Vec128< uint16_t > v, Vec128< uint16_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint16_t, N, 8) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< uint16_t, N > v, Vec128< uint16_t, N > bits)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::operator>> (Vec128< uint32_t > v, Vec128< uint32_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint32_t, N, 8) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< uint32_t, N > v, Vec128< uint32_t, N > bits)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::operator>> (Vec128< uint64_t > v, Vec128< uint64_t > bits)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::operator>> (Vec64< uint64_t > v, Vec64< uint64_t > bits)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::operator>> (Vec128< int8_t > v, Vec128< int8_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(int8_t, N, 8) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< int8_t, N > v, Vec128< int8_t, N > bits)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::operator>> (Vec128< int16_t > v, Vec128< int16_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(int16_t, N, 8) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< int16_t, N > v, Vec128< int16_t, N > bits)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::operator>> (Vec128< int32_t > v, Vec128< int32_t > bits)
 
template<size_t N, HWY_IF_V_SIZE_LE(int32_t, N, 8) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< int32_t, N > v, Vec128< int32_t, N > bits)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::operator>> (Vec128< int64_t > v, Vec128< int64_t > bits)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::operator>> (Vec64< int64_t > v, Vec64< int64_t > bits)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec128< T, N > v, int bits)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec128< T, N > v, int bits)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::MulHigh (Vec128< int8_t > a, Vec128< int8_t > b)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::MulHigh (Vec128< uint8_t > a, Vec128< uint8_t > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(int8_t, N, 8) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< int8_t, N > a, Vec128< int8_t, N > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint8_t, N, 8) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::MulHigh (Vec128< int16_t > a, Vec128< int16_t > b)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::MulHigh (Vec128< uint16_t > a, Vec128< uint16_t > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(int16_t, N, 8) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint16_t, N, 8) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< uint16_t, N > a, Vec128< uint16_t, N > b)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::MulHigh (Vec128< int32_t > a, Vec128< int32_t > b)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::MulHigh (Vec128< uint32_t > a, Vec128< uint32_t > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(int32_t, N, 8) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint32_t, N, 8) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< uint32_t, N > a, Vec128< uint32_t, N > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::MulHigh (Vec128< T > a, Vec128< T > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::MulHigh (Vec64< T > a, Vec64< T > b)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec128< int16_t > a, Vec128< int16_t > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(int16_t, N, 8) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator/ (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT(T) , HWY_IF_NOT_T_SIZE(T, 8) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MulAdd (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > add)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT(T) , HWY_IF_NOT_T_SIZE(T, 8) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::NegMulAdd (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > add)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::detail::MulAdd (Vec128< float, N > add, Vec128< float, N > mul, Vec128< float, N > x)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::detail::NegMulAdd (Vec128< float, N > add, Vec128< float, N > mul, Vec128< float, N > x)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MulAdd (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > add)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::NegMulAdd (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > add)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MulSub (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > sub)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::NegMulSub (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > sub)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Sqrt (const Vec128< T, N > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Not (const Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Not (const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::And (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::AndNot (const Vec128< T, N > not_mask, const Vec128< T, N > mask)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Or (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Xor (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Xor3 (Vec128< T, N > x1, Vec128< T, N > x2, Vec128< T, N > x3)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Or3 (Vec128< T, N > o1, Vec128< T, N > o2, Vec128< T, N > o3)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::OrAnd (Vec128< T, N > o, Vec128< T, N > a1, Vec128< T, N > a2)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfVecThenElse (Vec128< T, N > mask, Vec128< T, N > yes, Vec128< T, N > no)
 
template<class V >
HWY_APIhwy::HWY_NAMESPACE::BitwiseIfThenElse (V mask, V yes, V no)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator& (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator| (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator^ (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::AbsDiff (const Vec128< int64_t, N > a, const Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::AbsDiff (const Vec128< uint64_t, N > a, const Vec128< uint64_t, N > b)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 1 >, Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 1 >, Vec128< T, N > v)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 2 >, Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 2 >, Vec128< T, N > v)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 4 >, Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 4 >, Vec128< T, N > v)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 8 >, Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 8 >, Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::PopulationCount (Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CopySign (Vec128< T, N > magn, Vec128< T, N > sign)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CopySignToAbs (Vec128< T, N > abs, Vec128< T, N > sign)
 
template<typename T , size_t N, HWY_IF_SIGNED(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::BroadcastSignBit (const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::MaskFromVec (const Vec128< T, N > v)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::VecFromMask (D d, const MFromD< D > m)
 
template<typename TFrom , size_t NFrom, class DTo >
HWY_API MFromD< DTo > hwy::HWY_NAMESPACE::RebindMask (DTo, Mask128< TFrom, NFrom > m)
 
template<class V , HWY_NEON_IF_EMULATED_IF_THEN_ELSE(V) >
HWY_APIhwy::HWY_NAMESPACE::IfThenElse (MFromD< DFromV< V > > mask, V yes, V no)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenElseZero (Mask128< T, N > mask, Vec128< T, N > yes)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenZeroElse (Mask128< T, N > mask, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfNegativeThenElse (Vec128< T, N > v, Vec128< T, N > yes, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::Not (const Mask128< T, N > m)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::And (const Mask128< T, N > a, Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::AndNot (const Mask128< T, N > a, Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::Or (const Mask128< T, N > a, Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::Xor (const Mask128< T, N > a, Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::ExclusiveNeither (const Mask128< T, N > a, Mask128< T, N > b)
 
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::Shuffle2301 (const Vec64< uint32_t > v)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::Shuffle2301 (const Vec64< int32_t > v)
 
HWY_API Vec64< float > hwy::HWY_NAMESPACE::Shuffle2301 (const Vec64< float > v)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Shuffle2301 (const Vec128< uint32_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Shuffle2301 (const Vec128< int32_t > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Shuffle2301 (const Vec128< float > v)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator> (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator>= (Vec128< T, N > a, Vec128< T, N > b)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::FirstN (D d, size_t num)
 
template<size_t N>
HWY_API Mask128< uint64_t, N > hwy::HWY_NAMESPACE::TestBit (Vec128< uint64_t, N > v, Vec128< uint64_t, N > bit)
 
template<size_t N>
HWY_API Mask128< int64_t, N > hwy::HWY_NAMESPACE::TestBit (Vec128< int64_t, N > v, Vec128< int64_t, N > bit)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Abs (const Vec128< int64_t > v)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::Abs (const Vec64< int64_t > v)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::SaturatedAbs (const Vec128< int64_t > v)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::SaturatedAbs (const Vec64< int64_t > v)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::Min (Vec128< uint64_t, N > a, Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::Min (Vec128< int64_t, N > a, Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::Max (Vec128< uint64_t, N > a, Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::Max (Vec128< int64_t, N > a, Vec128< int64_t, N > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U8_D(D) >
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::LoadU (D, const uint8_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U16_D(D) >
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::LoadU (D, const uint16_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::LoadU (D, const uint32_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U64_D(D) >
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::LoadU (D, const uint64_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I8_D(D) >
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::LoadU (D, const int8_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I16_D(D) >
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::LoadU (D, const int16_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::LoadU (D, const int32_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I64_D(D) >
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::LoadU (D, const int64_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API Vec128< float > hwy::HWY_NAMESPACE::LoadU (D, const float *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U8_D(D) >
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::LoadU (D, const uint8_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U16_D(D) >
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::LoadU (D, const uint16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::LoadU (D, const uint32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U64_D(D) >
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::LoadU (D, const uint64_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I8_D(D) >
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::LoadU (D, const int8_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I16_D(D) >
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::LoadU (D, const int16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I32_D(D) >
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::LoadU (D, const int32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I64_D(D) >
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::LoadU (D, const int64_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API Vec64< float > hwy::HWY_NAMESPACE::LoadU (D, const float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_U32_D(D) >
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::LoadU (D, const uint32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_I32_D(D) >
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::LoadU (D, const int32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_F32_D(D) >
HWY_API Vec32< float > hwy::HWY_NAMESPACE::LoadU (D, const float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_T_SIZE_LE_D(D, 2) , HWY_IF_NOT_SPECIAL_FLOAT_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_LANES_D(D, 1) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D, const uint16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_LANES_D(D, 1) , HWY_IF_I16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D, const int16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_LANES_D(D, 2) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_LANES_D(D, 1) , HWY_IF_U8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D, const uint8_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_LANES_D(D, 1) , HWY_IF_I8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D, const int8_t *HWY_RESTRICT p)
 
template<class D , HWY_NEON_IF_EMULATED_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Load (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoad (MFromD< D > m, D d, const TFromD< D > *HWY_RESTRICT aligned)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoadOr (VFromD< D > v, MFromD< D > m, D d, const TFromD< D > *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadDup128 (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U8_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< uint8_t > v, D, uint8_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U16_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< uint16_t > v, D, uint16_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< uint32_t > v, D, uint32_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< uint64_t > v, D, uint64_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I8_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< int8_t > v, D, int8_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I16_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< int16_t > v, D, int16_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< int32_t > v, D, int32_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< int64_t > v, D, int64_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< float > v, D, float *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U8_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< uint8_t > v, D, uint8_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U16_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< uint16_t > v, D, uint16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< uint32_t > v, D, uint32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< uint64_t > v, D, uint64_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I8_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< int8_t > v, D, int8_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I16_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< int16_t > v, D, int16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< int32_t > v, D, int32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< int64_t > v, D, int64_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec64< float > v, D, float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_U32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec32< uint32_t > v, D, uint32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_I32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec32< int32_t > v, D, int32_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec32< float > v, D, float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_T_SIZE_LE_D(D, 2) , HWY_IF_NOT_SPECIAL_FLOAT_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 2) , HWY_IF_U16_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec16< uint16_t > v, D, uint16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 2) , HWY_IF_I16_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec16< int16_t > v, D, int16_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 2) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 1) , HWY_IF_U8_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< uint8_t, 1 > v, D, uint8_t *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 1) , HWY_IF_I8_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< int8_t, 1 > v, D, int8_t *HWY_RESTRICT p)
 
template<class D , HWY_NEON_IF_EMULATED_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT p)
 
template<class D >
HWY_API void hwy::HWY_NAMESPACE::Store (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT aligned)
 
template<class D >
HWY_API void hwy::HWY_NAMESPACE::BlendedStore (VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT p)
 
template<class D >
HWY_API void hwy::HWY_NAMESPACE::Stream (const VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API Vec128< float > hwy::HWY_NAMESPACE::ConvertTo (D, Vec128< int32_t > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D, VFromD< RebindToSigned< D > > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API Vec128< float > hwy::HWY_NAMESPACE::ConvertTo (D, Vec128< uint32_t > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D, VFromD< RebindToUnsigned< D > > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I32_D(D) >
HWY_INLINE Vec128< int32_t > hwy::HWY_NAMESPACE::detail::ConvertFToI (D, Vec128< float > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I32_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::ConvertFToI (D, VFromD< RebindToFloat< D > > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U32_D(D) >
HWY_INLINE Vec128< uint32_t > hwy::HWY_NAMESPACE::detail::ConvertFToU (D, Vec128< float > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U32_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::ConvertFToU (D, VFromD< RebindToFloat< D > > v)
 
template<class D , HWY_IF_SIGNED_D(D) , HWY_IF_T_SIZE_ONE_OF_D( D,(1<< 4)|((HWY_ARCH_ARM_A64 &&HWY_HAVE_FLOAT16) ?(1<< 2) :0)|(HWY_HAVE_FLOAT64 ?(1<< 8) :0)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D di, VFromD< RebindToFloat< D > > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec64< uint8_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec32< uint8_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec64< uint16_t > v)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec64< uint32_t > v)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::PromoteTo (D d, Vec64< uint8_t > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (D d, Vec32< uint8_t > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (D d, Vec64< uint16_t > v)
 
template<class D , HWY_IF_I64_D(D) >
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::PromoteTo (D d, Vec64< uint32_t > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< uint8_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< uint16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , class V , HWY_IF_UI64_D(D) , HWY_IF_LANES_D(D, HWY_MAX_LANES_V(V)) , HWY_IF_UNSIGNED_V(V) , HWY_IF_T_SIZE_ONE_OF_V(V,(1<< 1)|(1<< 2)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D d, V v)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec64< int8_t > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec32< int8_t > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec64< int16_t > v)
 
template<class D , HWY_IF_I64_D(D) >
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::PromoteTo (D, Vec64< int32_t > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< int8_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< int16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< int32_t, D > > v)
 
template<class D , HWY_IF_I64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D di64, VFromD< Rebind< float, D > > v)
 
template<class D , HWY_IF_UI64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteInRangeTo (D d64, VFromD< Rebind< float, D > > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int32_t > v)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int32_t > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec32< uint8_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int32_t > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int16_t > v)
 
template<class D , HWY_IF_I8_D(D) >
HWY_API Vec32< int8_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int32_t > v)
 
template<class D , HWY_IF_I8_D(D) >
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int16_t > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< uint32_t > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec32< uint8_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< uint32_t > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< uint16_t > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< int32_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< int16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< uint16_t, D > > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int64_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< int64_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< uint64_t > v)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)) , HWY_IF_SIGNED_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D d, Vec128< int64_t > v)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)) , HWY_IF_UNSIGNED_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D d, Vec128< uint64_t > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec64< int64_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec64< int64_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::DemoteTo (D, Vec64< uint64_t > v)
 
template<class D , HWY_IF_SIGNED_D(D) , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D d, Vec64< int64_t > v)
 
template<class D , HWY_IF_LANES_D(D, 1) , HWY_IF_UNSIGNED_D(D) , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D d, Vec64< uint64_t > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D df32, VFromD< Rebind< int64_t, D > > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D df32, VFromD< Rebind< uint64_t, D > > v)
 
HWY_API Vec32< uint8_t > hwy::HWY_NAMESPACE::U8FromU32 (Vec128< uint32_t > v)
 
template<size_t N, HWY_IF_V_SIZE_LE(uint32_t, N, 8) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::U8FromU32 (Vec128< uint32_t, N > v)
 
template<size_t N>
HWY_INLINE Mask128< float, N > hwy::HWY_NAMESPACE::detail::UseInt (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Trunc (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Round (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Ceil (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Floor (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::NearestInt (const Vec128< float, N > v)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::IsNaN (const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_API Vec128< T, N/2 > hwy::HWY_NAMESPACE::LowerHalf (Vec128< T, N > v)
 
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< uint8_t > v)
 
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< uint16_t > v)
 
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< uint32_t > v)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< uint64_t > v)
 
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< int8_t > v)
 
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< int16_t > v)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< int32_t > v)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::LowerHalf (Vec128< int64_t > v)
 
HWY_API Vec64< float > hwy::HWY_NAMESPACE::LowerHalf (Vec128< float > v)
 
template<class V , HWY_NEON_IF_EMULATED_D(DFromV< V >) , HWY_IF_V_SIZE_V(V, 16) >
HWY_API VFromD< Half< DFromV< V > > > hwy::HWY_NAMESPACE::LowerHalf (V v)
 
template<class DH >
HWY_API VFromD< DH > hwy::HWY_NAMESPACE::LowerHalf (DH, VFromD< Twice< DH > > v)
 
template<int kBytes, class D , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::CombineShiftRightBytes (D d, Vec128< T > hi, Vec128< T > lo)
 
template<int kBytes, class D , typename T = TFromD<D>>
HWY_API Vec64< T > hwy::HWY_NAMESPACE::CombineShiftRightBytes (D d, Vec64< T > hi, Vec64< T > lo)
 
template<int kBytes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftLeftBytes (D d, VFromD< D > v)
 
template<int kBytes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftBytes (Vec128< T, N > v)
 
template<int kLanes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftLeftLanes (D d, VFromD< D > v)
 
template<int kLanes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftLanes (Vec128< T, N > v)
 
template<int kBytes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftRightBytes (D d, VFromD< D > v)
 
template<int kLanes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftRightLanes (D d, VFromD< D > v)
 
template<int kBytes, class D , HWY_IF_V_SIZE_LE_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::CombineShiftRightBytes (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< uint8_t > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< uint16_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< uint32_t > v)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< uint64_t > v)
 
template<class D , HWY_IF_I8_D(D) >
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< int8_t > v)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< int16_t > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< int32_t > v)
 
template<class D , HWY_IF_I64_D(D) >
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< int64_t > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API Vec64< float > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< float > v)
 
template<class D , HWY_NEON_IF_EMULATED_D(D) , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::UpperHalf (D dh, VFromD< Twice< D > > v)
 
template<class DH , HWY_IF_V_SIZE_LE_D(DH, 4) >
HWY_API VFromD< DH > hwy::HWY_NAMESPACE::UpperHalf (DH dh, VFromD< Twice< DH > > v)
 
template<int kLane, typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Broadcast (Vec128< T, 1 > v)
 
template<int kLane>
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< uint8_t > v)
 
template<int kLane, size_t N, HWY_IF_V_SIZE_LE(uint8_t, N, 8) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< uint8_t, N > v)
 
template<int kLane>
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< uint16_t > v)
 
template<int kLane, size_t N, HWY_IF_V_SIZE_LE(uint16_t, N, 8) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< uint16_t, N > v)
 
template<int kLane>
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< uint32_t > v)
 
template<int kLane, size_t N, HWY_IF_V_SIZE_LE(uint32_t, N, 8) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< uint32_t, N > v)
 
template<int kLane>
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< uint64_t > v)
 
template<int kLane>
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< int8_t > v)
 
template<int kLane, size_t N, HWY_IF_V_SIZE_LE(int8_t, N, 8) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< int8_t, N > v)
 
template<int kLane>
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< int16_t > v)
 
template<int kLane, size_t N, HWY_IF_V_SIZE_LE(int16_t, N, 8) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< int16_t, N > v)
 
template<int kLane>
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< int32_t > v)
 
template<int kLane, size_t N, HWY_IF_V_SIZE_LE(int32_t, N, 8) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< int32_t, N > v)
 
template<int kLane>
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Broadcast (Vec128< int64_t > v)
 
template<int kLane>
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Broadcast (Vec128< float > v)
 
template<int kLane, size_t N, HWY_IF_V_SIZE_LE(float, N, 8) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< float, N > v)
 
template<int kLane, typename V , HWY_NEON_IF_EMULATED_D(DFromV< V >) , HWY_IF_LANES_GT_D(DFromV< V >, 1) >
HWY_APIhwy::HWY_NAMESPACE::Broadcast (V v)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE VFromD< Repartition< uint8_t, D > > hwy::HWY_NAMESPACE::detail::IndicesFromVecBroadcastLaneBytes (D d)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE VFromD< Repartition< uint8_t, D > > hwy::HWY_NAMESPACE::detail::IndicesFromVecByteOffsets (D d)
 
template<class D , typename TI , HWY_IF_T_SIZE_D(D, 1) >
HWY_API Indices128< TFromD< D >, MaxLanes(D())> hwy::HWY_NAMESPACE::IndicesFromVec (D d, Vec128< TI, MaxLanes(D())> vec)
 
template<class D , typename TI >
HWY_API Indices128< TFromD< D >, MaxLanes(D())> hwy::HWY_NAMESPACE::SetTableIndices (D d, const TI *idx)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< T, N > v, Indices128< T, N > idx)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 4) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec128< T, N > a, Vec128< T, N > b, Indices128< T, N > idx)
 
template<typename T >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec64< T > a, Vec64< T > b, Indices128< T, 8/sizeof(T)> idx)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec128< T > a, Vec128< T > b, Indices128< T, 16/sizeof(T)> idx)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse2 (D d, VFromD< D > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse2 (D d, Vec128< T > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse2 (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse4 (D d, VFromD< D > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse4 (D d, Vec128< T > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse4 (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse8 (D d, VFromD< D > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse8 (D d, Vec128< T > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse8 (D d, VFromD< D > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 1) >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Reverse (D, Vec128< T, 1 > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 2) >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::Reverse (D d, Vec128< T, 2 > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 4) >
HWY_API Vec128< T, 4 > hwy::HWY_NAMESPACE::Reverse (D d, Vec128< T, 4 > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 8) >
HWY_API Vec128< T, 8 > hwy::HWY_NAMESPACE::Reverse (D d, Vec128< T, 8 > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 16) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse (D d, Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle1032 (Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle01 (Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle0321 (Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle2103 (Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle0123 (Vec128< T > v)
 
template<typename T , HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< T > a, Vec128< T > b)
 
template<size_t N, HWY_IF_V_SIZE_GT(float16_t, N, 4) >
HWY_API Vec128< float16_t, N > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< float16_t, N > a, Vec128< float16_t, N > b)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 4) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< T, N > a, Vec128< T, N > b)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveLower (D, VFromD< D > a, VFromD< D > b)
 
template<typename T , HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::detail::InterleaveUpper (Vec128< T > a, Vec128< T > b)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveUpper (D, VFromD< D > a, VFromD< D > b)
 
template<class V , class DW = RepartitionToWide<DFromV<V>>>
HWY_API VFromD< DW > hwy::HWY_NAMESPACE::ZipLower (V a, V b)
 
template<class V , class D = DFromV<V>, class DW = RepartitionToWide<D>>
HWY_API VFromD< DW > hwy::HWY_NAMESPACE::ZipLower (DW dw, V a, V b)
 
template<class V , class D = DFromV<V>, class DW = RepartitionToWide<D>>
HWY_API VFromD< DW > hwy::HWY_NAMESPACE::ZipUpper (DW dw, V a, V b)
 
template<size_t kLaneSize, size_t kVectSize, class V , HWY_IF_LANES_GT_D(DFromV< V >, 4) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< 0x88 >, hwy::SizeTag< kLaneSize >, hwy::SizeTag< kVectSize >, V v)
 
template<size_t kLaneSize, size_t kVectSize, class V , HWY_IF_LANES_GT_D(DFromV< V >, 4) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< 0xDD >, hwy::SizeTag< kLaneSize >, hwy::SizeTag< kVectSize >, V v)
 
template<class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< 0xFA >, hwy::SizeTag< 2 >, hwy::SizeTag< 8 >, V v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::SlideUpLanes (V v, size_t amt)
 
template<class D , HWY_IF_LANES_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideUpLanes (D, VFromD< D > v, size_t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_LANES_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideUpLanes (D d, VFromD< D > v, size_t amt)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::SlideDownLanes (V v, size_t amt)
 
template<class D , HWY_IF_LANES_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideDownLanes (D, VFromD< D > v, size_t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_LANES_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideDownLanes (D d, VFromD< D > v, size_t amt)
 
template<class DI32 , HWY_IF_I32_D(DI32) , HWY_IF_V_SIZE_D(DI32, 16) >
HWY_API VFromD< DI32 > hwy::HWY_NAMESPACE::SatWidenMulAccumFixedPoint (DI32, VFromD< Rebind< int16_t, DI32 > > a, VFromD< Rebind< int16_t, DI32 > > b, VFromD< DI32 > sum)
 
template<class D32 , HWY_IF_F32_D(D32) , class V16 = VFromD<Repartition<bfloat16_t, D32>>>
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D32 df32, V16 a, V16 b, const VFromD< D32 > sum0, VFromD< D32 > &sum1)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D, Vec128< int16_t > a, Vec128< int16_t > b, const Vec128< int32_t > sum0, Vec128< int32_t > &sum1)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D d32, Vec64< int16_t > a, Vec64< int16_t > b, const Vec64< int32_t > sum0, Vec64< int32_t > &sum1)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D d32, Vec32< int16_t > a, Vec32< int16_t > b, const Vec32< int32_t > sum0, Vec32< int32_t > &sum1)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D, Vec128< uint16_t > a, Vec128< uint16_t > b, const Vec128< uint32_t > sum0, Vec128< uint32_t > &sum1)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D d32, Vec64< uint16_t > a, Vec64< uint16_t > b, const Vec64< uint32_t > sum0, Vec64< uint32_t > &sum1)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D du32, Vec32< uint16_t > a, Vec32< uint16_t > b, const Vec32< uint32_t > sum0, Vec32< uint32_t > &sum1)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Combine (D d, VFromD< Half< D > > hi, VFromD< Half< D > > lo)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec128< float, N > sum0, Vec128< float, N > sum1)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec128< int32_t > sum0, Vec128< int32_t > sum1)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec64< int32_t > sum0, Vec64< int32_t > sum1)
 
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec32< int32_t > sum0, Vec32< int32_t > sum1)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec128< uint32_t > sum0, Vec128< uint32_t > sum1)
 
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec64< uint32_t > sum0, Vec64< uint32_t > sum1)
 
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec32< uint32_t > sum0, Vec32< uint32_t > sum1)
 
template<class D32 , HWY_IF_F32_D(D32) >
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D32 df32, VFromD< Repartition< bfloat16_t, D32 > > a, VFromD< Repartition< bfloat16_t, D32 > > b)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D, Vec128< int16_t > a, Vec128< int16_t > b)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D d32, Vec64< int16_t > a, Vec64< int16_t > b)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D d32, Vec32< int16_t > a, Vec32< int16_t > b)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D, Vec128< uint16_t > a, Vec128< uint16_t > b)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D d32, Vec64< uint16_t > a, Vec64< uint16_t > b)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D d32, Vec32< uint16_t > a, Vec32< uint16_t > b)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ZeroExtendVector (D d, VFromD< Half< D > > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatLowerLower (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatUpperUpper (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatLowerUpper (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatUpperLower (D d, VFromD< D > hi, VFromD< D > lo)
 
template<size_t N>
HWY_INLINE Vec128< float16_t, N > hwy::HWY_NAMESPACE::detail::ConcatEven (Vec128< float16_t, N > hi, Vec128< float16_t, N > lo)
 
template<size_t N>
HWY_INLINE Vec128< float16_t, N > hwy::HWY_NAMESPACE::detail::ConcatOdd (Vec128< float16_t, N > hi, Vec128< float16_t, N > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatOdd (D, VFromD< D > hi, VFromD< D > lo)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::ConcatOdd (D d, Vec32< T > hi, Vec32< T > lo)
 
template<class D , HWY_IF_LANES_D(D, 2) , typename T = TFromD<D>>
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::ConcatOdd (D d, Vec128< T, 2 > hi, Vec128< T, 2 > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatEven (D, VFromD< D > hi, VFromD< D > lo)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::ConcatEven (D d, Vec32< T > hi, Vec32< T > lo)
 
template<class D , HWY_IF_LANES_D(D, 2) , typename T = TFromD<D>>
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::ConcatEven (D d, Vec128< T, 2 > hi, Vec128< T, 2 > lo)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::DupEven (Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::DupOdd (Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::OddEven (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveEven (D, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveOdd (D, VFromD< D > a, VFromD< D > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::OddEvenBlocks (Vec128< T, N >, Vec128< T, N > even)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::SwapAdjacentBlocks (Vec128< T, N > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReverseBlocks (D, VFromD< D > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d32, Vec128< int64_t > a, Vec128< int64_t > b)
 
template<class D , HWY_IF_I32_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D d32, VFromD< Repartition< int64_t, D > > a, VFromD< Repartition< int64_t, D > > b)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d32, Vec128< int64_t > a, Vec128< int64_t > b)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d32, Vec128< uint64_t > a, Vec128< uint64_t > b)
 
template<class D , HWY_IF_U32_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D d32, VFromD< Repartition< uint64_t, D > > a, VFromD< Repartition< uint64_t, D > > b)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d16, Vec128< int32_t > a, Vec128< int32_t > b)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec64< int32_t > a, Vec64< int32_t > b)
 
template<class D , HWY_IF_I16_D(D) >
HWY_API Vec32< int16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec32< int32_t > a, Vec32< int32_t > b)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d16, Vec128< int32_t > a, Vec128< int32_t > b)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec64< int32_t > a, Vec64< int32_t > b)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec32< uint16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec32< int32_t > a, Vec32< int32_t > b)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d16, Vec128< uint32_t > a, Vec128< uint32_t > b)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec64< uint32_t > a, Vec64< uint32_t > b)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec32< uint16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec32< uint32_t > a, Vec32< uint32_t > b)
 
template<class D , HWY_IF_I8_D(D) >
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d8, Vec128< int16_t > a, Vec128< int16_t > b)
 
template<class D , HWY_IF_I8_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D d8, VFromD< Repartition< int16_t, D > > a, VFromD< Repartition< int16_t, D > > b)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d8, Vec128< int16_t > a, Vec128< int16_t > b)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::ReorderDemote2To (D d8, Vec128< uint16_t > a, Vec128< uint16_t > b)
 
template<class D , HWY_IF_U8_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D d8, VFromD< Repartition< uint16_t, D > > a, VFromD< Repartition< uint16_t, D > > b)
 
template<class D , class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(TFromD< D >) , HWY_IF_LANES_D(D, HWY_MAX_LANES_D(DFromV< V >) *2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::OrderedDemote2To (D d, V a, V b)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESRound (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESLastRound (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESInvMixColumns (Vec128< uint8_t > state)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESRoundInv (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESLastRoundInv (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::CLMulLower (Vec128< uint64_t > a, Vec128< uint64_t > b)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::CLMulUpper (Vec128< uint64_t > a, Vec128< uint64_t > b)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D df32, VFromD< Rebind< bfloat16_t, D > > v)
 
template<class DTo , typename TTo = TFromD<DTo>, typename TFrom , HWY_IF_UNSIGNED(TFrom) , HWY_IF_UNSIGNED(TTo) , hwy::EnableIf<(sizeof(TTo)< sizeof(TFrom))> * = nullptr>
HWY_API Vec128< TTo, 1 > hwy::HWY_NAMESPACE::TruncateTo (DTo, Vec128< TFrom, 1 > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec16< uint8_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec128< uint64_t > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec32< uint16_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec128< uint64_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec128< uint64_t > v)
 
template<class D , HWY_IF_U8_D(D) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::TruncateTo (D, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , HWY_IF_U8_D(D) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::TruncateTo (D, VFromD< Rebind< uint16_t, D > > v)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::MulEven (Vec128< int8_t > a, Vec128< int8_t > b)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::MulEven (Vec128< uint8_t > a, Vec128< uint8_t > b)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::MulEven (Vec128< int16_t > a, Vec128< int16_t > b)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::MulEven (Vec128< uint16_t > a, Vec128< uint16_t > b)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::MulEven (Vec128< int32_t > a, Vec128< int32_t > b)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::MulEven (Vec128< uint32_t > a, Vec128< uint32_t > b)
 
template<size_t N>
HWY_API Vec128< int16_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< int8_t, N > a, Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< int32_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint32_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< uint16_t, N > a, Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< uint32_t, N > a, Vec128< uint32_t, N > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::MulEven (Vec128< T > a, Vec128< T > b)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::MulOdd (Vec128< int8_t > a, Vec128< int8_t > b)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::MulOdd (Vec128< uint8_t > a, Vec128< uint8_t > b)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::MulOdd (Vec128< int16_t > a, Vec128< int16_t > b)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::MulOdd (Vec128< uint16_t > a, Vec128< uint16_t > b)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::MulOdd (Vec128< int32_t > a, Vec128< int32_t > b)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::MulOdd (Vec128< uint32_t > a, Vec128< uint32_t > b)
 
template<size_t N>
HWY_API Vec128< int16_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulOdd (Vec128< int8_t, N > a, Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulOdd (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< int32_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulOdd (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint32_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulOdd (Vec128< uint16_t, N > a, Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulOdd (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulOdd (Vec128< uint32_t, N > a, Vec128< uint32_t, N > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::MulOdd (Vec128< T > a, Vec128< T > b)
 
template<typename T , typename TI >
HWY_API Vec128< TI > hwy::HWY_NAMESPACE::TableLookupBytes (Vec128< T > bytes, Vec128< TI > from)
 
template<typename T , typename TI , size_t NI, HWY_IF_V_SIZE_LE(TI, NI, 8) >
HWY_API Vec128< TI, NI > hwy::HWY_NAMESPACE::TableLookupBytes (Vec128< T > bytes, Vec128< TI, NI > from)
 
template<typename T , size_t N, typename TI , HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_API Vec128< TI > hwy::HWY_NAMESPACE::TableLookupBytes (Vec128< T, N > bytes, Vec128< TI > from)
 
template<typename T , size_t N, typename TI , size_t NI, HWY_IF_V_SIZE_LE(T, N, 8) , HWY_IF_V_SIZE_LE(TI, NI, 8) >
HWY_API Vec128< TI, NI > hwy::HWY_NAMESPACE::TableLookupBytes (Vec128< T, N > bytes, Vec128< TI, NI > from)
 
template<class V , class VI >
HWY_API VI hwy::HWY_NAMESPACE::TableLookupBytesOr0 (V bytes, VI from)
 
template<uint8_t kRcon>
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESKeyGenAssist (Vec128< uint8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_UI8_D(D) >
HWY_API TFromD< D > hwy::HWY_NAMESPACE::ReduceSum (D, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Set64 (D, uint64_t mask_bits)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::Set64 (Full128< T > d, uint64_t mask_bits)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::detail::LoadMaskBits (D d, uint64_t mask_bits)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::LoadMaskBits (D d, const uint8_t *HWY_RESTRICT bits)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Dup128MaskFromMaskBits (D d, unsigned mask_bits)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::NibblesFromMask (D d, MFromD< D > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 1 >, Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 1 >, Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 2 >, Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 2 >, Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 4 >, Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 4 >, Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 8 >, Mask128< T > m)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 8 >, Mask128< T, 1 > m)
 
template<typename T , size_t N>
constexpr uint64_t hwy::HWY_NAMESPACE::detail::OnlyActive (uint64_t bits)
 
template<typename T , size_t N>
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 1 >, Mask128< T > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 2 >, Mask128< T > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 4 >, Mask128< T > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 8 >, Mask128< T > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::CountTrue (D, Mask128< T > mask)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API size_t hwy::HWY_NAMESPACE::CountTrue (D d, MFromD< D > mask)
 
template<class D >
HWY_API size_t hwy::HWY_NAMESPACE::FindKnownFirstTrue (D d, MFromD< D > mask)
 
template<class D >
HWY_API intptr_t hwy::HWY_NAMESPACE::FindFirstTrue (D d, MFromD< D > mask)
 
template<class D >
HWY_API size_t hwy::HWY_NAMESPACE::FindKnownLastTrue (D d, MFromD< D > mask)
 
template<class D >
HWY_API intptr_t hwy::HWY_NAMESPACE::FindLastTrue (D d, MFromD< D > mask)
 
template<class D >
HWY_API size_t hwy::HWY_NAMESPACE::StoreMaskBits (D d, MFromD< D > mask, uint8_t *bits)
 
template<class D >
HWY_API bool hwy::HWY_NAMESPACE::AllFalse (D d, MFromD< D > m)
 
template<class D , typename T = TFromD<D>>
HWY_API bool hwy::HWY_NAMESPACE::AllTrue (D d, Mask128< T > m)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API bool hwy::HWY_NAMESPACE::AllTrue (D d, MFromD< D > m)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) >
HWY_INLINE Vec128< uint8_t > hwy::HWY_NAMESPACE::detail::Load8Bytes (D, const uint8_t *bytes)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Load8Bytes (D d, const uint8_t *bytes)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromBits (hwy::SizeTag< 2 >, uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromNotBits (hwy::SizeTag< 2 >, uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromBits (hwy::SizeTag< 4 >, uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromNotBits (hwy::SizeTag< 4 >, uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::Compress (Vec128< T, N > v, uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::CompressNot (Vec128< T, N > v, uint64_t mask_bits)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Compress (Vec128< T, 1 > v, Mask128< T, 1 >)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Compress (Vec128< T, N > v, Mask128< T, N > mask)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::CompressNot (Vec128< T, 1 > v, Mask128< T, 1 >)
 
template<typename T , HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::CompressNot (Vec128< T > v, Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 2)|(1<< 4)) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CompressNot (Vec128< T, N > v, Mask128< T, N > mask)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::CompressBlocksNot (Vec128< uint64_t > v, Mask128< uint64_t >)
 
template<typename T , size_t N, HWY_IF_NOT_T_SIZE(T, 1) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::CompressBits (Vec128< T, N > v, const uint8_t *HWY_RESTRICT bits)
 
template<class D , HWY_IF_NOT_T_SIZE_D(D, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressStore (VFromD< D > v, MFromD< D > mask, D d, TFromD< D > *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_NOT_T_SIZE_D(D, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressBlendedStore (VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_NOT_T_SIZE_D(D, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressBitsStore (VFromD< D > v, const uint8_t *HWY_RESTRICT bits, D d, TFromD< D > *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_LOAD_INT(D) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved2 (D d, const T *HWY_RESTRICT unaligned, VFromD< D > &v0, VFromD< D > &v1)
 
template<class D , HWY_IF_LOAD_INT(D) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved3 (D d, const T *HWY_RESTRICT unaligned, VFromD< D > &v0, VFromD< D > &v1, VFromD< D > &v2)
 
template<class D , HWY_IF_LOAD_INT(D) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved4 (D d, const T *HWY_RESTRICT unaligned, VFromD< D > &v0, VFromD< D > &v1, VFromD< D > &v2, VFromD< D > &v3)
 
template<class D , HWY_IF_STORE_INT(D) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved2 (VFromD< D > v0, VFromD< D > v1, D d, T *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_STORE_INT(D) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved3 (VFromD< D > v0, VFromD< D > v1, VFromD< D > v2, D d, T *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_STORE_INT(D) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved4 (VFromD< D > v0, VFromD< D > v1, VFromD< D > v2, VFromD< D > v3, D d, T *HWY_RESTRICT unaligned)
 
template<class T >
HWY_API Mask128< T, 1 > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T, 1 > mask)
 
template<class T >
HWY_API Mask128< T, 2 > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T, 2 > mask)
 
template<class T , size_t N, HWY_IF_LANES_GT(N, 2) , HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T, N > mask)
 
template<class T , HWY_IF_NOT_T_SIZE(T, 8) >
HWY_API Mask128< T > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T > mask)
 
template<class T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetBeforeFirst (Mask128< T, N > mask)
 
template<class T >
HWY_API Mask128< T, 1 > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T, 1 > mask)
 
template<class T >
HWY_API Mask128< T, 2 > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T, 2 > mask)
 
template<class T , size_t N, HWY_IF_LANES_GT(N, 2) , HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T, N > mask)
 
template<class T , HWY_IF_NOT_T_SIZE(T, 8) >
HWY_API Mask128< T > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T > mask)
 
template<class T >
HWY_API Mask128< T, 1 > hwy::HWY_NAMESPACE::SetAtOrBeforeFirst (Mask128< T, 1 >)
 
template<class T , size_t N, HWY_IF_LANES_GT(N, 1) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetAtOrBeforeFirst (Mask128< T, N > mask)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::Lt128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::Lt128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::Eq128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::Eq128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::Ne128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::Ne128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Min128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Max128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Min128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Max128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class V , HWY_IF_UI64_D(DFromV< V >) >
HWY_APIhwy::HWY_NAMESPACE::LeadingZeroCount (V v)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::HighestSetBitIndex (V v)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) , HWY_IF_T_SIZE_V(V, 1) >
HWY_APIhwy::HWY_NAMESPACE::TrailingZeroCount (V v)
 
 HWY_AFTER_NAMESPACE ()
 

Variables

 hwy::HWY_NAMESPACE::detail::vreinterpret
 
 hwy::HWY_NAMESPACE::detail::_u8_
 

Macro Definition Documentation

◆ HWY_IF_LOAD_INT

#define HWY_IF_LOAD_INT ( D)
Value:
hwy::EnableIf<(HWY_MAX_LANES_D(D) == 1 || sizeof(TFromD<D>) < 8)>* = \
nullptr
typename EnableIfT< Condition >::type EnableIf
Definition base.h:486
#define HWY_IF_V_SIZE_GT_D(D, bytes)
Definition ops/shared-inl.h:609
#define HWY_MAX_LANES_D(D)
Definition ops/shared-inl.h:432

◆ HWY_IF_MINMAX_OF_LANES_D

#define HWY_IF_MINMAX_OF_LANES_D ( D)
Value:
(sizeof(TFromD<D>) == 1 && HWY_MAX_LANES_D(D) == 4)>* = \
nullptr

◆ HWY_IF_STORE_INT

#define HWY_IF_STORE_INT ( D)
Value:
hwy::EnableIf<(HWY_MAX_LANES_D(D) == 1 || sizeof(TFromD<D>) < 8)>* = \
nullptr

◆ HWY_IF_SUM_OF_LANES_D

#define HWY_IF_SUM_OF_LANES_D ( D)
Value:
(sizeof(TFromD<D>) == 1 && HWY_MAX_LANES_D(D) == 4)>* = \
nullptr

◆ HWY_NATIVE_AES

#define HWY_NATIVE_AES

◆ HWY_NATIVE_BITWISE_IF_THEN_ELSE

#define HWY_NATIVE_BITWISE_IF_THEN_ELSE

◆ HWY_NATIVE_F32_TO_UI64_PROMOTE_IN_RANGE_TO

#define HWY_NATIVE_F32_TO_UI64_PROMOTE_IN_RANGE_TO

◆ HWY_NATIVE_I16_SATWIDENMULACCUMFIXEDPOINT

#define HWY_NATIVE_I16_SATWIDENMULACCUMFIXEDPOINT

◆ HWY_NATIVE_I32_SATURATED_ADDSUB

#define HWY_NATIVE_I32_SATURATED_ADDSUB

◆ HWY_NATIVE_I64_SATURATED_ADDSUB

#define HWY_NATIVE_I64_SATURATED_ADDSUB

◆ HWY_NATIVE_INT_FMA

#define HWY_NATIVE_INT_FMA

◆ HWY_NATIVE_INTEGER_ABS_DIFF

#define HWY_NATIVE_INTEGER_ABS_DIFF

◆ HWY_NATIVE_LEADING_ZERO_COUNT

#define HWY_NATIVE_LEADING_ZERO_COUNT

◆ HWY_NATIVE_LOAD_STORE_INTERLEAVED

#define HWY_NATIVE_LOAD_STORE_INTERLEAVED

◆ HWY_NATIVE_MUL_8

#define HWY_NATIVE_MUL_8

◆ HWY_NATIVE_POPCNT

#define HWY_NATIVE_POPCNT

◆ HWY_NATIVE_REDUCE_SUM_4_UI8

#define HWY_NATIVE_REDUCE_SUM_4_UI8

◆ HWY_NATIVE_REVERSE2_8

#define HWY_NATIVE_REVERSE2_8

◆ HWY_NATIVE_SATURATED_ABS

#define HWY_NATIVE_SATURATED_ABS

◆ HWY_NATIVE_SATURATED_NEG_8_16_32

#define HWY_NATIVE_SATURATED_NEG_8_16_32

◆ HWY_NATIVE_U32_SATURATED_ADDSUB

#define HWY_NATIVE_U32_SATURATED_ADDSUB

◆ HWY_NATIVE_U64_SATURATED_ADDSUB

#define HWY_NATIVE_U64_SATURATED_ADDSUB

◆ HWY_NEON_BUILD_ARG_1

#define HWY_NEON_BUILD_ARG_1   a.raw

◆ HWY_NEON_BUILD_ARG_2

#define HWY_NEON_BUILD_ARG_2   a.raw, b.raw

◆ HWY_NEON_BUILD_ARG_3

#define HWY_NEON_BUILD_ARG_3   a.raw, b.raw, c.raw

◆ HWY_NEON_BUILD_ARG_HWY_CAST_TO_U8

#define HWY_NEON_BUILD_ARG_HWY_CAST_TO_U8   v.raw

◆ HWY_NEON_BUILD_ARG_HWY_COMPARE

#define HWY_NEON_BUILD_ARG_HWY_COMPARE   a.raw, b.raw

◆ HWY_NEON_BUILD_ARG_HWY_GET

#define HWY_NEON_BUILD_ARG_HWY_GET   v.raw, kLane

◆ HWY_NEON_BUILD_ARG_HWY_IF

#define HWY_NEON_BUILD_ARG_HWY_IF   mask.raw, yes.raw, no.raw

◆ HWY_NEON_BUILD_ARG_HWY_INSERT

#define HWY_NEON_BUILD_ARG_HWY_INSERT   t, v.raw, kLane

◆ HWY_NEON_BUILD_ARG_HWY_LOAD_INT

#define HWY_NEON_BUILD_ARG_HWY_LOAD_INT   from

◆ HWY_NEON_BUILD_ARG_HWY_SET

#define HWY_NEON_BUILD_ARG_HWY_SET   t

◆ HWY_NEON_BUILD_ARG_HWY_STORE_INT

#define HWY_NEON_BUILD_ARG_HWY_STORE_INT   to, tup.raw

◆ HWY_NEON_BUILD_ARG_HWY_TESTBIT

#define HWY_NEON_BUILD_ARG_HWY_TESTBIT   v.raw, bit.raw

◆ HWY_NEON_BUILD_ARG_HWY_TRN

#define HWY_NEON_BUILD_ARG_HWY_TRN   a, b

◆ HWY_NEON_BUILD_PARAM_1

#define HWY_NEON_BUILD_PARAM_1 ( type,
size )   const Vec128<type##_t, size> a

◆ HWY_NEON_BUILD_PARAM_2

#define HWY_NEON_BUILD_PARAM_2 ( type,
size )    const Vec128<type##_t, size> a, const Vec128<type##_t, size> b

◆ HWY_NEON_BUILD_PARAM_3

#define HWY_NEON_BUILD_PARAM_3 ( type,
size )
Value:
const Vec128<type##_t, size> a, const Vec128<type##_t, size> b, \
const Vec128<type##_t, size> c

◆ HWY_NEON_BUILD_PARAM_HWY_CAST_TO_U8

#define HWY_NEON_BUILD_PARAM_HWY_CAST_TO_U8 ( type,
size )   Vec128<type##_t, size> v

◆ HWY_NEON_BUILD_PARAM_HWY_COMPARE

#define HWY_NEON_BUILD_PARAM_HWY_COMPARE ( type,
size )    const Vec128<type##_t, size> a, const Vec128<type##_t, size> b

◆ HWY_NEON_BUILD_PARAM_HWY_GET

#define HWY_NEON_BUILD_PARAM_HWY_GET ( type,
size )   Vec128<type##_t, size> v

◆ HWY_NEON_BUILD_PARAM_HWY_IF

#define HWY_NEON_BUILD_PARAM_HWY_IF ( type,
size )
Value:
const Mask128<type##_t, size> mask, const Vec128<type##_t, size> yes, \
const Vec128<type##_t, size> no

◆ HWY_NEON_BUILD_PARAM_HWY_INSERT

#define HWY_NEON_BUILD_PARAM_HWY_INSERT ( type,
size )    Vec128<type##_t, size> v, type##_t t

◆ HWY_NEON_BUILD_PARAM_HWY_LOAD_INT [1/3]

#define HWY_NEON_BUILD_PARAM_HWY_LOAD_INT ( type,
size )    const NativeLaneType<type##_t>*from, Tuple2<type##_t, size>

◆ HWY_NEON_BUILD_PARAM_HWY_LOAD_INT [2/3]

#define HWY_NEON_BUILD_PARAM_HWY_LOAD_INT ( type,
size )    const NativeLaneType<type##_t>*from, Tuple3<type##_t, size>

◆ HWY_NEON_BUILD_PARAM_HWY_LOAD_INT [3/3]

#define HWY_NEON_BUILD_PARAM_HWY_LOAD_INT ( type,
size )    const NativeLaneType<type##_t>*from, Tuple4<type##_t, size>

◆ HWY_NEON_BUILD_PARAM_HWY_SET

#define HWY_NEON_BUILD_PARAM_HWY_SET ( type,
size )    Simd<type##_t, size, 0> /* tag */, type##_t t

◆ HWY_NEON_BUILD_PARAM_HWY_STORE_INT [1/3]

#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT ( type,
size )    Tuple2<type##_t, size> tup, NativeLaneType<type##_t>*to

◆ HWY_NEON_BUILD_PARAM_HWY_STORE_INT [2/3]

#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT ( type,
size )    Tuple3<type##_t, size> tup, NativeLaneType<type##_t>*to

◆ HWY_NEON_BUILD_PARAM_HWY_STORE_INT [3/3]

#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT ( type,
size )    Tuple4<type##_t, size> tup, NativeLaneType<type##_t>*to

◆ HWY_NEON_BUILD_PARAM_HWY_TESTBIT

#define HWY_NEON_BUILD_PARAM_HWY_TESTBIT ( type,
size )    Vec128<type##_t, size> v, Vec128<type##_t, size> bit

◆ HWY_NEON_BUILD_PARAM_HWY_TRN

#define HWY_NEON_BUILD_PARAM_HWY_TRN ( TYPE,
size )    Raw128<TYPE##_t, size>::type a, Raw128<TYPE##_t, size>::type b

◆ HWY_NEON_BUILD_RET_1

#define HWY_NEON_BUILD_RET_1 ( type,
size )   Vec128<type##_t, size>

◆ HWY_NEON_BUILD_RET_2

#define HWY_NEON_BUILD_RET_2 ( type,
size )   Vec128<type##_t, size>

◆ HWY_NEON_BUILD_RET_3

#define HWY_NEON_BUILD_RET_3 ( type,
size )   Vec128<type##_t, size>

◆ HWY_NEON_BUILD_RET_HWY_CAST_TO_U8

#define HWY_NEON_BUILD_RET_HWY_CAST_TO_U8 ( type,
size )    Vec128<uint8_t, size * sizeof(type##_t)>

◆ HWY_NEON_BUILD_RET_HWY_COMPARE

#define HWY_NEON_BUILD_RET_HWY_COMPARE ( type,
size )   Mask128<type##_t, size>

◆ HWY_NEON_BUILD_RET_HWY_GET

#define HWY_NEON_BUILD_RET_HWY_GET ( type,
size )   type##_t

◆ HWY_NEON_BUILD_RET_HWY_IF

#define HWY_NEON_BUILD_RET_HWY_IF ( type,
size )   Vec128<type##_t, size>

◆ HWY_NEON_BUILD_RET_HWY_INSERT

#define HWY_NEON_BUILD_RET_HWY_INSERT ( type,
size )   Vec128<type##_t, size>

◆ HWY_NEON_BUILD_RET_HWY_LOAD_INT [1/3]

#define HWY_NEON_BUILD_RET_HWY_LOAD_INT ( type,
size )    decltype(Tuple2<type##_t, size>().raw)

◆ HWY_NEON_BUILD_RET_HWY_LOAD_INT [2/3]

#define HWY_NEON_BUILD_RET_HWY_LOAD_INT ( type,
size )    decltype(Tuple3<type##_t, size>().raw)

◆ HWY_NEON_BUILD_RET_HWY_LOAD_INT [3/3]

#define HWY_NEON_BUILD_RET_HWY_LOAD_INT ( type,
size )    decltype(Tuple4<type##_t, size>().raw)

◆ HWY_NEON_BUILD_RET_HWY_SET

#define HWY_NEON_BUILD_RET_HWY_SET ( type,
size )   Vec128<type##_t, size>

◆ HWY_NEON_BUILD_RET_HWY_STORE_INT

#define HWY_NEON_BUILD_RET_HWY_STORE_INT ( type,
size )   void

◆ HWY_NEON_BUILD_RET_HWY_TESTBIT

#define HWY_NEON_BUILD_RET_HWY_TESTBIT ( type,
size )   Mask128<type##_t, size>

◆ HWY_NEON_BUILD_RET_HWY_TRN

#define HWY_NEON_BUILD_RET_HWY_TRN ( type,
size )   type##x##size##x2_t

◆ HWY_NEON_BUILD_TPL_1

#define HWY_NEON_BUILD_TPL_1

◆ HWY_NEON_BUILD_TPL_2

#define HWY_NEON_BUILD_TPL_2

◆ HWY_NEON_BUILD_TPL_3

#define HWY_NEON_BUILD_TPL_3

◆ HWY_NEON_BUILD_TPL_HWY_CAST_TO_U8

#define HWY_NEON_BUILD_TPL_HWY_CAST_TO_U8

◆ HWY_NEON_BUILD_TPL_HWY_COMPARE

#define HWY_NEON_BUILD_TPL_HWY_COMPARE

◆ HWY_NEON_BUILD_TPL_HWY_GET

#define HWY_NEON_BUILD_TPL_HWY_GET   template <size_t kLane>

◆ HWY_NEON_BUILD_TPL_HWY_IF

#define HWY_NEON_BUILD_TPL_HWY_IF

◆ HWY_NEON_BUILD_TPL_HWY_INSERT

#define HWY_NEON_BUILD_TPL_HWY_INSERT   template <size_t kLane>

◆ HWY_NEON_BUILD_TPL_HWY_LOAD_INT

#define HWY_NEON_BUILD_TPL_HWY_LOAD_INT

◆ HWY_NEON_BUILD_TPL_HWY_SET

#define HWY_NEON_BUILD_TPL_HWY_SET

◆ HWY_NEON_BUILD_TPL_HWY_STORE_INT

#define HWY_NEON_BUILD_TPL_HWY_STORE_INT

◆ HWY_NEON_BUILD_TPL_HWY_TESTBIT

#define HWY_NEON_BUILD_TPL_HWY_TESTBIT

◆ HWY_NEON_BUILD_TPL_HWY_TRN

#define HWY_NEON_BUILD_TPL_HWY_TRN

◆ HWY_NEON_BUILD_TYPE_T

#define HWY_NEON_BUILD_TYPE_T ( type,
size )   type##x##size##_t

◆ HWY_NEON_DEF_FUNCTION [1/3]

#define HWY_NEON_DEF_FUNCTION ( type,
size,
name,
prefix,
infix,
suffix,
args )
Value:
HWY_CONCAT(HWY_NEON_BUILD_TPL_, args) \
HWY_API HWY_CONCAT(HWY_NEON_BUILD_RET_, args)(type, size) \
name(HWY_CONCAT(HWY_NEON_BUILD_PARAM_, args)(type, size)) { \
return HWY_CONCAT(HWY_NEON_BUILD_RET_, args)(type, size)( \
HWY_NEON_EVAL(prefix##infix##suffix, HWY_NEON_BUILD_ARG_##args)); \
}
#define HWY_NEON_EVAL(func,...)
Definition arm_neon-inl.h:72
#define HWY_API
Definition base.h:171
#define HWY_CONCAT(a, b)
Definition base.h:174

◆ HWY_NEON_DEF_FUNCTION [2/3]

#define HWY_NEON_DEF_FUNCTION ( type,
size,
name,
prefix,
infix,
suffix,
args )
Value:
template <int kBits> \
HWY_API Vec128<type##_t, size> name(const Vec128<type##_t, size> v) { \
return kBits == 0 ? v \
: Vec128<type##_t, size>(HWY_NEON_EVAL( \
prefix##infix##suffix, v.raw, HWY_MAX(1, kBits))); \
}
#define HWY_MAX(a, b)
Definition base.h:177

◆ HWY_NEON_DEF_FUNCTION [3/3]

#define HWY_NEON_DEF_FUNCTION ( type,
size,
name,
prefix,
infix,
suffix,
args )
Value:
HWY_API Mask128<type##_t, size> name(Vec128<type##_t, size> a, \
Vec128<type##_t, size> b) { \
return Not(a == b); \
}

◆ HWY_NEON_DEF_FUNCTION_ALL_FLOATS

#define HWY_NEON_DEF_FUNCTION_ALL_FLOATS ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_FLOAT_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_FLOAT_64(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_FLOAT_16_32(name, prefix, infix, args)
Definition arm_neon-inl.h:248

◆ HWY_NEON_DEF_FUNCTION_ALL_TYPES

#define HWY_NEON_DEF_FUNCTION_ALL_TYPES ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_INTS_UINTS(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_ALL_FLOATS(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_INTS_UINTS(name, prefix, infix, args)
Definition arm_neon-inl.h:244

◆ HWY_NEON_DEF_FUNCTION_BFLOAT_16

#define HWY_NEON_DEF_FUNCTION_BFLOAT_16 ( name,
prefix,
infix,
args )

◆ HWY_NEON_DEF_FUNCTION_FLOAT_16

#define HWY_NEON_DEF_FUNCTION_FLOAT_16 ( name,
prefix,
infix,
args )

◆ HWY_NEON_DEF_FUNCTION_FLOAT_16_32

#define HWY_NEON_DEF_FUNCTION_FLOAT_16_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_FLOAT_16(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_FLOAT_32(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_FLOAT_16(name, prefix, infix, args)
Definition arm_neon-inl.h:184

◆ HWY_NEON_DEF_FUNCTION_FLOAT_16_UNCONDITIONAL

#define HWY_NEON_DEF_FUNCTION_FLOAT_16_UNCONDITIONAL ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(float16, 8, name, prefix##q, infix, f16, args) \
HWY_NEON_DEF_FUNCTION(float16, 4, name, prefix, infix, f16, args) \
HWY_NEON_DEF_FUNCTION(float16, 2, name, prefix, infix, f16, args) \
HWY_NEON_DEF_FUNCTION(float16, 1, name, prefix, infix, f16, args)
#define HWY_NEON_DEF_FUNCTION(type, size, name, prefix, infix, suffix, args)
Definition arm_neon-inl.h:78

◆ HWY_NEON_DEF_FUNCTION_FLOAT_32

#define HWY_NEON_DEF_FUNCTION_FLOAT_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(float32, 4, name, prefix##q, infix, f32, args) \
HWY_NEON_DEF_FUNCTION(float32, 2, name, prefix, infix, f32, args) \
HWY_NEON_DEF_FUNCTION(float32, 1, name, prefix, infix, f32, args)

◆ HWY_NEON_DEF_FUNCTION_FLOAT_64

#define HWY_NEON_DEF_FUNCTION_FLOAT_64 ( name,
prefix,
infix,
args )

◆ HWY_NEON_DEF_FUNCTION_FULL_UI

#define HWY_NEON_DEF_FUNCTION_FULL_UI ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(uint8, 16, name, prefix##q, infix, u8, args) \
HWY_NEON_DEF_FUNCTION(uint16, 8, name, prefix##q, infix, u16, args) \
HWY_NEON_DEF_FUNCTION(uint32, 4, name, prefix##q, infix, u32, args) \
HWY_NEON_DEF_FUNCTION(int8, 16, name, prefix##q, infix, s8, args) \
HWY_NEON_DEF_FUNCTION(int16, 8, name, prefix##q, infix, s16, args) \
HWY_NEON_DEF_FUNCTION(int32, 4, name, prefix##q, infix, s32, args) \
HWY_NEON_DEF_FUNCTION_FULL_UI_64(name, prefix, infix, args)

◆ HWY_NEON_DEF_FUNCTION_FULL_UI_64

#define HWY_NEON_DEF_FUNCTION_FULL_UI_64 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(uint64, 2, name, prefix##q, infix, u64, args) \
HWY_NEON_DEF_FUNCTION(int64, 2, name, prefix##q, infix, s64, args)

◆ HWY_NEON_DEF_FUNCTION_FULL_UIF_64

#define HWY_NEON_DEF_FUNCTION_FULL_UIF_64 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_FULL_UI_64(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION(float64, 2, name, prefix##q, infix, f64, args)
#define HWY_NEON_DEF_FUNCTION_FULL_UI_64(name, prefix, infix, args)
Definition arm_neon-inl.h:275

◆ HWY_NEON_DEF_FUNCTION_INT_16

#define HWY_NEON_DEF_FUNCTION_INT_16 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(int16, 8, name, prefix##q, infix, s16, args) \
HWY_NEON_DEF_FUNCTION(int16, 4, name, prefix, infix, s16, args) \
HWY_NEON_DEF_FUNCTION(int16, 2, name, prefix, infix, s16, args) \
HWY_NEON_DEF_FUNCTION(int16, 1, name, prefix, infix, s16, args)

◆ HWY_NEON_DEF_FUNCTION_INT_32

#define HWY_NEON_DEF_FUNCTION_INT_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(int32, 4, name, prefix##q, infix, s32, args) \
HWY_NEON_DEF_FUNCTION(int32, 2, name, prefix, infix, s32, args) \
HWY_NEON_DEF_FUNCTION(int32, 1, name, prefix, infix, s32, args)

◆ HWY_NEON_DEF_FUNCTION_INT_64

#define HWY_NEON_DEF_FUNCTION_INT_64 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(int64, 2, name, prefix##q, infix, s64, args) \
HWY_NEON_DEF_FUNCTION(int64, 1, name, prefix, infix, s64, args)

◆ HWY_NEON_DEF_FUNCTION_INT_8

#define HWY_NEON_DEF_FUNCTION_INT_8 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(int8, 16, name, prefix##q, infix, s8, args) \
HWY_NEON_DEF_FUNCTION(int8, 8, name, prefix, infix, s8, args) \
HWY_NEON_DEF_FUNCTION(int8, 4, name, prefix, infix, s8, args) \
HWY_NEON_DEF_FUNCTION(int8, 2, name, prefix, infix, s8, args) \
HWY_NEON_DEF_FUNCTION(int8, 1, name, prefix, infix, s8, args)

◆ HWY_NEON_DEF_FUNCTION_INT_8_16_32

#define HWY_NEON_DEF_FUNCTION_INT_8_16_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_INT_8(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_INT_16(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_INT_32(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_INT_8(name, prefix, infix, args)
Definition arm_neon-inl.h:101

◆ HWY_NEON_DEF_FUNCTION_INTS

#define HWY_NEON_DEF_FUNCTION_INTS ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_INT_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_INT_64(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_INT_8_16_32(name, prefix, infix, args)
Definition arm_neon-inl.h:228

◆ HWY_NEON_DEF_FUNCTION_INTS_UINTS

#define HWY_NEON_DEF_FUNCTION_INTS_UINTS ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_INTS(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_UINTS(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_INTS(name, prefix, infix, args)
Definition arm_neon-inl.h:239

◆ HWY_NEON_DEF_FUNCTION_LOAD_INT

#define HWY_NEON_DEF_FUNCTION_LOAD_INT ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_INT_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_UINT_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_FLOAT_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION(int64, 1, name, prefix, infix, s64, args) \
HWY_NEON_DEF_FUNCTION(uint64, 1, name, prefix, infix, u64, args)

◆ HWY_NEON_DEF_FUNCTION_STORE_INT

#define HWY_NEON_DEF_FUNCTION_STORE_INT ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_INT_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_UINT_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_FLOAT_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION(int64, 1, name, prefix, infix, s64, args) \
HWY_NEON_DEF_FUNCTION(uint64, 1, name, prefix, infix, u64, args)

◆ HWY_NEON_DEF_FUNCTION_UI_8_16_32

#define HWY_NEON_DEF_FUNCTION_UI_8_16_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_UINT_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_INT_8_16_32(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_UINT_8_16_32(name, prefix, infix, args)
Definition arm_neon-inl.h:222

◆ HWY_NEON_DEF_FUNCTION_UIF_64

#define HWY_NEON_DEF_FUNCTION_UIF_64 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_UINT_64(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_INT_64(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_FLOAT_64(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_UINT_64(name, prefix, infix, args)
Definition arm_neon-inl.h:135

◆ HWY_NEON_DEF_FUNCTION_UIF_8_16_32

#define HWY_NEON_DEF_FUNCTION_UIF_8_16_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_UI_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_FLOAT_16_32(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_UI_8_16_32(name, prefix, infix, args)
Definition arm_neon-inl.h:261

◆ HWY_NEON_DEF_FUNCTION_UINT_16

#define HWY_NEON_DEF_FUNCTION_UINT_16 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(uint16, 8, name, prefix##q, infix, u16, args) \
HWY_NEON_DEF_FUNCTION(uint16, 4, name, prefix, infix, u16, args) \
HWY_NEON_DEF_FUNCTION(uint16, 2, name, prefix, infix, u16, args) \
HWY_NEON_DEF_FUNCTION(uint16, 1, name, prefix, infix, u16, args)

◆ HWY_NEON_DEF_FUNCTION_UINT_32

#define HWY_NEON_DEF_FUNCTION_UINT_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(uint32, 4, name, prefix##q, infix, u32, args) \
HWY_NEON_DEF_FUNCTION(uint32, 2, name, prefix, infix, u32, args) \
HWY_NEON_DEF_FUNCTION(uint32, 1, name, prefix, infix, u32, args)

◆ HWY_NEON_DEF_FUNCTION_UINT_64

#define HWY_NEON_DEF_FUNCTION_UINT_64 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(uint64, 2, name, prefix##q, infix, u64, args) \
HWY_NEON_DEF_FUNCTION(uint64, 1, name, prefix, infix, u64, args)

◆ HWY_NEON_DEF_FUNCTION_UINT_8

#define HWY_NEON_DEF_FUNCTION_UINT_8 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION(uint8, 16, name, prefix##q, infix, u8, args) \
HWY_NEON_DEF_FUNCTION(uint8, 8, name, prefix, infix, u8, args) \
HWY_NEON_DEF_FUNCTION(uint8, 4, name, prefix, infix, u8, args) \
HWY_NEON_DEF_FUNCTION(uint8, 2, name, prefix, infix, u8, args) \
HWY_NEON_DEF_FUNCTION(uint8, 1, name, prefix, infix, u8, args)

◆ HWY_NEON_DEF_FUNCTION_UINT_8_16_32

#define HWY_NEON_DEF_FUNCTION_UINT_8_16_32 ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_UINT_8(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_UINT_16(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_UINT_32(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_UINT_8(name, prefix, infix, args)
Definition arm_neon-inl.h:93

◆ HWY_NEON_DEF_FUNCTION_UINTS

#define HWY_NEON_DEF_FUNCTION_UINTS ( name,
prefix,
infix,
args )
Value:
HWY_NEON_DEF_FUNCTION_UINT_8_16_32(name, prefix, infix, args) \
HWY_NEON_DEF_FUNCTION_UINT_64(name, prefix, infix, args)

◆ HWY_NEON_DEF_PAIRWISE_REDUCTION

#define HWY_NEON_DEF_PAIRWISE_REDUCTION ( type,
size,
name,
prefix,
suffix )
Value:
template <class D, HWY_IF_LANES_D(D, size)> \
HWY_API Vec128<type##_t, size> name##OfLanes(D /* d */, \
Vec128<type##_t, size> v) { \
HWY_NEON_BUILD_TYPE_T(type, size) tmp = prefix##_##suffix(v.raw, v.raw); \
if ((size / 2) > 1) tmp = prefix##_##suffix(tmp, tmp); \
if ((size / 4) > 1) tmp = prefix##_##suffix(tmp, tmp); \
return Vec128<type##_t, size>(tmp); \
}

◆ HWY_NEON_DEF_PAIRWISE_REDUCTIONS

#define HWY_NEON_DEF_PAIRWISE_REDUCTIONS ( name,
prefix )
Value:
HWY_NEON_DEF_PAIRWISE_REDUCTION(uint32, 2, name, prefix, u32) \
HWY_NEON_DEF_PAIRWISE_REDUCTION(uint16, 4, name, prefix, u16) \
HWY_NEON_DEF_PAIRWISE_REDUCTION(uint8, 8, name, prefix, u8) \
HWY_NEON_DEF_PAIRWISE_REDUCTION(int32, 2, name, prefix, s32) \
HWY_NEON_DEF_PAIRWISE_REDUCTION(int16, 4, name, prefix, s16) \
HWY_NEON_DEF_PAIRWISE_REDUCTION(int8, 8, name, prefix, s8) \
HWY_NEON_DEF_PAIRWISE_REDUCTION(float32, 2, name, prefix, f32) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(uint32, 4, 2, name, prefix, u32) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(uint16, 8, 4, name, prefix, u16) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(uint8, 16, 8, name, prefix, u8) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(int32, 4, 2, name, prefix, s32) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(int16, 8, 4, name, prefix, s16) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(int8, 16, 8, name, prefix, s8) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(float32, 4, 2, name, prefix, f32)
#define HWY_NEON_DEF_PAIRWISE_REDUCTION(type, size, name, prefix, suffix)
Definition arm_neon-inl.h:7967

◆ HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION

#define HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION ( type,
size,
half,
name,
prefix,
suffix )
Value:
template <class D, HWY_IF_LANES_D(D, size)> \
HWY_API Vec128<type##_t, size> name##OfLanes(D /* d */, \
Vec128<type##_t, size> v) { \
HWY_NEON_BUILD_TYPE_T(type, half) tmp; \
tmp = prefix##_##suffix(vget_high_##suffix(v.raw), \
vget_low_##suffix(v.raw)); \
if ((size / 2) > 1) tmp = prefix##_##suffix(tmp, tmp); \
if ((size / 4) > 1) tmp = prefix##_##suffix(tmp, tmp); \
if ((size / 8) > 1) tmp = prefix##_##suffix(tmp, tmp); \
return Vec128<type##_t, size>(vcombine_##suffix(tmp, tmp)); \
}

◆ HWY_NEON_EVAL

#define HWY_NEON_EVAL ( func,
... )   func(__VA_ARGS__)

◆ HWY_NEON_HAVE_BFLOAT16

#define HWY_NEON_HAVE_BFLOAT16   0

◆ HWY_NEON_HAVE_F32_TO_BF16C

#define HWY_NEON_HAVE_F32_TO_BF16C   0

◆ HWY_NEON_IF_EMULATED_D

#define HWY_NEON_IF_EMULATED_D ( D)    HWY_IF_SPECIAL_FLOAT_D(D)

◆ HWY_NEON_IF_EMULATED_IF_THEN_ELSE

#define HWY_NEON_IF_EMULATED_IF_THEN_ELSE ( V)    HWY_IF_SPECIAL_FLOAT_V(V)

Function Documentation

◆ HWY_AFTER_NAMESPACE()

HWY_AFTER_NAMESPACE ( )

◆ HWY_BEFORE_NAMESPACE()

HWY_BEFORE_NAMESPACE ( )

References HWY_NAMESPACE.