Grok 10.0.5
Classes | Namespaces | Macros | Typedefs | Functions
arm_neon-inl.h File Reference
#include <stddef.h>
#include <stdint.h>
#include "hwy/ops/shared-inl.h"
#include <arm_neon.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< float16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< float16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< bfloat16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple2< bfloat16_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< float16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< float16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< bfloat16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple3< bfloat16_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< float16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< float16_t, N >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< bfloat16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Tuple4< bfloat16_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< uint16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int8_t, 16 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int32_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int64_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< bfloat16_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint8_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint16_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint32_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint64_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int8_t, 8 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int16_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int32_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int64_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float16_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< bfloat16_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint8_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint16_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint32_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int8_t, 4 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int16_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int32_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float16_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< bfloat16_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint8_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint16_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int8_t, 2 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int16_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float16_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< bfloat16_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< uint8_t, 1 >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< int8_t, 1 >
 
class  hwy::HWY_NAMESPACE::Vec128< T, N >
 
struct  hwy::HWY_NAMESPACE::Mask128< T, N >
 
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_DEF_FUNCTION_FLOAT_32(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FLOAT_64(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_ALL_FLOATS(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_ALL_TYPES(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_UIF81632(name, prefix, infix, args)
 
#define HWY_NEON_DEF_FUNCTION_FULL_UI(name, prefix, infix, args)
 
#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_SET1
 
#define HWY_NEON_BUILD_RET_HWY_SET1(type, size)   Vec128<type##_t, size>
 
#define HWY_NEON_BUILD_PARAM_HWY_SET1(type, size)    Simd<type##_t, size, 0> /* tag */, const type##_t t
 
#define HWY_NEON_BUILD_ARG_HWY_SET1   t
 
#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_NEON_DEF_FUNCTION(type, size, name, prefix, infix, suffix, args)
 
#define HWY_NATIVE_POPCNT
 
#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_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_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_NEON_BUILD_TYPE_T(type, size)   type##x##size##_t
 
#define HWY_NEON_BUILD_RET_PAIRWISE_REDUCTION(type, size)   Vec128<type##_t, size>
 
#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_IF_SUM_REDUCTION(T)   HWY_IF_LANE_SIZE_ONE_OF(T, 0)
 
#define HWY_IF_MINMAX_REDUCTION(T)   HWY_IF_LANE_SIZE_ONE_OF(T, 1 << 8)
 
#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(T, N)    hwy::EnableIf<N * sizeof(T) >= 8 && (N == 1 || sizeof(T) < 8)>* = nullptr
 
#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 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 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 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(T, N)    hwy::EnableIf<N * sizeof(T) >= 8 && (N == 1 || sizeof(T) < 8)>* = nullptr
 
#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, type##_t *to
 
#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT(type, size)    Tuple3<type##_t, size> tup, type##_t *to
 
#define HWY_NEON_BUILD_PARAM_HWY_STORE_INT(type, size)    Tuple4<type##_t, size> tup, type##_t *to
 

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::Mask64 = Mask128< T, 8/sizeof(T)>
 
template<class V >
using hwy::HWY_NAMESPACE::DFromV = Simd< typename V::PrivateT, V::kPrivateN, 0 >
 
template<class V >
using hwy::HWY_NAMESPACE::TFromV = typename V::PrivateT
 
template<class D >
using hwy::HWY_NAMESPACE::VFromD = decltype(Zero(D()))
 

Functions

 HWY_BEFORE_NAMESPACE ()
 
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) template< size_t N > HWY_INLINE Vec128< uint8_t
 
N * 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<size_t N>
HWY_INLINE Vec128< uint8_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< uint8_t, N, 0 >, Vec128< uint8_t, N > v)
 
template<size_t N, HWY_IF_LE64(int8_t, N) >
HWY_INLINE Vec128< int8_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< int8_t, N, 0 >, Vec128< uint8_t, N > v)
 
template<size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_INLINE Vec128< uint16_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< uint16_t, N, 0 >, Vec128< uint8_t, N *2 > v)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_INLINE Vec128< int16_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< int16_t, N, 0 >, Vec128< uint8_t, N *2 > v)
 
template<size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_INLINE Vec128< uint32_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< uint32_t, N, 0 >, Vec128< uint8_t, N *4 > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_INLINE Vec128< int32_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< int32_t, N, 0 >, Vec128< uint8_t, N *4 > v)
 
template<size_t N, HWY_IF_LE64(float, N) >
HWY_INLINE Vec128< float, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< float, N, 0 >, Vec128< uint8_t, N *4 > v)
 
HWY_INLINE Vec64< uint64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full64< uint64_t >, Vec128< uint8_t, 1 *8 > v)
 
HWY_INLINE Vec64< int64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full64< int64_t >, Vec128< uint8_t, 1 *8 > v)
 
HWY_INLINE Vec128< int8_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< int8_t >, Vec128< uint8_t > v)
 
HWY_INLINE Vec128< uint16_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< uint16_t >, Vec128< uint8_t > v)
 
HWY_INLINE Vec128< int16_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< int16_t >, Vec128< uint8_t > v)
 
HWY_INLINE Vec128< uint32_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< uint32_t >, Vec128< uint8_t > v)
 
HWY_INLINE Vec128< int32_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< int32_t >, Vec128< uint8_t > v)
 
HWY_INLINE Vec128< float > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< float >, Vec128< uint8_t > v)
 
HWY_INLINE Vec128< uint64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< uint64_t >, Vec128< uint8_t > v)
 
HWY_INLINE Vec128< int64_t > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Full128< int64_t >, Vec128< uint8_t > v)
 
template<size_t N>
HWY_INLINE Vec128< float16_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< float16_t, N, 0 >, Vec128< uint8_t, N *2 > v)
 
template<size_t N>
HWY_INLINE Vec128< bfloat16_t, N > hwy::HWY_NAMESPACE::detail::BitCastFromByte (Simd< bfloat16_t, N, 0 >, Vec128< uint8_t, N *2 > v)
 
template<typename T , size_t N, typename FromT >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::BitCast (Simd< T, N, 0 > d, Vec128< FromT, N *sizeof(T)/sizeof(FromT)> v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Zero (Simd< T, N, 0 > d)
 
template<size_t N>
HWY_API Vec128< bfloat16_t, N > hwy::HWY_NAMESPACE::Zero (Simd< bfloat16_t, N, 0 >)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Undefined (Simd< T, N, 0 >)
 
template<typename T , size_t N, typename T2 >
Vec128< T, N > hwy::HWY_NAMESPACE::Iota (const Simd< T, N, 0 > d, const T2 first)
 
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<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::HWY_NAMESPACE::HWY_NEON_DEF_FUNCTION_INT_8_16_32 (Neg, vneg, _, 1) HWY_API Vec64< int64_t > Neg(const Vec64< int64_t > v)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Neg (const Vec128< int64_t > v)
 
template<int kBits, size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::RotateRight (const Vec128< uint32_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::RotateRight (const Vec128< uint64_t, N > v)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< uint8_t > v, const Vec128< uint8_t > bits)
 
template<size_t N, HWY_IF_LE64(uint8_t, N) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::operator<< (const Vec128< uint8_t, N > v, const Vec128< uint8_t, N > bits)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< uint16_t > v, const Vec128< uint16_t > bits)
 
