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

Go to the source code of this file.

Classes

struct  hwy::HWY_NAMESPACE::detail::Raw128< bfloat16_t >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float16_t >
 
class  hwy::HWY_NAMESPACE::Vec128< T, N >
 
struct  hwy::HWY_NAMESPACE::Mask128< T, N >
 
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_S390X_HAVE_Z14   1
 
#define HWY_PPC_HAVE_9   0
 
#define HWY_PPC_HAVE_10   0
 
#define HWY_S390X_HAVE_Z15   0
 
#define HWY_VSX_RAW128(LANE_TYPE, RAW_VECT_LANE_TYPE, RAW_BOOL_VECT_LANE_TYPE)
 
#define HWY_NATIVE_BITWISE_IF_THEN_ELSE
 
#define HWY_NATIVE_LOAD_N
 
#define HWY_NATIVE_STORE_N
 
#define HWY_NATIVE_MUL_8
 
#define HWY_NATIVE_MUL_64
 
#define HWY_PPC_IF_MULHIGH_USING_VEC_MULH(T)    HWY_IF_T_SIZE_ONE_OF(T, (1 << 1) | (1 << 2) | (1 << 4))
 
#define HWY_PPC_IF_MULHIGH_8_16_32_NOT_USING_VEC_MULH(T)    hwy::EnableIf<!hwy::IsSame<T, T>()>* = nullptr
 
#define HWY_NATIVE_ROL_ROR_8
 
#define HWY_NATIVE_ROL_ROR_16
 
#define HWY_NATIVE_ROL_ROR_32_64
 
#define HWY_NATIVE_ROL_ROR_SAME_8
 
#define HWY_NATIVE_ROL_ROR_SAME_16
 
#define HWY_NATIVE_ROL_ROR_SAME_32_64
 
#define HWY_NATIVE_F64_APPROX_RECIP
 
#define HWY_NATIVE_PER4LANEBLKSHUF_DUP32
 
#define HWY_NATIVE_ORDERED_TRUNCATE_2_TO
 
#define HWY_NATIVE_PROMOTE_UPPER_TO
 
#define HWY_NATIVE_DEMOTE_F64_TO_F16
 
#define HWY_IF_SUM_OF_LANES_D(D)   HWY_IF_LANES_GT_D(D, 1), HWY_IF_FLOAT3264_D(D)
 
#define HWY_NATIVE_REDUCE_SUM_4_UI8
 
#define HWY_NATIVE_LEADING_ZERO_COUNT
 

Typedefs

template<class D >
using hwy::HWY_NAMESPACE::detail::RebindToUnsignedIfNotFloat
 

Functions

 HWY_BEFORE_NAMESPACE ()
 
template<class D , typename T = TFromD<D>>
HWY_API Vec128< T, HWY_MAX_LANES_D(D)> hwy::HWY_NAMESPACE::Zero (D)
 
template<class D , class FromT >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::BitCast (D d, Vec128< FromT, Repartition< FromT, D >().MaxLanes()> v)
 
template<class D , class FromV >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ResizeBitCast (D d, FromV v)
 
template<class D , HWY_IF_NOT_SPECIAL_FLOAT(TFromD< D >) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Set (D, TFromD< D > t)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Undefined (D)
 
template<typename T , size_t N>
HWY_APIhwy::HWY_NAMESPACE::GetLane (Vec128< T, N > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D > t4, TFromD< D > t5, TFromD< D > t6, TFromD< D > t7, TFromD< D > t8, TFromD< D > t9, TFromD< D > t10, TFromD< D > t11, TFromD< D > t12, TFromD< D > t13, TFromD< D > t14, TFromD< D > t15)
 
template<class D , HWY_IF_BF16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D > t4, TFromD< D > t5, TFromD< D > t6, TFromD< D > t7)
 
template<class D , HWY_IF_T_SIZE_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3)
 