template<size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::operator<< (const Vec128< uint16_t, N > v, const Vec128< uint16_t, N > bits)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< uint32_t > v, const Vec128< uint32_t > bits)
 
template<size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator<< (const Vec128< uint32_t, N > v, const Vec128< uint32_t, N > bits)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< uint64_t > v, const Vec128< uint64_t > bits)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::operator<< (const Vec64< uint64_t > v, const Vec64< uint64_t > bits)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< int8_t > v, const Vec128< int8_t > bits)
 
template<size_t N, HWY_IF_LE64(int8_t, N) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::operator<< (const Vec128< int8_t, N > v, const Vec128< int8_t, N > bits)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< int16_t > v, const Vec128< int16_t > bits)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::operator<< (const Vec128< int16_t, N > v, const Vec128< int16_t, N > bits)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< int32_t > v, const Vec128< int32_t > bits)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator<< (const Vec128< int32_t, N > v, const Vec128< int32_t, N > bits)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::operator<< (const Vec128< int64_t > v, const Vec128< int64_t > bits)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::operator<< (const Vec64< int64_t > v, const Vec64< int64_t > bits)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint8_t > v, const Vec128< uint8_t > bits)
 
template<size_t N, HWY_IF_LE64(uint8_t, N) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint8_t, N > v, const Vec128< uint8_t, N > bits)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint16_t > v, const Vec128< uint16_t > bits)
 
template<size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint16_t, N > v, const Vec128< uint16_t, N > bits)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint32_t > v, const Vec128< uint32_t > bits)
 
template<size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint32_t, N > v, const Vec128< uint32_t, N > bits)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint64_t > v, const Vec128< uint64_t > bits)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::operator>> (const Vec64< uint64_t > v, const Vec64< uint64_t > bits)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< int8_t > v, const Vec128< int8_t > bits)
 
template<size_t N, HWY_IF_LE64(int8_t, N) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::operator>> (const Vec128< int8_t, N > v, const Vec128< int8_t, N > bits)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< int16_t > v, const Vec128< int16_t > bits)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::operator>> (const Vec128< int16_t, N > v, const Vec128< int16_t, N > bits)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< int32_t > v, const Vec128< int32_t > bits)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator>> (const Vec128< int32_t, N > v, const Vec128< int32_t, N > bits)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::operator>> (const Vec128< int64_t > v, const Vec128< int64_t > bits)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::operator>> (const Vec64< int64_t > v, const 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< uint16_t > hwy::HWY_NAMESPACE::operator* (const Vec128< uint16_t > a, const Vec128< uint16_t > b)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::operator* (const Vec128< uint32_t > a, const Vec128< uint32_t > b)
 
template<size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::operator* (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
template<size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator* (const Vec128< uint32_t, N > a, const Vec128< uint32_t, N > b)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::operator* (const Vec128< int16_t > a, const Vec128< int16_t > b)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::operator* (const Vec128< int32_t > a, const Vec128< int32_t > b)
 
template<size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::operator* (const Vec128< int16_t, N > a, const Vec128< int16_t, N > b)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator* (const Vec128< int32_t, N > a, const Vec128< int32_t, N > b)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::MulHigh (const Vec128< int16_t > a, const Vec128< int16_t > b)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::MulHigh (const Vec128< uint16_t > a, const Vec128< uint16_t > b)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::MulHigh (const Vec128< int16_t, N > a, const Vec128< int16_t, N > b)
 
template<size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::MulHigh (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec128< int16_t > a, Vec128< int16_t > b)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::ApproximateReciprocal (const Vec128< float > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ApproximateReciprocal (const Vec128< float, N > v)
 
HWY_INLINE Vec128< float > hwy::HWY_NAMESPACE::detail::ReciprocalNewtonRaphsonStep (const Vec128< float > recip, const Vec128< float > divisor)
 
template<size_t N>
HWY_INLINE Vec128< float, N > hwy::HWY_NAMESPACE::detail::ReciprocalNewtonRaphsonStep (const Vec128< float, N > recip, Vec128< float, N > divisor)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::operator/ (const Vec128< float, N > a, const Vec128< float, N > b)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::AbsDiff (const Vec128< float > a, const Vec128< float > b)
 
template<size_t N, HWY_IF_LE64(float, N) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::AbsDiff (const Vec128< float, N > a, const Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::MulAdd (const Vec128< float, N > mul, const Vec128< float, N > x, const Vec128< float, N > add)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::NegMulAdd (const Vec128< float, N > mul, const Vec128< float, N > x, const Vec128< float, N > add)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::MulSub (const Vec128< float, N > mul, const Vec128< float, N > x, const Vec128< float, N > sub)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::NegMulSub (const Vec128< float, N > mul, const Vec128< float, N > x, const Vec128< float, N > sub)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (const Vec128< float > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (const Vec128< float, N > v)
 
HWY_INLINE Vec128< float > hwy::HWY_NAMESPACE::detail::ReciprocalSqrtStep (const Vec128< float > root, const Vec128< float > recip)
 
template<size_t N>
HWY_INLINE Vec128< float, N > hwy::HWY_NAMESPACE::detail::ReciprocalSqrtStep (const Vec128< float, N > root, Vec128< float, N > recip)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Sqrt (const Vec128< float, 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_LE64(T, N) >
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<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<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_LE64(T, N) >
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_LE64(T, N) >
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_LE64(T, N) >
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_LE64(T, N) >
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)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::Abs (const Vec128< int8_t > v)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::Abs (const Vec128< int16_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Abs (const Vec128< int32_t > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Abs (const Vec128< float > v)
 
template<size_t N, HWY_IF_LE64(int8_t, N) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::Abs (const Vec128< int8_t, N > v)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::Abs (const Vec128< int16_t, N > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::Abs (const Vec128< int32_t, N > v)
 
template<size_t N, HWY_IF_LE64(float, N) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Abs (const Vec128< float, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CopySign (const Vec128< T, N > magn, const Vec128< T, N > sign)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CopySignToAbs (const Vec128< T, N > abs, const 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<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::VecFromMask (Simd< T, N, 0 > d, const Mask128< T, N > v)
 
template<typename TFrom , typename TTo , size_t N>
HWY_API Mask128< TTo, N > hwy::HWY_NAMESPACE::RebindMask (Simd< TTo, N, 0 > dto, Mask128< TFrom, N > m)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenElseZero (const Mask128< T, N > mask, const Vec128< T, N > yes)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenZeroElse (const Mask128< T, N > mask, const 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 Vec128< T, N > hwy::HWY_NAMESPACE::ZeroIfNegative (Vec128< T, N > v)
 
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<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::FirstN (const Simd< T, N, 0 > 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)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::Min (const Vec128< uint64_t, N > a, const Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::Min (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::Max (const Vec128< uint64_t, N > a, const Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::Max (const Vec128< int64_t, N > a, const Vec128< int64_t, N > b)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::LoadU (Full128< uint8_t >, const uint8_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::LoadU (Full128< uint16_t >, const uint16_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::LoadU (Full128< uint32_t >, const uint32_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::LoadU (Full128< uint64_t >, const uint64_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::LoadU (Full128< int8_t >, const int8_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::LoadU (Full128< int16_t >, const int16_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::LoadU (Full128< int32_t >, const int32_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::LoadU (Full128< int64_t >, const int64_t *HWY_RESTRICT unaligned)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::LoadU (Full128< float >, const float *HWY_RESTRICT unaligned)
 
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::LoadU (Full64< uint8_t >, const uint8_t *HWY_RESTRICT p)
 
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::LoadU (Full64< uint16_t >, const uint16_t *HWY_RESTRICT p)
 
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::LoadU (Full64< uint32_t >, const uint32_t *HWY_RESTRICT p)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::LoadU (Full64< uint64_t >, const uint64_t *HWY_RESTRICT p)
 
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::LoadU (Full64< int8_t >, const int8_t *HWY_RESTRICT p)
 
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::LoadU (Full64< int16_t >, const int16_t *HWY_RESTRICT p)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::LoadU (Full64< int32_t >, const int32_t *HWY_RESTRICT p)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::LoadU (Full64< int64_t >, const int64_t *HWY_RESTRICT p)
 
HWY_API Vec64< float > hwy::HWY_NAMESPACE::LoadU (Full64< float >, const float *HWY_RESTRICT p)
 
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::LoadU (Full32< uint32_t >, const uint32_t *HWY_RESTRICT p)
 
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::LoadU (Full32< int32_t >, const int32_t *HWY_RESTRICT p)
 
HWY_API Vec32< float > hwy::HWY_NAMESPACE::LoadU (Full32< float >, const float *HWY_RESTRICT p)
 
template<typename T , HWY_IF_LANE_SIZE_ONE_OF(T, 0x6) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::LoadU (Full32< T > d, const T *HWY_RESTRICT p)
 
HWY_API Vec128< uint16_t, 1 > hwy::HWY_NAMESPACE::LoadU (Simd< uint16_t, 1, 0 >, const uint16_t *HWY_RESTRICT p)
 
HWY_API Vec128< int16_t, 1 > hwy::HWY_NAMESPACE::LoadU (Simd< int16_t, 1, 0 >, const int16_t *HWY_RESTRICT p)
 
template<typename T , HWY_IF_LANE_SIZE(T, 1) >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::LoadU (Simd< T, 2, 0 > d, const T *HWY_RESTRICT p)
 
HWY_API Vec128< uint8_t, 1 > hwy::HWY_NAMESPACE::LoadU (Simd< uint8_t, 1, 0 >, const uint8_t *HWY_RESTRICT p)
 
HWY_API Vec128< int8_t, 1 > hwy::HWY_NAMESPACE::LoadU (Simd< int8_t, 1, 0 >, const int8_t *HWY_RESTRICT p)
 
template<size_t N>
HWY_API Vec128< float16_t, N > hwy::HWY_NAMESPACE::LoadU (Simd< float16_t, N, 0 > d, const float16_t *HWY_RESTRICT p)
 
template<size_t N>
HWY_API Vec128< bfloat16_t, N > hwy::HWY_NAMESPACE::LoadU (Simd< bfloat16_t, N, 0 > d, const bfloat16_t *HWY_RESTRICT p)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Load (Simd< T, N, 0 > d, const T *HWY_RESTRICT p)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaskedLoad (Mask128< T, N > m, Simd< T, N, 0 > d, const T *HWY_RESTRICT aligned)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::LoadDup128 (Simd< T, N, 0 > d, const T *const HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< uint8_t > v, Full128< uint8_t >, uint8_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< uint16_t > v, Full128< uint16_t >, uint16_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< uint32_t > v, Full128< uint32_t >, uint32_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< uint64_t > v, Full128< uint64_t >, uint64_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< int8_t > v, Full128< int8_t >, int8_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< int16_t > v, Full128< int16_t >, int16_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< int32_t > v, Full128< int32_t >, int32_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< int64_t > v, Full128< int64_t >, int64_t *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< float > v, Full128< float >, float *HWY_RESTRICT unaligned)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< uint8_t > v, Full64< uint8_t >, uint8_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< uint16_t > v, Full64< uint16_t >, uint16_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< uint32_t > v, Full64< uint32_t >, uint32_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< uint64_t > v, Full64< uint64_t >, uint64_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< int8_t > v, Full64< int8_t >, int8_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< int16_t > v, Full64< int16_t >, int16_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< int32_t > v, Full64< int32_t >, int32_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< int64_t > v, Full64< int64_t >, int64_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec64< float > v, Full64< float >, float *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec32< uint32_t > v, Full32< uint32_t >, uint32_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec32< int32_t > v, Full32< int32_t >, int32_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec32< float > v, Full32< float >, float *HWY_RESTRICT p)
 
template<typename T , HWY_IF_LANE_SIZE_ONE_OF(T, 0x6) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec32< T > v, Full32< T > d, T *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< uint16_t, 1 > v, Simd< uint16_t, 1, 0 >, uint16_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< int16_t, 1 > v, Simd< int16_t, 1, 0 >, int16_t *HWY_RESTRICT p)
 
template<typename T , HWY_IF_LANE_SIZE(T, 1) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< T, 2 > v, Simd< T, 2, 0 > d, T *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< uint8_t, 1 > v, Simd< uint8_t, 1, 0 >, uint8_t *HWY_RESTRICT p)
 
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec128< int8_t, 1 > v, Simd< int8_t, 1, 0 >, int8_t *HWY_RESTRICT p)
 
template<size_t N>
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< float16_t, N > v, Simd< float16_t, N, 0 > d, float16_t *HWY_RESTRICT p)
 
template<size_t N>
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< bfloat16_t, N > v, Simd< bfloat16_t, N, 0 > d, bfloat16_t *HWY_RESTRICT p)
 
template<typename T , size_t N>
HWY_API void hwy::HWY_NAMESPACE::Store (Vec128< T, N > v, Simd< T, N, 0 > d, T *HWY_RESTRICT aligned)
 
template<typename T , size_t N>
HWY_API void hwy::HWY_NAMESPACE::BlendedStore (Vec128< T, N > v, Mask128< T, N > m, Simd< T, N, 0 > d, T *HWY_RESTRICT p)
 
template<typename T , size_t N>
HWY_API void hwy::HWY_NAMESPACE::Stream (const Vec128< T, N > v, Simd< T, N, 0 > d, T *HWY_RESTRICT aligned)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< uint16_t >, const Vec64< uint8_t > v)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< uint32_t >, const Vec32< uint8_t > v)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< uint32_t >, const Vec64< uint16_t > v)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< uint64_t >, const Vec64< uint32_t > v)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< int16_t > d, const Vec64< uint8_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< int32_t > d, const Vec32< uint8_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< int32_t > d, const Vec64< uint16_t > v)
 
template<size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< uint16_t, N, 0 >, const Vec128< uint8_t, N > v)
 
template<size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< uint32_t, N, 0 >, const Vec128< uint8_t, N > v)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< uint32_t, N, 0 >, const Vec128< uint16_t, N > v)
 
template<size_t N, HWY_IF_LE64(uint64_t, N) >
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< uint64_t, N, 0 >, const Vec128< uint32_t, N > v)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< int16_t, N, 0 > d, const Vec128< uint8_t, N > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< int32_t, N, 0 >, const Vec128< uint8_t, N > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< int32_t, N, 0 >, const Vec128< uint16_t, N > v)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< int16_t >, const Vec64< int8_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< int32_t >, const Vec32< int8_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< int32_t >, const Vec64< int16_t > v)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::PromoteTo (Full128< int64_t >, const Vec64< int32_t > v)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< int16_t, N, 0 >, const Vec128< int8_t, N > v)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< int32_t, N, 0 >, const Vec128< int8_t, N > v)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< int32_t, N, 0 >, const Vec128< int16_t, N > v)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< int64_t, N, 0 >, const Vec128< int32_t, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< float, N, 0 > df32, const Vec128< float16_t, N > v)
 
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::DemoteTo (Full64< uint16_t >, const Vec128< int32_t > v)
 
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::DemoteTo (Full64< int16_t >, const Vec128< int32_t > v)
 