template<class D , HWY_IF_T_SIZE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D, TFromD< D > t0, TFromD< D > t1)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::And (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::AndNot (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Or (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Xor (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Not (Vec128< T, N > v)
 
template<class RawV >
static HWY_INLINE bool hwy::HWY_NAMESPACE::detail::IsConstantRawAltivecVect (hwy::SizeTag< 1 >, RawV v)
 
template<class RawV >
static HWY_INLINE bool hwy::HWY_NAMESPACE::detail::IsConstantRawAltivecVect (hwy::SizeTag< 2 >, RawV v)
 
template<class RawV >
static HWY_INLINE bool hwy::HWY_NAMESPACE::detail::IsConstantRawAltivecVect (hwy::SizeTag< 4 >, RawV v)
 
template<class RawV >
static HWY_INLINE bool hwy::HWY_NAMESPACE::detail::IsConstantRawAltivecVect (hwy::SizeTag< 8 >, RawV v)
 
template<class RawV >
static HWY_INLINE bool hwy::HWY_NAMESPACE::detail::IsConstantRawAltivecVect (RawV v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Xor3 (Vec128< T, N > x1, Vec128< T, N > x2, Vec128< T, N > x3)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Or3 (Vec128< T, N > o1, Vec128< T, N > o2, Vec128< T, N > o3)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::OrAnd (Vec128< T, N > o, Vec128< T, N > a1, Vec128< T, N > a2)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfVecThenElse (Vec128< T, N > mask, Vec128< T, N > yes, Vec128< T, N > no)
 
template<class V >
HWY_APIhwy::HWY_NAMESPACE::BitwiseIfThenElse (V mask, V yes, V no)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator& (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator| (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator^ (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_SIGNED(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Neg (Vec128< T, N > v)
 
template<class T , size_t N, HWY_IF_SIGNED(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Abs (Vec128< T, N > v)
 
template<class V >
HWY_APIhwy::HWY_NAMESPACE::CopySign (const V magn, const V sign)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CopySignToAbs (Vec128< T, N > abs, Vec128< T, N > sign)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Load (D, const T *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Load (D d, const T *HWY_RESTRICT p)
 
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 (Mask128< T, N > v)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::VecFromMask (D d, const MFromD< D > m)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenElse (Mask128< 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::IfThenElseZero (Mask128< T, N > mask, Vec128< T, N > yes)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenZeroElse (Mask128< T, N > mask, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_API 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)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftSame (Vec128< T, N > v, const int bits)
 
template<typename T , size_t N, HWY_IF_UNSIGNED(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftRightSame (Vec128< T, N > v, const int bits)
 
template<int kBits, typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeft (Vec128< T, N > v)
 
template<int kBits, typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftRight (Vec128< T, N > v)
 
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, typename TI , size_t NI>
HWY_API Vec128< TI, NI > hwy::HWY_NAMESPACE::TableLookupBytes (Vec128< T, N > v, Vec128< TI, NI > indices)
 
template<class V , class VI >
HWY_API VI hwy::HWY_NAMESPACE::TableLookupBytesOr0 (V bytes, VI from)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 16) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Reverse (D d, Vec128< T > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Shuffle2301 (Vec128< T, N > v)
 
template<typename T , HWY_IF_T_SIZE(T, 1) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo2301 (Vec32< T > a, Vec32< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 2) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo2301 (Vec64< T > a, Vec64< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo2301 (Vec128< T > a, Vec128< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 1) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo1230 (Vec32< T > a, Vec32< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 2) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo1230 (Vec64< T > a, Vec64< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo1230 (Vec128< T > a, Vec128< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 1) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo3012 (Vec32< T > a, Vec32< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 2) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo3012 (Vec64< T > a, Vec64< T > b)
 
template<typename T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::detail::ShuffleTwo3012 (Vec128< T > a, Vec128< T > b)
 
template<class T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle1032 (Vec128< T > v)
 
template<class T , HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle01 (Vec128< T > v)
 
template<class T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle0321 (Vec128< T > v)
 
template<class T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle2103 (Vec128< T > v)
 
template<class T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Shuffle0123 (Vec128< T > v)
 
template<typename TFrom , size_t NFrom, class DTo >
HWY_API MFromD< DTo > hwy::HWY_NAMESPACE::RebindMask (DTo, Mask128< TFrom, NFrom > m)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::TestBit (Vec128< T, N > v, Vec128< T, N > bit)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator== (Vec128< T, N > a, Vec128< T, N > b)
 
template<size_t N>
HWY_API Mask128< uint8_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint16_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< uint16_t, N > a, Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint32_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< uint32_t, N > a, Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint64_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< uint64_t, N > a, Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Mask128< int8_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< int8_t, N > a, Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Mask128< int16_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Mask128< int32_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Mask128< int64_t, N > hwy::HWY_NAMESPACE::operator!= (Vec128< int64_t, N > a, Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::operator!= (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::operator!= (Vec128< double, N > a, Vec128< double, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::operator> (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator>= (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator< (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator<= (Vec128< T, N > a, Vec128< T, N > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::LoadU (D, const T *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D d, const T *HWY_RESTRICT p)
 
template<class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadDup128 (D d, const T *HWY_RESTRICT p)
 
template<class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadN (D d, const T *HWY_RESTRICT p, size_t max_lanes_to_load)
 
template<class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadNOr (VFromD< D > no, D d, const T *HWY_RESTRICT p, size_t max_lanes_to_load)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Iota0 (D d)
 
template<class D , HWY_IF_T_SIZE_D(D, 2) , HWY_IF_NOT_SPECIAL_FLOAT_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Iota0 (D d)
 
template<class D , typename T2 >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Iota (D d, const T2 first)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::FirstN (D d, size_t num)
 
template<class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoad (MFromD< D > m, D d, const T *HWY_RESTRICT p)
 
template<class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoadOr (VFromD< D > v, MFromD< D > m, D d, const T *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::Store (Vec128< T > v, D, T *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< T > v, D, T *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::Store (VFromD< D > v, D d, T *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreU (VFromD< D > v, D d, T *HWY_RESTRICT p)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreN (VFromD< D > v, D d, T *HWY_RESTRICT p, size_t max_lanes_to_store)
 
template<class D >
HWY_API void hwy::HWY_NAMESPACE::BlendedStore (VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT p)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator+ (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator- (Vec128< T, N > a, Vec128< T, N > b)
 
template<class V , HWY_IF_U8(TFromV< V >) >
HWY_API VFromD< RepartitionToWideX3< DFromV< V > > > hwy::HWY_NAMESPACE::SumsOf8 (V v)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::SaturatedAdd (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::SaturatedSub (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_UNSIGNED(T) , HWY_IF_T_SIZE_ONE_OF(T, 0x6) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::AverageRound (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator* (Vec128< T, N > a, Vec128< T, N > b)
 
template<class T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , HWY_PPC_IF_MULHIGH_8_16_32_NOT_USING_VEC_MULH(T) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::MulHigh (Vec128< T, 1 > a, Vec128< T, 1 > b)
 
template<typename T , size_t N, HWY_PPC_IF_MULHIGH_8_16_32_NOT_USING_VEC_MULH(T) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) , HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MulHigh (Vec128< T, N > a, Vec128< T, N > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::MulHigh (Vec64< T > a, Vec64< T > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::MulHigh (Vec128< T > a, Vec128< T > b)
 
template<class T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< MakeWide< T >,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< T, N > a, Vec128< T, N > b)
 
template<class T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< MakeWide< T >,(N+1)/2 > hwy::HWY_NAMESPACE::MulOdd (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Rol (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Ror (Vec128< T, N > a, Vec128< T, N > b)
 
template<int kBits, typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::RotateRight (const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::RotateLeftSame (Vec128< T, N > v, int bits)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::RotateRightSame (Vec128< T, N > v, int bits)
 
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_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::AbsDiff (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MulAdd (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > add)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::NegMulAdd (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > add)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MulSub (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > sub)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::NegMulSub (Vec128< T, N > mul, Vec128< T, N > x, Vec128< T, N > sub)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator/ (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ApproximateReciprocal (Vec128< T, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (Vec128< float, N > v)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Sqrt (const Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Min (Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Max (Vec128< T, N > a, Vec128< T, N > b)
 
template<class D >
HWY_API void hwy::HWY_NAMESPACE::Stream (const VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LowerHalf (D, VFromD< Twice< D > > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N/2 > hwy::HWY_NAMESPACE::LowerHalf (Vec128< T, N > v)
 
template<int kBytes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftLeftBytes (D d, VFromD< D > v)
 
template<int kBytes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftBytes (Vec128< T, N > v)
 
template<int kLanes, class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftLeftLanes (D d, VFromD< D > v)
 
template<int kLanes, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::ShiftLeftLanes (Vec128< T, N > v)
 
template<int kBytes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftRightBytes (D d, VFromD< D > v)
 
template<int kLanes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftRightLanes (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::UpperHalf (D d, VFromD< Twice< D > > v)
 
template<typename T , size_t N>
HWY_APIhwy::HWY_NAMESPACE::ExtractLane (Vec128< T, N > v, size_t i)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::InsertLane (Vec128< T, N > v, size_t i, T t)
 
template<int kBytes, class D , HWY_IF_V_SIZE_D(D, 16) , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::CombineShiftRightBytes (D, Vec128< T > hi, Vec128< T > lo)
 
template<int kBytes, class D , HWY_IF_V_SIZE_LE_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::CombineShiftRightBytes (D d, VFromD< D > hi, VFromD< D > lo)
 
template<int kLane, typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Broadcast (Vec128< T, N > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE VFromD< Repartition< uint8_t, D > > hwy::HWY_NAMESPACE::detail::IndicesFromVecBroadcastLaneBytes (D d)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE VFromD< Repartition< uint8_t, D > > hwy::HWY_NAMESPACE::detail::IndicesFromVecByteOffsets (D d)
 
template<class D , typename TI , HWY_IF_T_SIZE_D(D, 1) >
HWY_API Indices128< TFromD< D >, MaxLanes(D())> hwy::HWY_NAMESPACE::IndicesFromVec (D d, Vec128< TI, MaxLanes(D())> vec)
 
template<class D , typename TI >
HWY_API Indices128< TFromD< D >, HWY_MAX_LANES_D(D)> hwy::HWY_NAMESPACE::SetTableIndices (D d, const TI *idx)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< T, N > v, Indices128< T, N > idx)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< T, 1 > v, Indices128< T, 1 >)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 4) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec128< T, N > a, Vec128< T, N > b, Indices128< T, N > idx)
 
template<typename T >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec128< T > a, Vec128< T > b, Indices128< T > idx)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReverseBlocks (D, VFromD< D > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 1) >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Reverse (D, Vec128< T, 1 > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 4) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::Reverse (D, Vec64< T > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 2) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::Reverse (D d, Vec32< T > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec16< T > hwy::HWY_NAMESPACE::Reverse (D d, Vec16< T > v)
 
template<class D , typename T = TFromD<D>, HWY_IF_LANES_D(D, 1) >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Reverse2 (D, Vec128< T, 1 > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse2 (D d, VFromD< D > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse4 (D d, VFromD< D > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse8 (D d, VFromD< D > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< T, N > a, Vec128< T, N > b)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveLower (D, VFromD< D > a, VFromD< D > b)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::InterleaveUpper (D, Vec128< T > a, Vec128< T > b)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveUpper (D, VFromD< D > a, VFromD< D > b)
 
template<class V , class DW = RepartitionToWide<DFromV<V>>>
HWY_API VFromD< DW > hwy::HWY_NAMESPACE::ZipLower (V a, V b)
 
template<class V , class D = DFromV<V>, class DW = RepartitionToWide<D>>
HWY_API VFromD< DW > hwy::HWY_NAMESPACE::ZipLower (DW dw, V a, V b)
 
template<class V , class D = DFromV<V>, class DW = RepartitionToWide<D>>
HWY_API VFromD< DW > hwy::HWY_NAMESPACE::ZipUpper (DW dw, V a, V b)
 
template<class D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Per4LaneBlkShufDupSet4xU32 (D d, const uint32_t x3, const uint32_t x2, const uint32_t x1, const uint32_t x0)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideUpLanes (D d, VFromD< D > v, size_t amt)
 
template<class D , HWY_IF_LANES_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideDownLanes (D, VFromD< D > v, size_t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , class VH = VFromD<Half<D>>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Combine (D d, VH hi_half, VH lo_half)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ZeroExtendVector (D d, VFromD< Half< D > > lo)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::ConcatLowerLower (D d, Vec128< T > hi, Vec128< T > lo)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::ConcatUpperUpper (D d, Vec128< T > hi, Vec128< T > lo)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::ConcatLowerUpper (D d, Vec128< T > hi, Vec128< T > lo)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec128< T > hwy::HWY_NAMESPACE::ConcatUpperLower (D, Vec128< T > hi, Vec128< T > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatLowerLower (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatUpperUpper (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatLowerUpper (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatUpperLower (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , typename FromT , HWY_IF_UNSIGNED_D(D) , HWY_IF_UNSIGNED(FromT) , hwy::EnableIf<(sizeof(FromT) >=sizeof(TFromD< D >) *2)> * = nullptr, HWY_IF_LANES_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::TruncateTo (D, Vec128< FromT, 1 > v)
 
template<class D , typename FromT , HWY_IF_UNSIGNED_D(D) , HWY_IF_UNSIGNED(FromT) , HWY_IF_T_SIZE(FromT, sizeof(TFromD< D >) *2) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::detail::Truncate2To (D, Vec128< FromT, Repartition< FromT, D >().MaxLanes()> lo, Vec128< FromT, Repartition< FromT, D >().MaxLanes()> hi)
 
template<class D , typename FromT , HWY_IF_UNSIGNED_D(D) , HWY_IF_UNSIGNED(FromT) , HWY_IF_T_SIZE(FromT, sizeof(TFromD< D >) *2) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::TruncateTo (D, Vec128< FromT, Rebind< FromT, D >().MaxLanes()> v)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::ConcatOdd (D d, Vec128< T > hi, Vec128< T > lo)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::ConcatOdd (D, Vec64< T > hi, Vec64< T > lo)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::ConcatOdd (D d, Vec32< T > hi, Vec32< T > lo)
 
template<class D , HWY_IF_LANES_D(D, 2) , typename T = TFromD<D>>
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::ConcatOdd (D d, Vec128< T, 2 > hi, Vec128< T, 2 > lo)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::ConcatEven (D d, Vec128< T > hi, Vec128< T > lo)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::ConcatEven (D, Vec64< T > hi, Vec64< T > lo)
 
template<class D , typename T = TFromD<D>, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec32< T > hwy::HWY_NAMESPACE::ConcatEven (D d, Vec32< T > hi, Vec32< T > lo)
 
template<class D , HWY_IF_LANES_D(D, 2) , typename T = TFromD<D>>
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::ConcatEven (D d, Vec128< T, 2 > hi, Vec128< T, 2 > lo)
 
template<class D , HWY_IF_UNSIGNED_D(D) , class V , HWY_IF_UNSIGNED_V(V) , HWY_IF_T_SIZE_V(V, sizeof(TFromD< D >) *2) , HWY_IF_LANES_D(D, HWY_MAX_LANES_D(DFromV< V >) *2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::OrderedTruncate2To (D d, V a, V b)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::DupEven (Vec128< T, 1 > v)
 
template<typename T >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::DupEven (Vec128< T, 2 > v)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::DupEven (Vec128< T, N > v)
 
template<typename T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::DupEven (Vec128< T > v)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::DupOdd (Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 1) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::OddEven (Vec128< T, N > a, Vec128< T, N > b)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveEven (D, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveOdd (D, VFromD< D > a, VFromD< D > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::OddEvenBlocks (Vec128< T, N >, Vec128< T, N > even)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::SwapAdjacentBlocks (Vec128< T, N > v)
 
HWY_API Vec16< int16_t > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec16< int16_t > a, Vec16< int16_t > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(int16_t, N, 8) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag, Vec128< T, N > v, Vec128< T, N > bits)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::detail::Shl (hwy::SignedTag, Vec128< T, N > v, Vec128< T, N > bits)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator<< (Vec128< T, N > v, Vec128< T, N > bits)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::detail::Shr (hwy::UnsignedTag, Vec128< T, N > v, Vec128< T, N > bits)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::detail::Shr (hwy::SignedTag, Vec128< T, N > v, Vec128< T, N > bits)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::operator>> (Vec128< T, N > v, Vec128< T, N > bits)
 
template<class T , HWY_IF_UI64(T) >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::MulEven (Vec128< T > a, Vec128< T > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::MulOdd (Vec128< T > a, Vec128< T > b)
 
template<class D32 , HWY_IF_F32_D(D32) , class V16 = VFromD<Repartition<bfloat16_t, D32>>>
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D32 df32, V16 a, V16 b)
 
template<class D32 , HWY_IF_F32_D(D32) , class V16 = VFromD<Repartition<bfloat16_t, D32>>>
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D32 df32, V16 a, V16 b, const VFromD< D32 > sum0, VFromD< D32 > &sum1)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec128< int32_t, N > sum0, Vec128< int32_t, N >)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec128< uint32_t, N > sum0, Vec128< uint32_t, N >)
 
template<class VW >
HWY_API VW hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (const VW sum0, const VW sum1)
 
template<class D , typename FromT , HWY_IF_T_SIZE_D(D, 2 *sizeof(FromT)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL_D(D) , HWY_IF_UNSIGNED(FromT) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, Vec128< FromT, Rebind< FromT, D >().MaxLanes()> v)
 
template<class D , typename FromT , HWY_IF_T_SIZE_D(D, 8) , HWY_IF_NOT_FLOAT_D(D) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(FromT) , HWY_IF_T_SIZE_ONE_OF(FromT,(1<< 1)|(1<< 2)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D d64, Vec128< FromT, Rebind< FromT, D >().MaxLanes()> v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D df32, VFromD< Rebind< bfloat16_t, D > > v)
 
template<class D , HWY_IF_I64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D di64, VFromD< Rebind< float, D > > v)
 
template<class D , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D df64, VFromD< Rebind< int32_t, D > > v)
 
template<class D , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D df64, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , typename FromT , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_T_SIZE_D(D, 2 *sizeof(FromT)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL_D(D) , HWY_IF_UNSIGNED(FromT) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteUpperTo (D d, Vec128< FromT > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteUpperTo (D df32, Vec128< float16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteUpperTo (D df32, Vec128< bfloat16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteUpperTo (D, Vec128< float > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteUpperTo (D df64, Vec128< int32_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteUpperTo (D df64, Vec128< uint32_t > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , class V >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteUpperTo (D d, V v)
 
template<class D , class V >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteEvenTo (hwy::FloatTag, hwy::SizeTag< 8 >, hwy::FloatTag, D, V v)
 
template<class D , class V , class FromTypeTag , HWY_IF_UI32(TFromV< V >) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteEvenTo (hwy::FloatTag, hwy::SizeTag< 8 >, FromTypeTag, D d_to, V v)
 
template<class D , class V >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteEvenTo (hwy::SignedTag, hwy::SizeTag< 8 >, hwy::FloatTag, D d_to, V v)
 
template<class D , class V >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteEvenTo (hwy::UnsignedTag, hwy::SizeTag< 8 >, hwy::FloatTag, D d_to, V v)
 
template<class D , class V >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteOddTo (hwy::FloatTag, hwy::SizeTag< 8 >, hwy::FloatTag, D d_to, V v)
 
template<class D , class V , class FromTypeTag , HWY_IF_UI32(TFromV< V >) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteOddTo (hwy::FloatTag, hwy::SizeTag< 8 >, FromTypeTag, D d_to, V v)
 
template<class D , class V >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteOddTo (hwy::SignedTag, hwy::SizeTag< 8 >, hwy::FloatTag, D d_to, V v)
 
template<class D , class V >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::PromoteOddTo (hwy::UnsignedTag, hwy::SizeTag< 8 >, hwy::FloatTag, D d_to, V v)
 
template<class D , typename FromT , HWY_IF_UNSIGNED_D(D) , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)|(1<< 4)) , HWY_IF_SIGNED(FromT) , HWY_IF_T_SIZE(FromT, sizeof(TFromD< D >) *2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, Vec128< FromT, Rebind< FromT, D >().MaxLanes()> v)
 
template<class DF32 , HWY_IF_F32_D(DF32) >
static HWY_INLINE VFromD< DF32 > hwy::HWY_NAMESPACE::detail::DemoteToF32WithRoundToOdd (DF32 df32, VFromD< Rebind< double, DF32 > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_F16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D df16, VFromD< Rebind< double, D > > v)
 
template<class DN , typename V , HWY_IF_V_SIZE_LE_D(DN, 4) , HWY_IF_SIGNED_D(DN) , HWY_IF_SIGNED_V(V) , HWY_IF_T_SIZE_ONE_OF_D(DN,(1<< 1)|(1<< 2)|(1<< 4)) , HWY_IF_T_SIZE_V(V, sizeof(TFromD< DN >) *2) >
HWY_API VFromD< DN > hwy::HWY_NAMESPACE::ReorderDemote2To (DN dn, V a, V b)
 
template<class D , HWY_IF_NOT_FLOAT_NOR_SPECIAL(TFromD< D >) , class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) , HWY_IF_T_SIZE_V(V, sizeof(TFromD< D >) *2) , HWY_IF_LANES_D(D, HWY_MAX_LANES_D(DFromV< V >) *2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::OrderedDemote2To (D d, V a, V b)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_F32_D(D) >
HWY_API Vec32< float > hwy::HWY_NAMESPACE::DemoteTo (D, Vec64< double > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API Vec64< float > hwy::HWY_NAMESPACE::DemoteTo (D d, Vec128< double > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_I32_D(D) >
HWY_API Vec32< int32_t > hwy::HWY_NAMESPACE::DemoteTo (D di32, Vec64< double > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I32_D(D) >
HWY_API Vec64< int32_t > hwy::HWY_NAMESPACE::DemoteTo (D di32, Vec128< double > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_U32_D(D) >
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::DemoteTo (D du32, Vec64< double > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U32_D(D) >
HWY_API Vec64< uint32_t > hwy::HWY_NAMESPACE::DemoteTo (D du32, Vec128< double > v)
 
template<class V , HWY_IF_I64(TFromV< V >) >
HWY_INLINE VFromD< RebindToFloat< DFromV< V > > > hwy::HWY_NAMESPACE::detail::ConvToF64WithRoundToOdd (V v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_F32_D(D) >
HWY_API Vec32< float > hwy::HWY_NAMESPACE::DemoteTo (D df32, Vec64< int64_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API Vec64< float > hwy::HWY_NAMESPACE::DemoteTo (D df32, Vec128< int64_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_F32_D(D) >
HWY_API Vec32< float > hwy::HWY_NAMESPACE::DemoteTo (D df32, Vec64< uint64_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API Vec64< float > hwy::HWY_NAMESPACE::DemoteTo (D df32, Vec128< uint64_t > v)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::U8FromU32 (Vec128< uint32_t, N > v)
 
template<class D , typename FromT , HWY_IF_F32_D(D) , HWY_IF_UI32(FromT) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D df32, Vec128< FromT, Rebind< FromT, D >().MaxLanes()> v)
 
template<class D , typename FromT , HWY_IF_F32_D(D) , HWY_IF_UI32(FromT) , HWY_IF_V_SIZE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D df32, Vec128< FromT > v)
 
template<class D , HWY_IF_I32_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D di32, Vec128< float, Rebind< float, D >().MaxLanes()> v)
 
template<class D , HWY_IF_I64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D, Vec128< double, Rebind< double, D >().MaxLanes()> 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< double, N > hwy::HWY_NAMESPACE::Round (Vec128< double, 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_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Trunc (Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Ceil (Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Floor (Vec128< T, 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_API Mask128< T, N > hwy::HWY_NAMESPACE::IsInf (Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::IsFinite (Vec128< T, N > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_INLINE MFromD< D > hwy::HWY_NAMESPACE::detail::LoadMaskBits128 (D, uint64_t mask_bits)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::LoadMaskBits (D d, const uint8_t *HWY_RESTRICT bits)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Dup128MaskFromMaskBits (D d, unsigned mask_bits)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 1 >, Mask128< T, N > mask)
 
template<typename T >
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 1 >, Mask128< T > mask)
 
template<typename T , size_t N>
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 2 >, Mask128< T, N > mask)
 
template<typename T , size_t N>
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 4 >, Mask128< T, N > mask)
 
template<typename T , size_t N>
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (hwy::SizeTag< 8 >, Mask128< T, N > mask)
 
template<typename T , size_t N>
constexpr uint64_t hwy::HWY_NAMESPACE::detail::OnlyActive (uint64_t bits)
 
template<typename T , size_t N>
HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::BitsFromMask (Mask128< T, N > mask)
 
template<class D , HWY_IF_LANES_LE_D(D, 8) >
HWY_API size_t hwy::HWY_NAMESPACE::StoreMaskBits (D, MFromD< D > mask, uint8_t *bits)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) >
HWY_API bool hwy::HWY_NAMESPACE::AllFalse (D d, MFromD< D > mask)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API bool hwy::HWY_NAMESPACE::AllTrue (D d, MFromD< D > m)
 
template<class D >
HWY_API size_t hwy::HWY_NAMESPACE::CountTrue (D d, MFromD< D > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::FindKnownFirstTrue (D d, MFromD< D > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API intptr_t hwy::HWY_NAMESPACE::FindFirstTrue (D d, MFromD< D > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::FindKnownLastTrue (D d, MFromD< D > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API intptr_t hwy::HWY_NAMESPACE::FindLastTrue (D d, MFromD< D > mask)
 
template<class D , HWY_IF_T_SIZE_D(D, 2) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::IndicesFromBits128 (D d, uint64_t mask_bits)
 
template<class D , HWY_IF_T_SIZE_D(D, 2) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::IndicesFromNotBits128 (D d, uint64_t mask_bits)
 
template<typename T , size_t N, HWY_IF_NOT_T_SIZE(T, 1) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::detail::CompressBits (Vec128< T, N > v, uint64_t mask_bits)
 
template<typename T , size_t N, HWY_IF_NOT_T_SIZE(T, 1) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::detail::CompressNotBits (Vec128< T, N > v, uint64_t mask_bits)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Compress (Vec128< T, 1 > v, Mask128< T, 1 >)
 
template<typename T , HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::Compress (Vec128< T > v, Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Compress (Vec128< T, N > v, Mask128< T, N > mask)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::CompressNot (Vec128< T, 1 > v, Mask128< T, 1 >)
 
template<typename T , HWY_IF_T_SIZE(T, 8) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::CompressNot (Vec128< T > v, Mask128< T > mask)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 2)|(1<< 4)) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CompressNot (Vec128< T, N > v, Mask128< T, N > mask)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::CompressBlocksNot (Vec128< uint64_t > v, Mask128< uint64_t >)
 
template<typename T , size_t N, HWY_IF_NOT_T_SIZE(T, 1) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::CompressBits (Vec128< T, N > v, const uint8_t *HWY_RESTRICT bits)
 
template<class D , HWY_IF_NOT_T_SIZE_D(D, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressStore (VFromD< D > v, MFromD< D > mask, D d, TFromD< D > *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_NOT_T_SIZE_D(D, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressBlendedStore (VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_NOT_T_SIZE_D(D, 1) >
HWY_API size_t hwy::HWY_NAMESPACE::CompressBitsStore (VFromD< D > v, const uint8_t *HWY_RESTRICT bits, D d, TFromD< D > *HWY_RESTRICT unaligned)
 
template<class V , HWY_IF_T_SIZE_V(V, 1) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per64BitBlkRevLanesOnBe (V v)
 
template<class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per128BitBlkRevLanesOnBe (V v)
 
template<class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::I128Subtract (V a, V b)
 
template<class T >
HWY_API Mask128< T, 1 > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T, 1 > mask)
 
template<class T >
HWY_API Mask128< T, 2 > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T, 2 > mask)
 
template<class T , size_t N, HWY_IF_LANES_GT(N, 2) , HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T, N > mask)
 
template<class T , HWY_IF_NOT_T_SIZE(T, 8) >
HWY_API Mask128< T > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T > mask)
 
template<class T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetBeforeFirst (Mask128< T, N > mask)
 
template<class T >
HWY_API Mask128< T, 1 > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T, 1 > mask)
 
template<class T >
HWY_API Mask128< T, 2 > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T, 2 > mask)
 
template<class T , size_t N, HWY_IF_LANES_GT(N, 2) , HWY_IF_V_SIZE_LE(T, N, 8) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T, N > mask)
 
template<class T , HWY_IF_NOT_T_SIZE(T, 8) >
HWY_API Mask128< T > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T > mask)
 
template<class T >
HWY_API Mask128< T, 1 > hwy::HWY_NAMESPACE::SetAtOrBeforeFirst (Mask128< T, 1 >)
 
template<class T , size_t N, HWY_IF_LANES_GT(N, 1) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetAtOrBeforeFirst (Mask128< T, N > mask)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::UnsignedTag, hwy::SizeTag< 2 >, V v)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::SignedTag, hwy::SizeTag< 2 >, V v)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::UnsignedTag, hwy::SizeTag< 4 >, V v)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf2 (hwy::SignedTag, hwy::SizeTag< 4 >, V v)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWideX2< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf4 (hwy::UnsignedTag, hwy::SizeTag< 1 >, V v)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWideX2< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf4 (hwy::SignedTag, hwy::SizeTag< 1 >, V v)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWideX2< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf4 (hwy::UnsignedTag, hwy::SizeTag< 2 >, V v)
 
template<class V >
HWY_INLINE VFromD< RepartitionToWideX2< DFromV< V > > > hwy::HWY_NAMESPACE::detail::SumsOf4 (hwy::SignedTag, hwy::SizeTag< 2 >, V v)
 
template<class T , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) , HWY_IF_T_SIZE_ONE_OF(T,(1<< 4)|(1<< 8)) >
HWY_INLINE Vec128< T > hwy::HWY_NAMESPACE::detail::SumOfU32OrU64LanesAsU128 (Vec128< T > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_UI64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SumOfLanes (D, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_U16_D(D) >
HWY_API Vec32< uint16_t > hwy::HWY_NAMESPACE::SumOfLanes (D du16, Vec32< uint16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U16_D(D) >
HWY_API Vec64< uint16_t > hwy::HWY_NAMESPACE::SumOfLanes (D du16, Vec64< uint16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U16_D(D) >
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::SumOfLanes (D du16, Vec128< uint16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_I16_D(D) >
HWY_API Vec32< int16_t > hwy::HWY_NAMESPACE::SumOfLanes (D di16, Vec32< int16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I16_D(D) >
HWY_API Vec64< int16_t > hwy::HWY_NAMESPACE::SumOfLanes (D di16, Vec64< int16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I16_D(D) >
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::SumOfLanes (D di16, Vec128< int16_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_U8_D(D) >
HWY_API Vec32< uint8_t > hwy::HWY_NAMESPACE::SumOfLanes (D du8, Vec32< uint8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 2) , HWY_IF_U8_D(D) >
HWY_API Vec16< uint8_t > hwy::HWY_NAMESPACE::SumOfLanes (D du8, Vec16< uint8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_U8_D(D) >
HWY_API Vec64< uint8_t > hwy::HWY_NAMESPACE::SumOfLanes (D du8, Vec64< uint8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U8_D(D) >
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::SumOfLanes (D du8, Vec128< uint8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_I8_D(D) >
HWY_API Vec32< int8_t > hwy::HWY_NAMESPACE::SumOfLanes (D di8, Vec32< int8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 2) , HWY_IF_I8_D(D) >
HWY_API Vec16< int8_t > hwy::HWY_NAMESPACE::SumOfLanes (D di8, Vec16< int8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I8_D(D) >
HWY_API Vec64< int8_t > hwy::HWY_NAMESPACE::SumOfLanes (D di8, Vec64< int8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I8_D(D) >
HWY_API Vec128< int8_t > hwy::HWY_NAMESPACE::SumOfLanes (D di8, Vec128< int8_t > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_UI8_D(D) >
HWY_API TFromD< D > hwy::HWY_NAMESPACE::ReduceSum (D, VFromD< D > v)
 
template<class D , class V = VFromD<D>>
HWY_INLINEhwy::HWY_NAMESPACE::detail::Lt128Vec (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_INLINEhwy::HWY_NAMESPACE::detail::Eq128Vec (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_INLINEhwy::HWY_NAMESPACE::detail::Ne128Vec (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_INLINEhwy::HWY_NAMESPACE::detail::Lt128UpperVec (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_INLINEhwy::HWY_NAMESPACE::detail::Eq128UpperVec (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_INLINEhwy::HWY_NAMESPACE::detail::Ne128UpperVec (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Lt128 (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Eq128 (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Ne128 (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Lt128Upper (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Eq128Upper (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Ne128Upper (D d, V a, V b)
 
template<class D , class V = VFromD<D>>
HWY_APIhwy::HWY_NAMESPACE::Min128 (D d, const V a, const V b)
 
template<class D , class V = VFromD<D>>
HWY_APIhwy::HWY_NAMESPACE::Max128 (D d, const V a, const V b)
 
template<class D , class V = VFromD<D>>
HWY_APIhwy::HWY_NAMESPACE::Min128Upper (D d, const V a, const V b)
 
template<class D , class V = VFromD<D>>
HWY_APIhwy::HWY_NAMESPACE::Max128Upper (D d, const V a, const V b)
 
template<class V , HWY_IF_UI64_D(DFromV< V >) >
HWY_APIhwy::HWY_NAMESPACE::LeadingZeroCount (V v)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::HighestSetBitIndex (V v)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::TrailingZeroCount (V v)
 
 HWY_AFTER_NAMESPACE ()
 

Macro Definition Documentation

◆ HWY_IF_SUM_OF_LANES_D

#define HWY_IF_SUM_OF_LANES_D ( D)    HWY_IF_LANES_GT_D(D, 1), HWY_IF_FLOAT3264_D(D)

◆ HWY_NATIVE_BITWISE_IF_THEN_ELSE

#define HWY_NATIVE_BITWISE_IF_THEN_ELSE

◆ HWY_NATIVE_DEMOTE_F64_TO_F16

#define HWY_NATIVE_DEMOTE_F64_TO_F16

◆ HWY_NATIVE_F64_APPROX_RECIP

#define HWY_NATIVE_F64_APPROX_RECIP

◆ HWY_NATIVE_LEADING_ZERO_COUNT

#define HWY_NATIVE_LEADING_ZERO_COUNT

◆ HWY_NATIVE_LOAD_N

#define HWY_NATIVE_LOAD_N

◆ HWY_NATIVE_MUL_64

#define HWY_NATIVE_MUL_64

◆ HWY_NATIVE_MUL_8

#define HWY_NATIVE_MUL_8

◆ HWY_NATIVE_ORDERED_TRUNCATE_2_TO

#define HWY_NATIVE_ORDERED_TRUNCATE_2_TO

◆ HWY_NATIVE_PER4LANEBLKSHUF_DUP32

#define HWY_NATIVE_PER4LANEBLKSHUF_DUP32

◆ HWY_NATIVE_PROMOTE_UPPER_TO

#define HWY_NATIVE_PROMOTE_UPPER_TO

◆ HWY_NATIVE_REDUCE_SUM_4_UI8

#define HWY_NATIVE_REDUCE_SUM_4_UI8

◆ HWY_NATIVE_ROL_ROR_16

#define HWY_NATIVE_ROL_ROR_16

◆ HWY_NATIVE_ROL_ROR_32_64

#define HWY_NATIVE_ROL_ROR_32_64

◆ HWY_NATIVE_ROL_ROR_8

#define HWY_NATIVE_ROL_ROR_8

◆ HWY_NATIVE_ROL_ROR_SAME_16

#define HWY_NATIVE_ROL_ROR_SAME_16

◆ HWY_NATIVE_ROL_ROR_SAME_32_64

#define HWY_NATIVE_ROL_ROR_SAME_32_64

◆ HWY_NATIVE_ROL_ROR_SAME_8

#define HWY_NATIVE_ROL_ROR_SAME_8

◆ HWY_NATIVE_STORE_N

#define HWY_NATIVE_STORE_N

◆ HWY_PPC_HAVE_10

#define HWY_PPC_HAVE_10   0

◆ HWY_PPC_HAVE_9

#define HWY_PPC_HAVE_9   0

◆ HWY_PPC_IF_MULHIGH_8_16_32_NOT_USING_VEC_MULH

#define HWY_PPC_IF_MULHIGH_8_16_32_NOT_USING_VEC_MULH ( T)     hwy::EnableIf<!hwy::IsSame<T, T>()>* = nullptr

◆ HWY_PPC_IF_MULHIGH_USING_VEC_MULH

#define HWY_PPC_IF_MULHIGH_USING_VEC_MULH ( T)     HWY_IF_T_SIZE_ONE_OF(T, (1 << 1) | (1 << 2) | (1 << 4))

◆ HWY_S390X_HAVE_Z14

#define HWY_S390X_HAVE_Z14   1

◆ HWY_S390X_HAVE_Z15

#define HWY_S390X_HAVE_Z15   0

◆ HWY_VSX_RAW128

#define HWY_VSX_RAW128 ( LANE_TYPE,
RAW_VECT_LANE_TYPE,
RAW_BOOL_VECT_LANE_TYPE )
Value:
template <> \
struct Raw128<LANE_TYPE> { \
using type = __vector RAW_VECT_LANE_TYPE; \
using RawBoolVec = __vector __bool RAW_BOOL_VECT_LANE_TYPE; \
using RawT = RAW_VECT_LANE_TYPE; \
typedef LANE_TYPE AlignedRawVec \
__attribute__((__vector_size__(16), __aligned__(16), __may_alias__)); \
typedef LANE_TYPE UnalignedRawVec __attribute__(( \
__vector_size__(16), __aligned__(alignof(LANE_TYPE)), __may_alias__)); \
};

Function Documentation

◆ HWY_AFTER_NAMESPACE()

HWY_AFTER_NAMESPACE ( )

◆ HWY_BEFORE_NAMESPACE()

HWY_BEFORE_NAMESPACE ( )