HWY_API Vec32< uint8_t > hwy::HWY_NAMESPACE::DemoteTo (Full32< uint8_t >, const Vec128< int32_t > v)
 
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::DemoteTo (Full64< uint8_t >, const Vec128< int16_t > v)
 
HWY_API Vec32< int8_t > hwy::HWY_NAMESPACE::DemoteTo (Full32< int8_t >, const Vec128< int32_t > v)
 
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::DemoteTo (Full64< int8_t >, const Vec128< int16_t > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< uint16_t, N, 0 >, const Vec128< int32_t, N > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< int16_t, N, 0 >, const Vec128< int32_t, N > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< uint8_t, N, 0 >, const Vec128< int32_t, N > v)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< uint8_t, N, 0 >, const Vec128< int16_t, N > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< int8_t, N, 0 >, const Vec128< int32_t, N > v)
 
template<size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< int8_t, N, 0 >, const Vec128< int16_t, N > v)
 
template<size_t N>
HWY_API Vec128< float16_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< float16_t, N, 0 > df16, const Vec128< float, N > v)
 
template<size_t N>
HWY_API Vec128< bfloat16_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< bfloat16_t, N, 0 > dbf16, const Vec128< float, N > v)
 
HWY_API Vec32< uint8_t > hwy::HWY_NAMESPACE::U8FromU32 (const Vec128< uint32_t > v)
 
template<size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::U8FromU32 (const Vec128< uint32_t, N > v)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< uint8_t, N, 0 >, const Vec128< int32_t > v)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::DemoteTo (Simd< int8_t, N, 0 >, const Vec128< int32_t > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::ConvertTo (Full128< float >, const Vec128< int32_t > v)
 
template<size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ConvertTo (Simd< float, N, 0 >, const Vec128< int32_t, N > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::ConvertTo (Full128< float >, const Vec128< uint32_t > v)
 
template<size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ConvertTo (Simd< float, N, 0 >, const Vec128< uint32_t, N > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::ConvertTo (Full128< int32_t >, const Vec128< float > v)
 
template<size_t N, HWY_IF_LE64(float, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::ConvertTo (Simd< int32_t, N, 0 >, const Vec128< float, 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_FLOAT(T) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::IsInf (const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::IsFinite (const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_LE64(uint8_t, N) >
HWY_API Vec128< T, N/2 > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< T, N > v)
 
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< uint8_t > v)
 
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< uint16_t > v)
 
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< uint32_t > v)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< uint64_t > v)
 
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< int8_t > v)
 
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< int16_t > v)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< int32_t > v)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< int64_t > v)
 
HWY_API Vec64< float > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< float > v)
 
HWY_API Vec64< bfloat16_t > hwy::HWY_NAMESPACE::LowerHalf (const Vec128< bfloat16_t > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N/2 > hwy::HWY_NAMESPACE::LowerHalf (Simd< T, N/2, 0 >, Vec128< T, N > v)
 
template<int kBytes, typename T , class V128 = Vec128<T>>
HWY_API V128 hwy::HWY_NAMESPACE::CombineShiftRightBytes (Full128< T > d, V128 hi, V128 lo)
 
template<int kBytes, typename T >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::CombineShiftRightBytes (Full64< T > d, Vec64< T > hi, Vec64< T > lo)
 
template<int kBytes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftBytes (Simd< T, N, 0 >, Vec128< T, N > v)
 
template<int kBytes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftBytes (const Vec128< T, N > v)
 
template<int kLanes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftLanes (Simd< T, N, 0 > d, const Vec128< T, N > v)
 
template<int kLanes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftLanes (const Vec128< T, N > v)
 
template<int kBytes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftRightBytes (Simd< T, N, 0 >, Vec128< T, N > v)
 
template<int kLanes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftRightLanes (Simd< T, N, 0 > d, const Vec128< T, N > v)
 
template<int kBytes, typename T , size_t N, HWY_IF_LE32(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CombineShiftRightBytes (Simd< T, N, 0 > d, Vec128< T, N > hi, Vec128< T, N > lo)
 
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< uint8_t >, const Vec128< uint8_t > v)
 
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< uint16_t >, const Vec128< uint16_t > v)
 
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< uint32_t >, const Vec128< uint32_t > v)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< uint64_t >, const Vec128< uint64_t > v)
 
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< int8_t >, const Vec128< int8_t > v)
 
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< int16_t >, const Vec128< int16_t > v)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< int32_t >, const Vec128< int32_t > v)
 
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< int64_t >, const Vec128< int64_t > v)
 
HWY_API Vec64< float > hwy::HWY_NAMESPACE::UpperHalf (Full64< float >, const Vec128< float > v)
 
HWY_API Vec64< bfloat16_t > hwy::HWY_NAMESPACE::UpperHalf (Full64< bfloat16_t > dbh, const Vec128< bfloat16_t > v)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_API Vec128< T,(N+1)/2 > hwy::HWY_NAMESPACE::UpperHalf (Half< Simd< T, N, 0 > >, Vec128< T, N > v)
 
template<int kLane>
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::Broadcast (const Vec128< uint16_t > v)
 
template<int kLane, size_t N, HWY_IF_LE64(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< uint16_t, N > v)
 
template<int kLane>
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Broadcast (const Vec128< uint32_t > v)
 
template<int kLane, size_t N, HWY_IF_LE64(uint32_t, N) >
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< uint32_t, N > v)
 
template<int kLane>
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::Broadcast (const Vec128< uint64_t > v)
 
template<int kLane>
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::Broadcast (const Vec128< int16_t > v)
 
template<int kLane, size_t N, HWY_IF_LE64(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< int16_t, N > v)
 
template<int kLane>
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Broadcast (const Vec128< int32_t > v)
 
template<int kLane, size_t N, HWY_IF_LE64(int32_t, N) >
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< int32_t, N > v)
 
template<int kLane>
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Broadcast (const Vec128< int64_t > v)
 
template<int kLane>
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Broadcast (const Vec128< float > v)
 
template<int kLane, size_t N, HWY_IF_LE64(float, N) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< float, N > v)
 
template<int kLane>
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::Broadcast (const Vec64< uint64_t > v)
 
template<int kLane>
HWY_API Vec64< int64_t > hwy::HWY_NAMESPACE::Broadcast (const Vec64< int64_t > v)
 
template<typename T , size_t N, typename TI , HWY_IF_LE128(T, N) >
HWY_API Indices128< T, N > hwy::HWY_NAMESPACE::IndicesFromVec (Simd< T, N, 0 > d, Vec128< TI, N > vec)
 
template<typename T , size_t N, typename TI , HWY_IF_LE128(T, N) >
HWY_API Indices128< T, N > hwy::HWY_NAMESPACE::SetTableIndices (Simd< T, N, 0 > 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 >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Reverse (Simd< T, 1, 0 >, const Vec128< T, 1 > v)
 
template<typename T , HWY_IF_LANE_SIZE(T, 4) >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::Reverse (Simd< T, 2, 0 >, const Vec128< T, 2 > v)
 
template<typename T , HWY_IF_LANE_SIZE(T, 8) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse (Full128< T >, const Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 2) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Reverse (Simd< T, N, 0 > d, const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 2) , HWY_IF_LE64(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Reverse2 (Simd< T, N, 0 > d, const Vec128< T, N > v)
 
template<typename T , HWY_IF_LANE_SIZE(T, 2) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse2 (Full128< T > d, const Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 8) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Reverse2 (Simd< T, N, 0 >, const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 2) , HWY_IF_LE64(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Reverse4 (Simd< T, N, 0 > d, const Vec128< T, N > v)
 
template<typename T , HWY_IF_LANE_SIZE(T, 2) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse4 (Full128< T > d, const Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 4) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Reverse4 (Simd< T, N, 0 >, const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 2) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Reverse8 (Simd< T, N, 0 > d, const Vec128< T, N > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle1032 (const Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle01 (const Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle0321 (const Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle2103 (const Vec128< T > v)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle0123 (const Vec128< T > v)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::InterleaveLower (const Vec128< uint64_t > a, const Vec128< uint64_t > b)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::InterleaveLower (const Vec128< int64_t > a, const Vec128< int64_t > b)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::InterleaveLower (const Vec128< float > a, const Vec128< float > b)
 
template<size_t N, HWY_IF_LE64(float, N) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::InterleaveLower (const Vec128< float, N > a, const Vec128< float, N > b)
 
template<typename T , size_t N, HWY_IF_LE32(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, class V = Vec128<T, N>>
HWY_APIhwy::HWY_NAMESPACE::InterleaveLower (Simd< T, N, 0 >, V a, V b)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::detail::InterleaveUpper (const Vec128< uint64_t > a, const Vec128< uint64_t > b)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::detail::InterleaveUpper (Vec128< int64_t > a, Vec128< int64_t > b)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::detail::InterleaveUpper (Vec128< float > a, Vec128< float > b)
 
HWY_API Vec64< float > hwy::HWY_NAMESPACE::detail::InterleaveUpper (const Vec64< float > a, const Vec64< float > b)
 
template<typename T , size_t N, HWY_IF_GE64(T, N) , class V = Vec128<T, N>>
HWY_APIhwy::HWY_NAMESPACE::InterleaveUpper (Simd< T, N, 0 >, V a, V 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 N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (Simd< float, N, 0 > df32, Vec128< bfloat16_t, 2 *N > a, Vec128< bfloat16_t, 2 *N > b, const Vec128< float, N > sum0, Vec128< float, N > &sum1)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (Full128< int32_t >, Vec128< int16_t > a, Vec128< int16_t > b, const Vec128< int32_t > sum0, Vec128< int32_t > &sum1)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (Full64< int32_t > d32, Vec64< int16_t > a, Vec64< int16_t > b, const Vec64< int32_t > sum0, Vec64< int32_t > &sum1)
 
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (Full32< int32_t > d32, Vec32< int16_t > a, Vec32< int16_t > b, const Vec32< int32_t > sum0, Vec32< int32_t > &sum1)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::Combine (Full128< uint8_t >, Vec64< uint8_t > hi, Vec64< uint8_t > lo)
 
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::Combine (Full128< uint16_t >, Vec64< uint16_t > hi, Vec64< uint16_t > lo)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Combine (Full128< uint32_t >, Vec64< uint32_t > hi, Vec64< uint32_t > lo)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::Combine (Full128< uint64_t >, Vec64< uint64_t > hi, Vec64< uint64_t > lo)
 
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::Combine (Full128< int8_t >, Vec64< int8_t > hi, Vec64< int8_t > lo)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::Combine (Full128< int16_t >, Vec64< int16_t > hi, Vec64< int16_t > lo)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Combine (Full128< int32_t >, Vec64< int32_t > hi, Vec64< int32_t > lo)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Combine (Full128< int64_t >, Vec64< int64_t > hi, Vec64< int64_t > lo)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Combine (Full128< float >, Vec64< float > hi, Vec64< float > lo)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Combine (Simd< T, N, 0 > d, Vec128< T, N/2 > hi, Vec128< T, N/2 > lo)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (const Vec128< float, N > sum0, const Vec128< float, N > sum1)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (const Vec128< int32_t > sum0, const Vec128< int32_t > sum1)
 
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (const Vec64< int32_t > sum0, const Vec64< int32_t > sum1)
 
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (const Vec32< int32_t > sum0, const Vec32< int32_t > sum1)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ZeroExtendVector (Simd< T, N, 0 > d, Vec128< T, N/2 > lo)
 
template<typename T , size_t N, HWY_IF_GE64(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ConcatLowerLower (const Simd< T, N, 0 > d, Vec128< T, N > hi, Vec128< T, N > lo)
 
template<typename T , size_t N, HWY_IF_GE64(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ConcatUpperUpper (const Simd< T, N, 0 > d, Vec128< T, N > hi, Vec128< T, N > lo)
 
template<typename T , size_t N, HWY_IF_GE64(T, N) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ConcatLowerUpper (const Simd< T, N, 0 > d, Vec128< T, N > hi, Vec128< T, N > lo)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ConcatUpperLower (Simd< T, N, 0 > d, Vec128< T, N > hi, Vec128< T, N > lo)
 
template<typename T , size_t N, hwy::EnableIf< N !=2 &&sizeof(T) *N > = 8>
hwy::HWY_NAMESPACE::ConcatOdd (Simd< T, N, 0 >, Vec128< T, N > hi, Vec128< T, N > lo)
 
template<typename T , HWY_IF_LANE_SIZE(T, 1) >
HWY_API Vec128< T, 4 > hwy::HWY_NAMESPACE::ConcatOdd (Simd< T, 4, 0 > d, Vec128< T, 4 > hi, Vec128< T, 4 > lo)
 
template<typename T >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::ConcatOdd (Simd< T, 2, 0 > d, Vec128< T, 2 > hi, Vec128< T, 2 > lo)
 
template<typename T , size_t N, hwy::EnableIf< N !=2 &&sizeof(T) *N > = 8>
hwy::HWY_NAMESPACE::ConcatEven (Simd< T, N, 0 >, Vec128< T, N > hi, Vec128< T, N > lo)
 
template<typename T , HWY_IF_LANE_SIZE(T, 1) >
HWY_API Vec128< T, 4 > hwy::HWY_NAMESPACE::ConcatEven (Simd< T, 4, 0 > d, Vec128< T, 4 > hi, Vec128< T, 4 > lo)
 
template<typename T >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::ConcatEven (Simd< T, 2, 0 > d, Vec128< T, 2 > hi, Vec128< T, 2 > lo)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 4) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::DupEven (Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 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<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<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::ReverseBlocks (Full128< T >, const Vec128< T > v)
 
template<size_t N>
HWY_API Vec128< bfloat16_t, 2 *N > hwy::HWY_NAMESPACE::ReorderDemote2To (Simd< bfloat16_t, 2 *N, 0 > dbf16, Vec128< float, N > a, Vec128< float, N > b)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (Full128< int16_t > d16, Vec128< int32_t > a, Vec128< int32_t > b)
 
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (Full64< int16_t >, Vec64< int32_t > a, Vec64< int32_t > b)
 
HWY_API Vec32< int16_t > hwy::HWY_NAMESPACE::ReorderDemote2To (Full32< int16_t >, Vec32< int32_t > a, Vec32< int32_t > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::PromoteTo (Simd< float, N, 0 > df32, const Vec128< bfloat16_t, N > v)
 
template<typename From , typename To , HWY_IF_UNSIGNED(From) , HWY_IF_UNSIGNED(To) , hwy::EnableIf<(sizeof(To)< sizeof(From))> * = nullptr>
HWY_API Vec128< To, 1 > hwy::HWY_NAMESPACE::TruncateTo (Simd< To, 1, 0 >, const Vec128< From, 1 > v)
 
HWY_API Vec128< uint8_t, 2 > hwy::HWY_NAMESPACE::TruncateTo (Simd< uint8_t, 2, 0 >, const Vec128< uint64_t, 2 > v)
 
HWY_API Vec32< uint16_t > hwy::HWY_NAMESPACE::TruncateTo (Simd< uint16_t, 2, 0 >, const Vec128< uint64_t, 2 > v)
 
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::TruncateTo (Simd< uint32_t, 2, 0 >, const Vec128< uint64_t, 2 > v)
 
template<size_t N, hwy::EnableIf< N > = 2>
hwy::HWY_NAMESPACE::TruncateTo (Simd< uint8_t, N, 0 >, const Vec128< uint32_t, N > v)
 
template<size_t N, hwy::EnableIf< N > = 2>
hwy::HWY_NAMESPACE::TruncateTo (Simd< uint16_t, N, 0 >, const Vec128< uint32_t, N > v)
 
template<size_t N, hwy::EnableIf< N > = 2>
hwy::HWY_NAMESPACE::TruncateTo (Simd< uint8_t, N, 0 >, const Vec128< uint16_t, N > v)
 
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< int64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (const Vec128< int32_t, N > a, const Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (const Vec128< uint32_t, N > a, const Vec128< uint32_t, N > b)
 
HWY_INLINE Vec128< uint64_t > hwy::HWY_NAMESPACE::MulEven (Vec128< uint64_t > a, Vec128< uint64_t > b)
 
HWY_INLINE Vec128< uint64_t > hwy::HWY_NAMESPACE::MulOdd (Vec128< uint64_t > a, Vec128< uint64_t > b)
 
template<typename T , typename TI >
HWY_API Vec128< TI > hwy::HWY_NAMESPACE::TableLookupBytes (const Vec128< T > bytes, const Vec128< TI > from)
 
template<typename T , typename TI , size_t NI, HWY_IF_LE64(TI, NI) >
HWY_API Vec128< TI, NI > hwy::HWY_NAMESPACE::TableLookupBytes (const Vec128< T > bytes, const Vec128< TI, NI > from)
 
template<typename T , size_t N, typename TI , HWY_IF_LE64(T, N) >
HWY_API Vec128< TI > hwy::HWY_NAMESPACE::TableLookupBytes (const Vec128< T, N > bytes, const Vec128< TI > from)
 
template<typename T , size_t N, typename TI , size_t NI, HWY_IF_LE64(T, N) , HWY_IF_LE64(TI, NI) >
HWY_API VFromD< Repartition< T, Simd< TI, NI, 0 > > > hwy::HWY_NAMESPACE::TableLookupBytes (Vec128< T, N > bytes, Vec128< TI, NI > from)
 
template<class V , class VI >
HWY_API VI hwy::HWY_NAMESPACE::TableLookupBytesOr0 (const V bytes, const VI from)
 
template<typename T , size_t N, typename Offset , HWY_IF_LE128(T, N) >
HWY_API void hwy::HWY_NAMESPACE::ScatterOffset (Vec128< T, N > v, Simd< T, N, 0 > d, T *HWY_RESTRICT base, const Vec128< Offset, N > offset)
 
template<typename T , size_t N, typename Index , HWY_IF_LE128(T, N) >
HWY_API void hwy::HWY_NAMESPACE::ScatterIndex (Vec128< T, N > v, Simd< T, N, 0 > d, T *HWY_RESTRICT base, const Vec128< Index, N > index)
 
template<typename T , size_t N, typename Offset >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::GatherOffset (const Simd< T, N, 0 > d, const T *HWY_RESTRICT base, const Vec128< Offset, N > offset)
 
template<typename T , size_t N, typename Index >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::GatherIndex (const Simd< T, N, 0 > d, const T *HWY_RESTRICT base, const Vec128< Index, N > index)
 
template<typename T >
HWY_INLINE Vec128< T, 1 > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< sizeof(T)>, const Vec128< T, 1 > v)
 
template<typename T >
HWY_INLINE Vec128< T, 1 > hwy::HWY_NAMESPACE::detail::MinOfLanes (hwy::SizeTag< sizeof(T)>, const Vec128< T, 1 > v)
 
template<typename T >
HWY_INLINE Vec128< T, 1 > hwy::HWY_NAMESPACE::detail::MaxOfLanes (hwy::SizeTag< sizeof(T)>, const Vec128< T, 1 > v)
 
template<typename T , HWY_IF_LANE_SIZE(T, 4) >
HWY_INLINE Vec128< T, 2 > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 4 >, const Vec128< T, 2 > v10)
 
template<typename T >
HWY_INLINE Vec128< T, 2 > hwy::HWY_NAMESPACE::detail::MinOfLanes (hwy::SizeTag< 4 >, const Vec128< T, 2 > v10)
 
template<typename T >
HWY_INLINE Vec128< T, 2 > hwy::HWY_NAMESPACE::detail::MaxOfLanes (hwy::SizeTag< 4 >, const Vec128< T, 2 > v10)
 
HWY_INLINE Vec128< uint32_t > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 4 >, const Vec128< uint32_t > v)
 
HWY_INLINE Vec128< int32_t > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 4 >, const Vec128< int32_t > v)
 
HWY_INLINE Vec128< float > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 4 >, const Vec128< float > v)
 
HWY_INLINE Vec128< uint64_t > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 8 >, const Vec128< uint64_t > v)
 
HWY_INLINE Vec128< int64_t > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 8 >, const Vec128< int64_t > v)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::MinOfLanes (hwy::SizeTag< 4 >, const Vec128< T > v3210)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::MaxOfLanes (hwy::SizeTag< 4 >, const Vec128< T > v3210)
 
template<size_t N, HWY_IF_GE32(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 2 >, Vec128< uint16_t, N > v)
 
template<size_t N, HWY_IF_GE32(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< 2 >, Vec128< int16_t, N > v)
 
template<size_t N, HWY_IF_GE32(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::detail::MinOfLanes (hwy::SizeTag< 2 >, Vec128< uint16_t, N > v)
 
template<size_t N, HWY_IF_GE32(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::detail::MinOfLanes (hwy::SizeTag< 2 >, Vec128< int16_t, N > v)
 
template<size_t N, HWY_IF_GE32(uint16_t, N) >
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::detail::MaxOfLanes (hwy::SizeTag< 2 >, Vec128< uint16_t, N > v)
 
template<size_t N, HWY_IF_GE32(int16_t, N) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::detail::MaxOfLanes (hwy::SizeTag< 2 >, Vec128< int16_t, N > v)
 
template<typename T , HWY_IF_SUM_REDUCTION(T) >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::detail::SumOfLanes (hwy::SizeTag< sizeof(T)>, const Vec128< T, 2 > v10)
 
template<typename T , HWY_IF_MINMAX_REDUCTION(T) >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::detail::MinOfLanes (hwy::SizeTag< sizeof(T)>, const Vec128< T, 2 > v10)
 
template<typename T , HWY_IF_MINMAX_REDUCTION(T) >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::detail::MaxOfLanes (hwy::SizeTag< sizeof(T)>, const Vec128< T, 2 > v10)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::SumOfLanes (Simd< T, N, 0 >, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MinOfLanes (Simd< T, N, 0 >, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaxOfLanes (Simd< T, N, 0 >, const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::Set64 (Simd< T, N, 0 >, uint64_t mask_bits)
 
template<typename T >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::Set64 (Full128< T > d, uint64_t mask_bits)
 
template<typename T , size_t N, HWY_IF_LANE_SIZE(T, 1) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::LoadMaskBits (Simd< T, N, 0 > d, uint64_t mask_bits)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::LoadMaskBits (Simd< T, N, 0 > d, const uint8_t *HWY_RESTRICT bits)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::NibblesFromMask (const Full128< T > d, Mask128< T > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::NibblesFromMask (const Full64< T > d, Mask64< T > mask)
 
template<typename T , size_t N, HWY_IF_LE32(T, N) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::NibblesFromMask (Simd< T, N, 0 >, Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 1 >, const Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 1 >, const Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 2 >, const Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 2 >, const Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 4 >, const Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 4 >, const Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 8 >, const Mask128< T > m)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 8 >, const 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 (const Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 1 >, const Mask128< T > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 2 >, const Mask128< T > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 4 >, const Mask128< T > mask)
 
template<typename T >
HWY_INLINE size_t hwy::HWY_NAMESPACE::detail::CountTrue (hwy::SizeTag< 8 >, const Mask128< T > mask)
 
template<typename T >
HWY_API size_t hwy::HWY_NAMESPACE::CountTrue (Full128< T >, const Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_API size_t hwy::HWY_NAMESPACE::CountTrue (Simd< T, N, 0 > d, const Mask128< T, N > mask)
 
template<typename T , size_t N>
HWY_API size_t hwy::HWY_NAMESPACE::FindKnownFirstTrue (const Simd< T, N, 0 > d, const Mask128< T, N > mask)
 
template<typename T , size_t N>
HWY_API intptr_t hwy::HWY_NAMESPACE::FindFirstTrue (const Simd< T, N, 0 > d, const Mask128< T, N > mask)
 
template<typename T , size_t N>
HWY_API size_t hwy::HWY_NAMESPACE::StoreMaskBits (Simd< T, N, 0 >, const Mask128< T, N > mask, uint8_t *bits)
 
template<typename T , size_t N>
HWY_API bool hwy::HWY_NAMESPACE::AllFalse (const Simd< T, N, 0 > d, const Mask128< T, N > m)
 
template<typename T >
HWY_API bool hwy::HWY_NAMESPACE::AllTrue (const Full128< T > d, const Mask128< T > m)
 
template<typename T , size_t N, HWY_IF_LE64(T, N) >
HWY_API bool hwy::HWY_NAMESPACE::AllTrue (const Simd< T, N, 0 > d, const Mask128< T, N > m)
 
HWY_INLINE Vec128< uint8_t > hwy::HWY_NAMESPACE::detail::Load8Bytes (Full128< uint8_t >, const uint8_t *bytes)
 
template<size_t N, HWY_IF_LE64(uint8_t, N) >
HWY_INLINE Vec128< uint8_t, N > hwy::HWY_NAMESPACE::detail::Load8Bytes (Simd< uint8_t, N, 0 > d, const uint8_t *bytes)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromBits (hwy::SizeTag< 2 >, const uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromNotBits (hwy::SizeTag< 2 >, const uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromBits (hwy::SizeTag< 4 >, const uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IdxFromNotBits (hwy::SizeTag< 4 >, const uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::Compress (Vec128< T, N > v, const uint64_t mask_bits)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::CompressNot (Vec128< T, N > v, const 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_LANE_SIZE(T, 8) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Compress (Vec128< T, N > v, const 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_LANE_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_LANE_SIZE_ONE_OF(T, 0x14) >
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_LANE_SIZE(T, 1) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::CompressBits (Vec128< T, N > v, const uint8_t *HWY_RESTRICT bits)
 
template<typename T , size_t N, HWY_IF_NOT_LANE_SIZE(T, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressStore (Vec128< T, N > v, const Mask128< T, N > mask, Simd< T, N, 0 > d, T *HWY_RESTRICT unaligned)
 
template<typename T , size_t N, HWY_IF_NOT_LANE_SIZE(T, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressBlendedStore (Vec128< T, N > v, Mask128< T, N > m, Simd< T, N, 0 > d, T *HWY_RESTRICT unaligned)
 
template<typename T , size_t N, HWY_IF_NOT_LANE_SIZE(T, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressBitsStore (Vec128< T, N > v, const uint8_t *HWY_RESTRICT bits, Simd< T, N, 0 > d, T *HWY_RESTRICT unaligned)
 
template<typename T , size_t N, HWY_IF_LOAD_INT(T, N) >
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved2 (Simd< T, N, 0 >, const T *HWY_RESTRICT unaligned, Vec128< T, N > &v0, Vec128< T, N > &v1)
 
template<typename T , size_t N, HWY_IF_LOAD_INT(T, N) >
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved3 (Simd< T, N, 0 >, const T *HWY_RESTRICT unaligned, Vec128< T, N > &v0, Vec128< T, N > &v1, Vec128< T, N > &v2)
 
template<typename T , size_t N, HWY_IF_LOAD_INT(T, N) >
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved4 (Simd< T, N, 0 >, const T *HWY_RESTRICT unaligned, Vec128< T, N > &v0, Vec128< T, N > &v1, Vec128< T, N > &v2, Vec128< T, N > &v3)
 
template<typename T , size_t N, HWY_IF_STORE_INT(T, N) >
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved2 (const Vec128< T, N > v0, const Vec128< T, N > v1, Simd< T, N, 0 >, T *HWY_RESTRICT unaligned)
 
template<typename T , size_t N, HWY_IF_STORE_INT(T, N) >
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved3 (const Vec128< T, N > v0, const Vec128< T, N > v1, const Vec128< T, N > v2, Simd< T, N, 0 >, T *HWY_RESTRICT unaligned)
 
template<typename T , size_t N, HWY_IF_STORE_INT(T, N) >
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved4 (const Vec128< T, N > v0, const Vec128< T, N > v1, const Vec128< T, N > v2, const Vec128< T, N > v3, Simd< T, N, 0 >, T *HWY_RESTRICT unaligned)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::Lt128 (Simd< T, N, 0 > d, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::Lt128Upper (Simd< T, N, 0 > d, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::Eq128 (Simd< T, N, 0 > d, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::Eq128Upper (Simd< T, N, 0 > d, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::Ne128 (Simd< T, N, 0 > d, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_LE128(T, N) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::Ne128Upper (Simd< T, N, 0 > d, Vec128< T, N > a, Vec128< T, N > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Min128 (D d, const VFromD< D > a, const VFromD< D > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Max128 (D d, const VFromD< D > a, const VFromD< D > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Min128Upper (D d, const VFromD< D > a, const VFromD< D > b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::Max128Upper (D d, const VFromD< D > a, const VFromD< D > b)
 
 HWY_AFTER_NAMESPACE ()
 

Macro Definition Documentation

◆ HWY_IF_LOAD_INT

#define HWY_IF_LOAD_INT (   T,
 
)     hwy::EnableIf<N * sizeof(T) >= 8 && (N == 1 || sizeof(T) < 8)>* = nullptr

◆ HWY_IF_MINMAX_REDUCTION

#define HWY_IF_MINMAX_REDUCTION (   T)    HWY_IF_LANE_SIZE_ONE_OF(T, 1 << 8)

◆ HWY_IF_STORE_INT

#define HWY_IF_STORE_INT (   T,
 
)     hwy::EnableIf<N * sizeof(T) >= 8 && (N == 1 || sizeof(T) < 8)>* = nullptr

◆ HWY_IF_SUM_REDUCTION

#define HWY_IF_SUM_REDUCTION (   T)    HWY_IF_LANE_SIZE_ONE_OF(T, 0)

◆ HWY_NATIVE_LOAD_STORE_INTERLEAVED

#define HWY_NATIVE_LOAD_STORE_INTERLEAVED

◆ HWY_NATIVE_POPCNT

#define HWY_NATIVE_POPCNT

◆ 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_SET1

#define HWY_NEON_BUILD_ARG_HWY_SET1   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 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 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 type##_t *from, Tuple4<type##_t, size>

◆ HWY_NEON_BUILD_PARAM_HWY_SET1

#define HWY_NEON_BUILD_PARAM_HWY_SET1 (   type,
  size 
)     Simd<type##_t, size, 0> /* tag */, const 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, 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, 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, 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_SET1

#define HWY_NEON_BUILD_RET_HWY_SET1 (   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_RET_PAIRWISE_REDUCTION

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

◆ 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_SET1

#define HWY_NEON_BUILD_TPL_HWY_SET1

◆ 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:77
#define HWY_CONCAT(a, b)
Definition: base.h:132

◆ 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:135
const vfloat64m1_t v
Definition: rvv-inl.h:1998

◆ 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); \
}
#define HWY_API
Definition: base.h:129
HWY_API Mask128< T, N > Not(const Mask128< T, N > m)
Definition: arm_neon-inl.h:2285

◆ HWY_NEON_DEF_FUNCTION_ALL_FLOATS

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

◆ 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:194

◆ 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)
#define HWY_NEON_DEF_FUNCTION(type, size, name, prefix, infix, suffix, args)
Definition: arm_neon-inl.h:2432

◆ 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(uint64, 2, name, prefix##q, infix, u64, 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(int64, 2, name, prefix##q, infix, s64, args)

◆ 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:106

◆ 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:178

◆ 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:189

◆ 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_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_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_UIF81632

#define HWY_NEON_DEF_FUNCTION_UIF81632 (   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) \
HWY_NEON_DEF_FUNCTION_FLOAT_32(name, prefix, infix, args)
#define HWY_NEON_DEF_FUNCTION_UINT_8_16_32(name, prefix, infix, args)
Definition: arm_neon-inl.h:172

◆ 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:98

◆ 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:
name(hwy::SizeTag<sizeof(type##_t)>, const 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 HWY_NEON_BUILD_RET_PAIRWISE_REDUCTION( \
type, size)(HWY_NEON_EVAL(vdup##_lane_##suffix, tmp, 0)); \
}
#define HWY_NEON_BUILD_RET_PAIRWISE_REDUCTION(type, size)
Definition: arm_neon-inl.h:5188
Definition: base.h:435

◆ HWY_NEON_DEF_PAIRWISE_REDUCTIONS

#define HWY_NEON_DEF_PAIRWISE_REDUCTIONS (   name,
  prefix 
)
Value:
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(int16, 4, name, prefix, s16) \
HWY_NEON_DEF_PAIRWISE_REDUCTION(int8, 8, name, prefix, s8) \
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(int16, 8, 4, name, prefix, s16) \
HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION(int8, 16, 8, name, prefix, s8)
#define HWY_NEON_DEF_PAIRWISE_REDUCTION(type, size, name, prefix, suffix)
Definition: arm_neon-inl.h:5189

◆ HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION

#define HWY_NEON_DEF_WIDE_PAIRWISE_REDUCTION (   type,
  size,
  half,
  name,
  prefix,
  suffix 
)
Value:
name(hwy::SizeTag<sizeof(type##_t)>, const 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); \
tmp = vdup_lane_##suffix(tmp, 0); \
return HWY_NEON_BUILD_RET_PAIRWISE_REDUCTION( \
type, size)(HWY_NEON_EVAL(vcombine_##suffix, tmp, tmp)); \
}

◆ HWY_NEON_EVAL

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

Function Documentation

◆ HWY_AFTER_NAMESPACE()

HWY_AFTER_NAMESPACE ( )

◆ HWY_BEFORE_NAMESPACE()

HWY_BEFORE_NAMESPACE ( )