Grok 12.0.1
Classes | Namespaces | Macros | Typedefs | Functions
x86_128-inl.h File Reference
#include "hwy/base.h"
#include <emmintrin.h>
#include <stdio.h>
#include <tmmintrin.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< T >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< float >
 
struct  hwy::HWY_NAMESPACE::detail::Raw128< double >
 
class  hwy::HWY_NAMESPACE::Vec128< T, N >
 
struct  hwy::HWY_NAMESPACE::detail::RawMask128< size >
 
struct  hwy::HWY_NAMESPACE::detail::RawMask128< 1 >
 
struct  hwy::HWY_NAMESPACE::detail::RawMask128< 2 >
 
struct  hwy::HWY_NAMESPACE::detail::RawMask128< 4 >
 
struct  hwy::HWY_NAMESPACE::detail::RawMask128< 8 >
 
struct  hwy::HWY_NAMESPACE::Mask128< T, N >
 
struct  hwy::HWY_NAMESPACE::detail::BitCastFromInteger128< T >
 
struct  hwy::HWY_NAMESPACE::detail::BitCastFromInteger128< float >
 
struct  hwy::HWY_NAMESPACE::detail::BitCastFromInteger128< double >
 
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_X86_IF_EMULATED_D(D)   HWY_IF_SPECIAL_FLOAT_D(D)
 
#define HWY_AVX3_HAVE_F32_TO_BF16C   0
 
#define HWY_NATIVE_BITWISE_IF_THEN_ELSE
 
#define HWY_NATIVE_POPCNT
 
#define HWY_NATIVE_MASK_FALSE
 
#define HWY_NATIVE_IS_NEGATIVE
 
#define HWY_NATIVE_PROMOTE_MASK_TO
 
#define HWY_NATIVE_DEMOTE_MASK_TO
 
#define HWY_NATIVE_COMBINE_MASKS
 
#define HWY_NATIVE_LOWER_HALF_OF_MASK
 
#define HWY_NATIVE_UPPER_HALF_OF_MASK
 
#define HWY_NATIVE_ORDERED_DEMOTE_2_MASKS_TO
 
#define HWY_NATIVE_SLIDE_MASK
 
#define HWY_COMPILER_HAS_MASK_INTRINSICS   0
 
#define HWY_SAFE_PARTIAL_LOAD_STORE   0
 
#define HWY_NATIVE_LOAD_N
 
#define HWY_IF_ADDSUB_V(V)
 
#define HWY_NATIVE_SUMS_OF_8_ABS_DIFF
 
#define HWY_NATIVE_SUMS_OF_ADJ_QUAD_ABS_DIFF
 
#define HWY_NATIVE_SUMS_OF_SHUFFLED_QUAD_ABS_DIFF
 
#define HWY_NATIVE_I32_SATURATED_ADDSUB
 
#define HWY_NATIVE_I64_SATURATED_ADDSUB
 
#define HWY_NATIVE_ROL_ROR_32_64
 
#define HWY_NATIVE_ROL_ROR_SAME_32_64
 
#define HWY_NATIVE_SATURATED_ABS
 
#define HWY_NATIVE_INTEGER_IF_NEGATIVE_THEN_NEG
 
#define HWY_NATIVE_F64_APPROX_RECIP
 
#define HWY_NATIVE_MASKED_ARITH
 
#define HWY_IF_MULADDSUB_V(V)
 
#define HWY_NATIVE_F64_APPROX_RSQRT
 
#define HWY_NATIVE_SCATTER
 
#define HWY_NATIVE_GATHER
 
#define HWY_NATIVE_PER4LANEBLKSHUF_DUP32
 
#define HWY_NATIVE_STORE_N
 
#define HWY_NATIVE_U8_I8_SATWIDENMULPAIRWISEADD
 
#define HWY_NATIVE_I16_I16_SATWIDENMULPAIRWISEACCUM
 
#define HWY_NATIVE_U8_I8_SUMOFMULQUADACCUMULATE
 
#define HWY_NATIVE_I8_I8_SUMOFMULQUADACCUMULATE
 
#define HWY_NATIVE_U8_U8_SUMOFMULQUADACCUMULATE
 
#define HWY_NATIVE_F64_TO_UI32_DEMOTE_IN_RANGE_TO
 
#define HWY_NATIVE_F32_TO_UI64_PROMOTE_IN_RANGE_TO
 
#define HWY_NATIVE_F2I_CONVERT_IN_RANGE_TO
 
#define HWY_X86_FPCLASS_QNAN   0x01
 
#define HWY_X86_FPCLASS_POS0   0x02
 
#define HWY_X86_FPCLASS_NEG0   0x04
 
#define HWY_X86_FPCLASS_POS_INF   0x08
 
#define HWY_X86_FPCLASS_NEG_INF   0x10
 
#define HWY_X86_FPCLASS_SUBNORMAL   0x20
 
#define HWY_X86_FPCLASS_NEG   0x40
 
#define HWY_X86_FPCLASS_SNAN   0x80
 
#define HWY_NATIVE_IS_EITHER_NAN
 
#define HWY_NATIVE_ISINF
 
#define HWY_NATIVE_AES
 
#define HWY_NATIVE_EXPAND
 
#define HWY_IF_SUM_OF_LANES_D(D)
 
#define HWY_IF_MINMAX_OF_LANES_D(D)
 
#define HWY_NATIVE_LEADING_ZERO_COUNT
 

Typedefs

using hwy::HWY_NAMESPACE::Shift64Count = unsigned int
 
using hwy::HWY_NAMESPACE::GatherIndex64 = long long int
 

Functions

 HWY_BEFORE_NAMESPACE ()
 
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_V_SIZE_LE_D(D, 16) , HWY_IF_NOT_FLOAT3264_D(D) >
HWY_API Vec128< TFromD< D >, HWY_MAX_LANES_D(D)> hwy::HWY_NAMESPACE::Zero (D)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API Vec128< float, HWY_MAX_LANES_D(D)> hwy::HWY_NAMESPACE::Zero (D)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API Vec128< double, HWY_MAX_LANES_D(D)> hwy::HWY_NAMESPACE::Zero (D)
 
HWY_INLINE __m128i hwy::HWY_NAMESPACE::detail::BitCastToInteger (__m128i v)
 
HWY_INLINE __m128i hwy::HWY_NAMESPACE::detail::BitCastToInteger (__m128 v)
 
HWY_INLINE __m128i hwy::HWY_NAMESPACE::detail::BitCastToInteger (__m128d v)
 
template<typename T , size_t N>
HWY_INLINE Vec128< uint8_t, N *sizeof(T)> hwy::HWY_NAMESPACE::detail::BitCastToByte (Vec128< T, N > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::BitCastFromByte (D, Vec128< uint8_t, D().MaxBytes()> v)
 
template<class D , typename FromT , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::BitCast (D d, Vec128< FromT, Repartition< FromT, D >().MaxLanes()> v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Set (D, TFromD< D > t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Set (D, float t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Set (D, double t)
 
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_IF_V_SIZE_LE_D(D, 16) , HWY_IF_NOT_FLOAT_NOR_SPECIAL_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Undefined (D)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 1) >
HWY_APIhwy::HWY_NAMESPACE::GetLane (const Vec128< T, N > v)
 
template<size_t N>
HWY_API float hwy::HWY_NAMESPACE::GetLane (const Vec128< float, N > v)
 
template<size_t N>
HWY_API double hwy::HWY_NAMESPACE::GetLane (const Vec128< double, N > v)
 
template<class D , class FromV , HWY_IF_V_SIZE_LE_V(FromV, 8) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ResizeBitCast (D d, FromV v)
 
template<class D , HWY_IF_UI8_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D > t4, TFromD< D > t5, TFromD< D > t6, TFromD< D > t7, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >)
 
template<class D , HWY_IF_UI16_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D >, TFromD< D >, TFromD< D >, TFromD< D >)
 
template<class D , HWY_IF_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_UI32_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D >, TFromD< D >)
 
template<class D , HWY_IF_T_SIZE_D(D, 8) , HWY_IF_V_SIZE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D >)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::And (Vec128< T, N > a, Vec128< T, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::And (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::And (Vec128< double, N > a, Vec128< double, 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<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::AndNot (Vec128< float, N > not_mask, Vec128< float, N > mask)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::AndNot (Vec128< double, N > not_mask, Vec128< double, N > mask)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Or (Vec128< T, N > a, Vec128< T, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Or (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::Or (Vec128< double, N > a, Vec128< double, 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<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Xor (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::Xor (Vec128< double, N > a, Vec128< double, N > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Not (Vec128< T, N > 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_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 1 >, Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 2 >, Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::PopulationCount (hwy::SizeTag< 4 >, Vec128< T, N > v)
 
template<typename T , size_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_API Vec128< T, N > hwy::HWY_NAMESPACE::PopulationCount (Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::Neg (hwy::FloatTag, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::Neg (hwy::SpecialTag, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::Neg (hwy::SignedTag, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::Neg (const Vec128< T, N > v)
 
template<class V , HWY_IF_FLOAT(TFromV< V >) >
HWY_APIhwy::HWY_NAMESPACE::Abs (V v)
 
template<class V >
HWY_APIhwy::HWY_NAMESPACE::CopySign (const V magn, const V sign)
 
template<class V >
HWY_APIhwy::HWY_NAMESPACE::CopySignToAbs (const V abs, const V sign)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::MaskFromVec (hwy::SizeTag< 1 >, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::MaskFromVec (hwy::SizeTag< 2 >, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::MaskFromVec (hwy::SizeTag< 4 >, const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::MaskFromVec (hwy::SizeTag< 8 >, 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<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::MaskFromVec (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::MaskFromVec (const Vec128< double, N > v)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::MaskFalse (D d)
 
template<class V , HWY_IF_NOT_UNSIGNED_V(V) >
HWY_API MFromD< DFromV< V > > hwy::HWY_NAMESPACE::IsNegative (V v)
 
template<class DTo , class DFrom , HWY_IF_T_SIZE_GT_D(DTo, sizeof(TFromD< DFrom >)) , class DFrom_2 = Rebind<TFromD<DFrom>, DTo>, hwy::EnableIf< IsSame< MFromD< DFrom >, MFromD< DFrom_2 > >()> * = nullptr>
HWY_API MFromD< DTo > hwy::HWY_NAMESPACE::PromoteMaskTo (DTo, DFrom, MFromD< DFrom > m)
 
template<class DTo , class DFrom , HWY_IF_T_SIZE_LE_D(DTo, sizeof(TFromD< DFrom >) - 1) , class DFrom_2 = Rebind<TFromD<DFrom>, DTo>, hwy::EnableIf< IsSame< MFromD< DFrom >, MFromD< DFrom_2 > >()> * = nullptr>
HWY_API MFromD< DTo > hwy::HWY_NAMESPACE::DemoteMaskTo (DTo, DFrom, MFromD< DFrom > m)
 
template<class D , HWY_IF_LANES_D(D, 2) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::CombineMasks (D, MFromD< Half< D > > hi, MFromD< Half< D > > lo)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::LowerHalfOfMask (D d, MFromD< Twice< D > > m)
 
template<class D , HWY_IF_LANES_D(D, 1) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::UpperHalfOfMask (D, MFromD< Twice< D > > m)
 
template<class DTo , class DFrom , HWY_IF_T_SIZE_D(DTo, sizeof(TFromD< DFrom >)/2) , class DTo_2 = Repartition<TFromD<DTo>, DFrom>, hwy::EnableIf< IsSame< MFromD< DTo >, MFromD< DTo_2 > >()> * = nullptr>
HWY_API MFromD< DTo > hwy::HWY_NAMESPACE::OrderedDemote2MasksTo (DTo d_to, DFrom, MFromD< DFrom > a, MFromD< DFrom > b)
 
template<class D , HWY_IF_LANES_LE_D(D, 8) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::SlideMask1Up (D d, MFromD< D > m)
 
template<class D , HWY_IF_LANES_LE_D(D, 8) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::SlideMask1Down (D d, MFromD< D > m)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::SlideMaskUpLanes (D d, MFromD< D > m, size_t amt)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::SlideMaskDownLanes (D d, MFromD< D > m, size_t amt)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 1) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::VecFromMask (const Mask128< T, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::VecFromMask (const Mask128< float, N > v)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::VecFromMask (const Mask128< double, N > v)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::VecFromMask (D d, const MFromD< D > m)
 
template<typename TFrom , size_t NFrom, class DTo , HWY_IF_V_SIZE_LE_D(DTo, 16) >
HWY_API MFromD< DTo > hwy::HWY_NAMESPACE::RebindMask (DTo, Mask128< TFrom, NFrom > m)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElse (hwy::SizeTag< 1 >, Mask128< T, N > mask, Vec128< T, N > yes, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElse (hwy::SizeTag< 2 >, Mask128< T, N > mask, Vec128< T, N > yes, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElse (hwy::SizeTag< 4 >, Mask128< T, N > mask, Vec128< T, N > yes, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElse (hwy::SizeTag< 8 >, Mask128< T, N > mask, Vec128< T, N > yes, Vec128< T, N > no)
 
template<typename T , size_t N, HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenElse (Mask128< T, N > mask, Vec128< T, N > yes, Vec128< T, N > no)
 
template<class V , class D = DFromV<V>, HWY_X86_IF_EMULATED_D(D) >
HWY_APIhwy::HWY_NAMESPACE::IfThenElse (MFromD< D > mask, V yes, V no)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::IfThenElse (Mask128< float, N > mask, Vec128< float, N > yes, Vec128< float, N > no)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::IfThenElse (Mask128< double, N > mask, Vec128< double, N > yes, Vec128< double, N > no)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElseZero (hwy::SizeTag< 1 >, Mask128< T, N > mask, Vec128< T, N > yes)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElseZero (hwy::SizeTag< 2 >, Mask128< T, N > mask, Vec128< T, N > yes)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElseZero (hwy::SizeTag< 4 >, Mask128< T, N > mask, Vec128< T, N > yes)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenElseZero (hwy::SizeTag< 8 >, Mask128< T, N > mask, Vec128< T, N > yes)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenElseZero (Mask128< T, N > mask, Vec128< T, N > yes)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::IfThenElseZero (Mask128< float, N > mask, Vec128< float, N > yes)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::IfThenElseZero (Mask128< double, N > mask, Vec128< double, N > yes)
 
template<class V , class D = DFromV<V>, HWY_IF_SPECIAL_FLOAT_D(D) >
HWY_APIhwy::HWY_NAMESPACE::IfThenElseZero (MFromD< D > mask, V yes)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenZeroElse (hwy::SizeTag< 1 >, Mask128< T, N > mask, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenZeroElse (hwy::SizeTag< 2 >, Mask128< T, N > mask, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenZeroElse (hwy::SizeTag< 4 >, Mask128< T, N > mask, Vec128< T, N > no)
 
template<typename T , size_t N>
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::IfThenZeroElse (hwy::SizeTag< 8 >, Mask128< T, N > mask, Vec128< T, N > no)
 
template<typename T , size_t N, HWY_IF_NOT_SPECIAL_FLOAT(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfThenZeroElse (Mask128< T, N > mask, Vec128< T, N > no)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::IfThenZeroElse (Mask128< float, N > mask, Vec128< float, N > no)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::IfThenZeroElse (Mask128< double, N > mask, Vec128< double, N > no)
 
template<class V , class D = DFromV<V>, HWY_IF_SPECIAL_FLOAT_D(D) >
HWY_APIhwy::HWY_NAMESPACE::IfThenZeroElse (MFromD< D > mask, V no)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::And (hwy::SizeTag< 1 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::And (hwy::SizeTag< 2 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::And (hwy::SizeTag< 4 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::And (hwy::SizeTag< 8 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::AndNot (hwy::SizeTag< 1 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::AndNot (hwy::SizeTag< 2 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::AndNot (hwy::SizeTag< 4 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::AndNot (hwy::SizeTag< 8 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Or (hwy::SizeTag< 1 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Or (hwy::SizeTag< 2 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Or (hwy::SizeTag< 4 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Or (hwy::SizeTag< 8 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Xor (hwy::SizeTag< 1 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Xor (hwy::SizeTag< 2 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Xor (hwy::SizeTag< 4 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Xor (hwy::SizeTag< 8 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::ExclusiveNeither (hwy::SizeTag< 1 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::ExclusiveNeither (hwy::SizeTag< 2 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::ExclusiveNeither (hwy::SizeTag< 4 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::ExclusiveNeither (hwy::SizeTag< 8 >, const Mask128< T, N > a, const Mask128< T, N > b)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 1) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::UnmaskedNot (const Mask128< T, N > m)
 
template<typename T >
HWY_INLINE Mask128< T > hwy::HWY_NAMESPACE::detail::Not (hwy::SizeTag< 1 >, const Mask128< T > m)
 
template<typename T , size_t N, HWY_IF_LANES_LE(N, 8) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Not (hwy::SizeTag< 1 >, const Mask128< T, N > m)
 
template<typename T >
HWY_INLINE Mask128< T > hwy::HWY_NAMESPACE::detail::Not (hwy::SizeTag< 2 >, const Mask128< T > m)
 
template<typename T , size_t N, HWY_IF_LANES_LE(N, 4) >
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Not (hwy::SizeTag< 2 >, const Mask128< T, N > m)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Not (hwy::SizeTag< 4 >, const Mask128< T, N > m)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::Not (hwy::SizeTag< 8 >, 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::Not (const Mask128< T, N > m)
 
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<int kBits, size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::ShiftLeft (const Vec128< uint16_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::ShiftLeft (const Vec128< uint32_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::ShiftLeft (const Vec128< uint64_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::ShiftLeft (const Vec128< int16_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::ShiftLeft (const Vec128< int32_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::ShiftLeft (const Vec128< int64_t, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::detail::GaloisAffine (Vec128< T, N > v, VFromD< Repartition< uint64_t, Simd< T, N, 0 > > > matrix)
 
template<int kBits, size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::ShiftRight (const Vec128< uint16_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::ShiftRight (const Vec128< uint32_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::ShiftRight (const Vec128< uint64_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::ShiftRight (const Vec128< int16_t, N > v)
 
template<int kBits, size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::ShiftRight (const Vec128< int32_t, N > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_NOT_FLOAT_NOR_SPECIAL_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Load (D, const TFromD< D > *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Load (D, const float *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API Vec128< double > hwy::HWY_NAMESPACE::Load (D, const double *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_LANES_D(D, 2) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API Vec128< float > hwy::HWY_NAMESPACE::LoadU (D, const float *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API Vec128< double > hwy::HWY_NAMESPACE::LoadU (D, const double *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API Vec64< float > hwy::HWY_NAMESPACE::Load (D, const float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F64_D(D) >
HWY_API Vec64< double > hwy::HWY_NAMESPACE::Load (D, const double *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_F32_D(D) >
HWY_API Vec32< float > hwy::HWY_NAMESPACE::Load (D, const float *HWY_RESTRICT p)
 
template<class D , HWY_NEON_IF_EMULATED_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadU (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadDup128 (D d, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API void hwy::HWY_NAMESPACE::Store (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Store (Vec128< float > v, D, float *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Store (Vec128< double > v, D, double *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 2) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< float > v, D, float *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (Vec128< double > v, D, double *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Store (Vec64< float > v, D, float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Store (Vec64< double > v, D, double *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Store (Vec32< float > v, D, float *HWY_RESTRICT p)
 
template<class D , HWY_NEON_IF_EMULATED_D(D) >
HWY_API void hwy::HWY_NAMESPACE::StoreU (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT p)
 
template<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<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Shuffle2301 (Vec128< T, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Shuffle2301 (const Vec128< float, 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)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Shuffle1032 (const Vec128< uint32_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Shuffle1032 (const Vec128< int32_t > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Shuffle1032 (const Vec128< float > v)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::Shuffle01 (const Vec128< uint64_t > v)
 
HWY_API Vec128< int64_t > hwy::HWY_NAMESPACE::Shuffle01 (const Vec128< int64_t > v)
 
HWY_API Vec128< double > hwy::HWY_NAMESPACE::Shuffle01 (const Vec128< double > v)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Shuffle0321 (const Vec128< uint32_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Shuffle0321 (const Vec128< int32_t > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Shuffle0321 (const Vec128< float > v)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Shuffle2103 (const Vec128< uint32_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Shuffle2103 (const Vec128< int32_t > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Shuffle2103 (const Vec128< float > v)
 
HWY_API Vec128< uint32_t > hwy::HWY_NAMESPACE::Shuffle0123 (const Vec128< uint32_t > v)
 
HWY_API Vec128< int32_t > hwy::HWY_NAMESPACE::Shuffle0123 (const Vec128< int32_t > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::Shuffle0123 (const Vec128< float > v)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::TestBit (hwy::SizeTag< 1 >, const Vec128< T, N > v, const Vec128< T, N > bit)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::TestBit (hwy::SizeTag< 2 >, const Vec128< T, N > v, const Vec128< T, N > bit)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::TestBit (hwy::SizeTag< 4 >, const Vec128< T, N > v, const Vec128< T, N > bit)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::TestBit (hwy::SizeTag< 8 >, const Vec128< T, N > v, const Vec128< T, N > bit)
 
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_IF_T_SIZE(T, 1) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator== (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::operator== (const Vec128< float, N > a, const Vec128< float, N > b)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::operator== (const Vec128< double, N > a, const Vec128< double, N > b)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 1) >
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::operator!= (const Vec128< T, N > a, const Vec128< 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<size_t N>
HWY_API Mask128< int8_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< int8_t, N > a, const Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Mask128< int16_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< int16_t, N > a, const Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Mask128< int32_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< int32_t, N > a, const Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Mask128< int64_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< int64_t, N > a, const Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint8_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint16_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint32_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< uint32_t, N > a, const Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint64_t, N > hwy::HWY_NAMESPACE::operator> (const Vec128< uint64_t, N > a, const Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::operator> (const Vec128< float, N > a, const Vec128< float, N > b)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::operator> (const Vec128< double, N > a, const Vec128< double, N > b)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< float, N > a, const Vec128< float, N > b)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< double, N > a, const Vec128< double, N > b)
 
template<size_t N>
HWY_API Mask128< int8_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< int8_t, N > a, const Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Mask128< int16_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< int16_t, N > a, const Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Mask128< int32_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< int32_t, N > a, const Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Mask128< int64_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< int64_t, N > a, const Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint8_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint16_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint32_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< uint32_t, N > a, const Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Mask128< uint64_t, N > hwy::HWY_NAMESPACE::operator>= (const Vec128< uint64_t, N > a, const Vec128< uint64_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::operator<= (Vec128< T, N > a, Vec128< T, N > b)
 
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_IF_FLOAT_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Iota (const D d, T2 first)
 
template<class D , class M = MFromD<D>, HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_APIhwy::HWY_NAMESPACE::FirstN (D d, size_t num)
 
template<typename T , size_t N, HWY_IF_V_SIZE_LE(T, N, 4) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< T, N > a, Vec128< T, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::InterleaveLower (Vec128< double, N > a, Vec128< double, N > b)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveLower (D, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoad (MFromD< D > m, D, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoad (MFromD< D > m, D, const float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoad (MFromD< D > m, D, const double *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoadOr (VFromD< D > v, MFromD< D > m, D, const TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoadOr (VFromD< D > v, MFromD< D > m, D, const float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedLoadOr (VFromD< D > v, MFromD< D > m, D, const double *HWY_RESTRICT p)
 
template<class D , HWY_RVV_IF_EMULATED_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadN (D d, const TFromD< D > *HWY_RESTRICT p, size_t num_lanes)
 
template<class D , HWY_RVV_IF_EMULATED_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadNOr (VFromD< D > v, D d, const TFromD< D > *HWY_RESTRICT p, size_t num_lanes)
 
template<class D >
HWY_API void hwy::HWY_NAMESPACE::detail::ScalarMaskedStore (VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API void hwy::HWY_NAMESPACE::BlendedStore (VFromD< D > v, MFromD< D > m, D, TFromD< D > *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::BlendedStore (VFromD< D > v, MFromD< D > m, D, float *HWY_RESTRICT p)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::BlendedStore (VFromD< D > v, MFromD< D > m, D, double *HWY_RESTRICT p)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<size_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_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< uint32_t, N > a, const Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< uint64_t, N > a, const Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< int8_t, N > a, const Vec128< int8_t, N > b)
 
template<size_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_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< int32_t, N > a, const Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< int64_t, N > a, const Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< float, N > a, const Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::operator+ (const Vec128< double, N > a, const Vec128< double, N > b)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::operator- (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::operator- (Vec128< uint16_t, N > a, Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator- (const Vec128< uint32_t, N > a, const Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::operator- (const Vec128< uint64_t, N > a, const Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::operator- (const Vec128< int8_t, N > a, const Vec128< int8_t, N > b)
 
template<size_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_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator- (const Vec128< int32_t, N > a, const Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::operator- (const Vec128< int64_t, N > a, const Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::operator- (const Vec128< float, N > a, const Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::operator- (const Vec128< double, N > a, const Vec128< double, N > b)
 
template<size_t N, HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::AddSub (Vec128< float, N > a, Vec128< float, N > b)
 
HWY_API Vec128< double > hwy::HWY_NAMESPACE::AddSub (Vec128< double > a, Vec128< double > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N/8 > hwy::HWY_NAMESPACE::SumsOf8 (const Vec128< uint8_t, N > v)
 
template<class V , HWY_IF_U8(TFromV< V >) >
HWY_API VFromD< RepartitionToWideX3< DFromV< V > > > hwy::HWY_NAMESPACE::SumsOf8 (V v)
 
template<size_t N>
HWY_API Vec128< uint64_t, N/8 > hwy::HWY_NAMESPACE::SumsOf8AbsDiff (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<class V , HWY_IF_I8_D(DFromV< V >) >
HWY_API VFromD< RepartitionToWideX3< DFromV< V > > > hwy::HWY_NAMESPACE::SumsOf8AbsDiff (V a, V b)
 
template<size_t N>
HWY_INLINE Vec128< uint32_t,(N+3)/4 > hwy::HWY_NAMESPACE::detail::SumsOf4 (hwy::UnsignedTag, hwy::SizeTag< 1 >, Vec128< uint8_t, N > v)
 
template<int kAOffset, int kBOffset, size_t N>
HWY_API Vec128< uint16_t,(N+1)/2 > hwy::HWY_NAMESPACE::SumsOfAdjQuadAbsDiff (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
template<int kAOffset, int kBOffset, class V , HWY_IF_I8_D(DFromV< V >) >
HWY_API VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::SumsOfAdjQuadAbsDiff (V a, V b)
 
template<int kIdx3, int kIdx2, int kIdx1, int kIdx0, size_t N>
HWY_API Vec128< uint16_t,(N+1)/2 > hwy::HWY_NAMESPACE::SumsOfShuffledQuadAbsDiff (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
template<int kIdx3, int kIdx2, int kIdx1, int kIdx0, class V , HWY_IF_I8_D(DFromV< V >) >
HWY_API VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::SumsOfShuffledQuadAbsDiff (V a, V b)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec128< int8_t, N > a, const Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec128< int16_t, N > a, const Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::SaturatedAdd (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::SaturatedAdd (Vec128< int64_t, N > a, Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::SaturatedSub (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::SaturatedSub (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::SaturatedSub (const Vec128< int8_t, N > a, const Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::SaturatedSub (const Vec128< int16_t, N > a, const Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::SaturatedSub (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::SaturatedSub (Vec128< int64_t, N > a, Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::AverageRound (const Vec128< uint8_t, N > a, const Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::AverageRound (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
template<size_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_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_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::MulHigh (const Vec128< uint16_t, N > a, const Vec128< uint16_t, N > b)
 
template<size_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<class V , HWY_IF_T_SIZE_ONE_OF_V(V,(1<< 1)|(1<< 4)) , HWY_IF_LANES_D(DFromV< V >, 1) >
HWY_APIhwy::HWY_NAMESPACE::MulHigh (V a, V b)
 
template<class V , HWY_IF_U8_D(DFromV< V >) >
HWY_API VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::MulEven (V a, V b)
 
template<size_t N>
HWY_API Vec128< uint64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< uint32_t, N > a, Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t,(N+1)/2 > hwy::HWY_NAMESPACE::MulEven (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<class V , HWY_IF_T_SIZE_V(V, 1) >
HWY_API VFromD< RepartitionToWide< DFromV< V > > > hwy::HWY_NAMESPACE::MulOdd (V a, V b)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator* (const Vec128< uint32_t, N > a, const Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator* (const Vec128< int32_t, N > a, const Vec128< int32_t, N > b)
 
template<int kBits, size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::RotateRight (const Vec128< uint16_t, N > 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)
 
template<int kBits, class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::RotateRight (const V v)
 
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<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) , HWY_IF_T_SIZE_ONE_OF_V(V,(1<< 4)|(1<< 8)) >
HWY_APIhwy::HWY_NAMESPACE::RotateLeftSame (V v, int bits)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) , HWY_IF_T_SIZE_ONE_OF_V(V,(1<< 4)|(1<< 8)) >
HWY_APIhwy::HWY_NAMESPACE::RotateRightSame (V v, int bits)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::BroadcastSignBit (const Vec128< int8_t, N > v)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::BroadcastSignBit (const Vec128< int16_t, N > v)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::BroadcastSignBit (const Vec128< int32_t, N > v)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::BroadcastSignBit (const Vec128< int64_t, N > v)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::Abs (const Vec128< int8_t, N > v)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::Abs (const Vec128< int16_t, N > v)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::Abs (const Vec128< int32_t, N > v)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::Abs (const Vec128< int64_t, N > v)
 
template<class V , HWY_IF_SIGNED_V(V) >
HWY_APIhwy::HWY_NAMESPACE::SaturatedAbs (V v)
 
template<int kBits, size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::ShiftRight (const Vec128< int64_t, N > v)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::IfNegativeThenElse (const Vec128< int8_t, N > v, const Vec128< int8_t, N > yes, const Vec128< int8_t, N > no)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 2) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::IfNegativeThenElse (Vec128< T, N > v, Vec128< T, N > yes, Vec128< T, N > no)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::IfNegativeThenNegOrUndefIfZero (Vec128< int8_t, N > mask, Vec128< int8_t, N > v)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::IfNegativeThenNegOrUndefIfZero (Vec128< int16_t, N > mask, Vec128< int16_t, N > v)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::IfNegativeThenNegOrUndefIfZero (Vec128< int32_t, N > mask, Vec128< int32_t, N > v)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::IfNegativeThenNegOrUndefIfZero (V mask, V v)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec128< uint16_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec128< uint32_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec128< uint64_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec128< int16_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec128< int32_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec128< int64_t, N > v, const int bits)
 
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<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec128< uint16_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec128< uint32_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec128< uint64_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (Vec128< uint8_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec128< int16_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec128< int32_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec128< int64_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::ShiftRightSame (Vec128< int8_t, N > v, const int bits)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::operator* (Vec128< float, N > a, Vec128< float, N > b)
 
HWY_API Vec128< float, 1 > hwy::HWY_NAMESPACE::operator* (const Vec128< float, 1 > a, const Vec128< float, 1 > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::operator* (Vec128< double, N > a, Vec128< double, N > b)
 
HWY_API Vec64< double > hwy::HWY_NAMESPACE::operator* (const Vec64< double > a, const Vec64< double > b)
 
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, 1 > hwy::HWY_NAMESPACE::operator/ (const Vec128< float, 1 > a, const Vec128< float, 1 > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::operator/ (const Vec128< double, N > a, const Vec128< double, N > b)
 
HWY_API Vec64< double > hwy::HWY_NAMESPACE::operator/ (const Vec64< double > a, const Vec64< double > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ApproximateReciprocal (Vec128< float, N > v)
 
HWY_API Vec128< float, 1 > hwy::HWY_NAMESPACE::ApproximateReciprocal (const Vec128< float, 1 > v)
 
HWY_API Vec128< double > hwy::HWY_NAMESPACE::ApproximateReciprocal (Vec128< double > v)
 
HWY_API Vec64< double > hwy::HWY_NAMESPACE::ApproximateReciprocal (Vec64< double > v)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::AbsDiff (V a, V b)
 
template<typename T , size_t N, HWY_IF_U8(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaskedMinOr (Vec128< T, N > no, Mask128< T, N > m, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_U8(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaskedMaxOr (Vec128< T, N > no, Mask128< T, N > m, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_UI8(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaskedAddOr (Vec128< T, N > no, Mask128< T, N > m, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_UI8(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaskedSubOr (Vec128< T, N > no, Mask128< T, N > m, Vec128< T, N > a, Vec128< T, N > b)
 
template<class V , class M >
HWY_APIhwy::HWY_NAMESPACE::MaskedMulOr (V no, M m, V a, V b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::MaskedMulOr (Vec128< float, N > no, Mask128< float, N > m, Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::MaskedMulOr (Vec128< double, N > no, Mask128< double, N > m, Vec128< double, N > a, Vec128< double, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::MaskedDivOr (Vec128< float, N > no, Mask128< float, N > m, Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::MaskedDivOr (Vec128< double, N > no, Mask128< double, N > m, Vec128< double, N > a, Vec128< double, N > b)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::MaskedDivOr (V no, MFromD< DFromV< V > > m, V a, V b)
 
template<class V , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::MaskedModOr (V no, MFromD< DFromV< V > > m, V a, V b)
 
template<typename T , size_t N, HWY_IF_I8(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaskedSatAddOr (Vec128< T, N > no, Mask128< T, N > m, Vec128< T, N > a, Vec128< T, N > b)
 
template<typename T , size_t N, HWY_IF_I8(T) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::MaskedSatSubOr (Vec128< T, N > no, Mask128< T, N > m, Vec128< T, N > a, Vec128< T, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::MulAdd (Vec128< float, N > mul, Vec128< float, N > x, Vec128< float, N > add)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::MulAdd (Vec128< double, N > mul, Vec128< double, N > x, Vec128< double, N > add)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::NegMulAdd (Vec128< float, N > mul, Vec128< float, N > x, Vec128< float, N > add)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::NegMulAdd (Vec128< double, N > mul, Vec128< double, N > x, Vec128< double, N > add)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::MulSub (Vec128< float, N > mul, Vec128< float, N > x, Vec128< float, N > sub)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::MulSub (Vec128< double, N > mul, Vec128< double, N > x, Vec128< double, N > sub)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::NegMulSub (Vec128< float, N > mul, Vec128< float, N > x, Vec128< float, N > sub)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::NegMulSub (Vec128< double, N > mul, Vec128< double, N > x, Vec128< double, N > sub)
 
template<size_t N, HWY_IF_LANES_GT(N, 1) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::MulAddSub (Vec128< float, N > mul, Vec128< float, N > x, Vec128< float, N > sub_or_add)
 
HWY_API Vec128< double > hwy::HWY_NAMESPACE::MulAddSub (Vec128< double > mul, Vec128< double > x, Vec128< double > sub_or_add)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Sqrt (const Vec128< float, N > v)
 
HWY_API Vec128< float, 1 > hwy::HWY_NAMESPACE::Sqrt (Vec128< float, 1 > v)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::Sqrt (const Vec128< double, N > v)
 
HWY_API Vec64< double > hwy::HWY_NAMESPACE::Sqrt (Vec64< double > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (Vec128< float, N > v)
 
HWY_API Vec128< float, 1 > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (Vec128< float, 1 > v)
 
HWY_API Vec64< double > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (Vec64< double > v)
 
HWY_API Vec128< double > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (Vec128< double > v)
 
template<typename T , size_t N>
HWY_INLINE HWY_MAYBE_UNUSED Vec128< T, N > hwy::HWY_NAMESPACE::detail::MinU (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::Min (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::Min (Vec128< uint16_t, N > a, Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::Min (Vec128< uint32_t, N > a, Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::Min (Vec128< uint64_t, N > a, Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::Min (Vec128< int8_t, N > a, Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::Min (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::Min (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::Min (Vec128< int64_t, N > a, Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Min (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::Min (Vec128< double, N > a, Vec128< double, N > b)
 
template<typename T , size_t N>
HWY_INLINE HWY_MAYBE_UNUSED Vec128< T, N > hwy::HWY_NAMESPACE::detail::MaxU (const Vec128< T, N > a, const Vec128< T, N > b)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::Max (Vec128< uint8_t, N > a, Vec128< uint8_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::Max (Vec128< uint16_t, N > a, Vec128< uint16_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::Max (Vec128< uint32_t, N > a, Vec128< uint32_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::Max (Vec128< uint64_t, N > a, Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::Max (Vec128< int8_t, N > a, Vec128< int8_t, N > b)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::Max (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::Max (Vec128< int32_t, N > a, Vec128< int32_t, N > b)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::Max (Vec128< int64_t, N > a, Vec128< int64_t, N > b)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Max (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::Max (Vec128< double, N > a, Vec128< double, N > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_NOT_FLOAT3264_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Stream (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Stream (VFromD< D > v, D, float *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API void hwy::HWY_NAMESPACE::Stream (VFromD< D > v, D, double *HWY_RESTRICT aligned)
 
template<int kScale, class D , class VI , HWY_IF_UI32_D(D) >
HWY_INLINE void hwy::HWY_NAMESPACE::detail::NativeScatter128 (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT base, VI index)
 
template<int kScale, class D , class VI , HWY_IF_F32_D(D) >
HWY_INLINE void hwy::HWY_NAMESPACE::detail::NativeScatter128 (VFromD< D > v, D d, float *HWY_RESTRICT base, VI index)
 
template<int kScale, class D , class VI , HWY_IF_F64_D(D) >
HWY_INLINE void hwy::HWY_NAMESPACE::detail::NativeScatter128 (VFromD< D > v, D d, double *HWY_RESTRICT base, VI index)
 
template<int kScale, class D , class VI , HWY_IF_UI32_D(D) >
HWY_INLINE void hwy::HWY_NAMESPACE::detail::NativeMaskedScatter128 (VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT base, VI index)
 
template<int kScale, class D , class VI , HWY_IF_F32_D(D) >
HWY_INLINE void hwy::HWY_NAMESPACE::detail::NativeMaskedScatter128 (VFromD< D > v, MFromD< D > m, D d, float *HWY_RESTRICT base, VI index)
 
template<int kScale, class D , class VI , HWY_IF_F64_D(D) >
HWY_INLINE void hwy::HWY_NAMESPACE::detail::NativeMaskedScatter128 (VFromD< D > v, MFromD< D > m, D d, double *HWY_RESTRICT base, VI index)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API void hwy::HWY_NAMESPACE::ScatterOffset (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT base, VFromD< RebindToSigned< D > > offset)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API void hwy::HWY_NAMESPACE::ScatterIndex (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT base, VFromD< RebindToSigned< D > > index)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API void hwy::HWY_NAMESPACE::MaskedScatterIndex (VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT base, VFromD< RebindToSigned< D > > index)
 
template<int kScale, typename T , size_t N, HWY_IF_UI32(T) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::NativeGather128 (const T *HWY_RESTRICT base, Vec128< int32_t, N > indices)
 
template<int kScale, typename T , size_t N, HWY_IF_UI64(T) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::NativeGather128 (const T *HWY_RESTRICT base, Vec128< int64_t, N > indices)
 
template<int kScale, size_t N>
HWY_INLINE Vec128< float, N > hwy::HWY_NAMESPACE::detail::NativeGather128 (const float *HWY_RESTRICT base, Vec128< int32_t, N > indices)
 
template<int kScale, size_t N>
HWY_INLINE Vec128< double, N > hwy::HWY_NAMESPACE::detail::NativeGather128 (const double *HWY_RESTRICT base, Vec128< int64_t, N > indices)
 
template<int kScale, typename T , size_t N, HWY_IF_UI32(T) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::NativeMaskedGatherOr128 (Vec128< T, N > no, Mask128< T, N > m, const T *HWY_RESTRICT base, Vec128< int32_t, N > indices)
 
template<int kScale, typename T , size_t N, HWY_IF_UI64(T) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::NativeMaskedGatherOr128 (Vec128< T, N > no, Mask128< T, N > m, const T *HWY_RESTRICT base, Vec128< int64_t, N > indices)
 
template<int kScale, size_t N>
HWY_INLINE Vec128< float, N > hwy::HWY_NAMESPACE::detail::NativeMaskedGatherOr128 (Vec128< float, N > no, Mask128< float, N > m, const float *HWY_RESTRICT base, Vec128< int32_t, N > indices)
 
template<int kScale, size_t N>
HWY_INLINE Vec128< double, N > hwy::HWY_NAMESPACE::detail::NativeMaskedGatherOr128 (Vec128< double, N > no, Mask128< double, N > m, const double *HWY_RESTRICT base, Vec128< int64_t, N > indices)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::GatherOffset (D d, const TFromD< D > *HWY_RESTRICT base, VFromD< RebindToSigned< D > > offsets)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::GatherIndex (D d, const T *HWY_RESTRICT base, VFromD< RebindToSigned< D > > indices)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedGatherIndexOr (VFromD< D > no, MFromD< D > m, D d, const T *HWY_RESTRICT base, VFromD< RebindToSigned< D > > indices)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::MaskedGatherIndex (MFromD< D > m, D d, const TFromD< D > *HWY_RESTRICT base, VFromD< RebindToSigned< D > > indices)
 
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_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftLeftBytes (D d, VFromD< D > v)
 
template<int kBytes, class V >
HWY_APIhwy::HWY_NAMESPACE::ShiftLeftBytes (const V v)
 
template<int kLanes, class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ShiftLeftLanes (D d, VFromD< D > v)
 
template<size_t kLanes, class V >
HWY_APIhwy::HWY_NAMESPACE::ShiftLeftLanes (const V v)
 
template<int kBytes, class D , HWY_IF_V_SIZE_LE_D(D, 16) >
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_NEON_IF_EMULATED_D(D) , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::UpperHalf (D dh, VFromD< Twice< D > > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API Vec64< float > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< float > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_F64_D(D) >
HWY_API Vec64< double > hwy::HWY_NAMESPACE::UpperHalf (D, Vec128< double > 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<size_t kLane, typename T , size_t N, HWY_IF_T_SIZE(T, 1) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::ExtractLane (const Vec128< T, N > v)
 
template<size_t kLane, size_t N>
HWY_INLINE float hwy::HWY_NAMESPACE::detail::ExtractLane (const Vec128< float, N > v)
 
template<size_t kLane>
HWY_INLINE double hwy::HWY_NAMESPACE::detail::ExtractLane (const Vec64< double > v)
 
template<size_t kLane>
HWY_INLINE double hwy::HWY_NAMESPACE::detail::ExtractLane (const Vec128< double > 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<class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::InsertLaneUsingBroadcastAndBlend (V v, size_t i, TFromV< V > t)
 
template<size_t kLane, typename T , size_t N, HWY_IF_T_SIZE(T, 1) >
HWY_INLINE Vec128< T, N > hwy::HWY_NAMESPACE::detail::InsertLane (const Vec128< T, N > v, T t)
 
template<size_t kLane, size_t N>
HWY_INLINE Vec128< float, N > hwy::HWY_NAMESPACE::detail::InsertLane (const Vec128< float, N > v, float t)
 
template<size_t kLane>
HWY_INLINE Vec128< double, 1 > hwy::HWY_NAMESPACE::detail::InsertLane (const Vec128< double, 1 > v, double t)
 
template<size_t kLane>
HWY_INLINE Vec128< double > hwy::HWY_NAMESPACE::detail::InsertLane (const Vec128< double > v, double t)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 1 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 2 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 2 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 4 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 4 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 8 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 8 > v, size_t i, T t)
 
template<typename T >
HWY_API Vec128< T, 16 > hwy::HWY_NAMESPACE::InsertLane (const Vec128< T, 16 > v, size_t i, T t)
 
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_IF_T_SIZE(T, 1) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< T, N > v)
 
template<int kLane, size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< float, N > v)
 
template<int kLane, size_t N>
HWY_API Vec128< double, N > hwy::HWY_NAMESPACE::Broadcast (const Vec128< double, N > v)
 
template<class D , typename T = TFromD<D>, typename TI , size_t kN, HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE(T, 1) >
HWY_API Indices128< T, kN > hwy::HWY_NAMESPACE::IndicesFromVec (D d, Vec128< TI, kN > vec)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , 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_IF_T_SIZE(T, 1) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< T, N > v, Indices128< T, N > idx)
 
template<size_t N, HWY_IF_V_SIZE_GT(float, N, 4) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< float, N > v, Indices128< float, N > idx)
 
template<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< T, 1 > v, Indices128< T, 1 >)
 
template<typename T , HWY_IF_UI64(T) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< T > v, Indices128< T > idx)
 
HWY_API Vec128< double > hwy::HWY_NAMESPACE::TableLookupLanes (Vec128< double > v, Indices128< double > idx)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReverseBlocks (D, VFromD< D > v)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 2)|(1<< 4)|(1<< 8)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse (D, VFromD< D > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) , HWY_IF_POW2_LE_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_D(D, 2) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse (D d, const VFromD< D > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse2 (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse2 (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse4 (D d, VFromD< D > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse4 (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Reverse8 (D d, VFromD< D > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveUpper (D, VFromD< D > a, VFromD< D > 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_IF_V_SIZE_LE_D(D, 16) >
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<size_t kIdx3210, class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< kIdx3210 >, hwy::SizeTag< 2 >, hwy::SizeTag< 8 >, V v)
 
template<size_t kIdx3210, class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< kIdx3210 >, hwy::SizeTag< 2 >, hwy::SizeTag< 16 >, V v)
 
template<size_t kIdx3210, size_t kVectSize, class V , HWY_IF_LANES_LE(kVectSize, 16) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< kIdx3210 >, hwy::SizeTag< 1 >, hwy::SizeTag< kVectSize >, V v)
 
template<size_t kIdx3210, size_t kVectSize, class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< kIdx3210 > idx_3210_tag, hwy::SizeTag< 1 >, hwy::SizeTag< 16 >, V v)
 
template<size_t kIdx3210, class V , HWY_IF_NOT_FLOAT(TFromV< V >) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::Per4LaneBlockShuffle (hwy::SizeTag< kIdx3210 >, hwy::SizeTag< 4 >, hwy::SizeTag< 16 >, V v)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::SlideUpLanes (V v, size_t amt)
 
template<class D , HWY_IF_LANES_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideUpLanes (D, VFromD< D > v, size_t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_LANES_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideUpLanes (D d, VFromD< D > v, size_t amt)
 
template<class V , HWY_IF_V_SIZE_LE_V(V, 8) >
HWY_INLINEhwy::HWY_NAMESPACE::detail::SlideDownLanes (V v, size_t amt)
 
template<class D , HWY_IF_LANES_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideDownLanes (D, VFromD< D > v, size_t)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_LANES_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideDownLanes (D d, VFromD< D > v, size_t amt)
 
template<class D , HWY_IF_T_SIZE_ONE_OF_D( D,(HWY_TARGET<=HWY_AVX3 ?((1<< 1)|(1<< 2)) :0)|(1<< 4)|(1<< 8)) >
HWY_API void hwy::HWY_NAMESPACE::StoreN (VFromD< D > v, D d, TFromD< D > *HWY_RESTRICT p, size_t max_lanes_to_store)
 
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_IF_V_SIZE_D(D, 16) , HWY_IF_NOT_SPECIAL_FLOAT_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ZeroExtendVector (D d, VFromD< Half< D > > lo)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ZeroExtendVector (D d, VFromD< Half< D > > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatLowerLower (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatUpperUpper (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_GT_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatLowerUpper (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_NOT_FLOAT3264_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatUpperLower (D d, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API Vec128< float > hwy::HWY_NAMESPACE::ConcatUpperLower (D d, Vec128< float > hi, Vec128< float > lo)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API Vec128< double > hwy::HWY_NAMESPACE::ConcatUpperLower (D, Vec128< double > hi, Vec128< double > 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 , HWY_IF_NOT_T_SIZE_D(D, 8) , HWY_IF_POW2_LE_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatOdd (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::ConcatOdd (D, VFromD< D > hi, VFromD< D > lo)
 
template<class D , HWY_IF_NOT_T_SIZE_D(D, 8) , HWY_IF_POW2_LE_D(D, 2) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConcatEven (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::ConcatEven (D, VFromD< D > hi, VFromD< D > lo)
 
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 V , HWY_IF_T_SIZE_V(V, 1) , HWY_IF_V_SIZE_GT_V(V, 2) >
HWY_APIhwy::HWY_NAMESPACE::DupEven (V v)
 
template<typename T , HWY_IF_T_SIZE(T, 2) >
HWY_API Vec64< T > hwy::HWY_NAMESPACE::DupEven (const Vec64< T > v)
 
template<class V , HWY_IF_T_SIZE_V(V, 2) >
HWY_APIhwy::HWY_NAMESPACE::DupEven (const V v)
 
template<typename T , HWY_IF_T_SIZE(T, 4) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::DupEven (Vec128< T > v)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::DupEven (Vec128< float > v)
 
template<typename T , HWY_IF_T_SIZE(T, 1) >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::DupOdd (Vec128< T, 1 > v)
 
template<typename V , HWY_IF_T_SIZE_V(V, 1) , HWY_IF_V_SIZE_GT_V(V, 1) >
HWY_APIhwy::HWY_NAMESPACE::DupOdd (V v)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 2) , HWY_IF_LANES_LE(N, 4) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::DupOdd (Vec128< T, N > v)
 
template<typename T , size_t N, HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::DupOdd (Vec128< T, N > v)
 
template<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::DupOdd (Vec128< float, N > v)
 
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_IF_T_SIZE(T, 1) >
HWY_API Vec128< T > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec128< T > a, Vec128< T > b, Indices128< T > idx)
 
HWY_API Vec128< float > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec128< float > a, Vec128< float > b, Indices128< float > idx)
 
HWY_API Vec128< double > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (Vec128< double > a, Vec128< double > b, Indices128< double > idx)
 
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<size_t N>
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::OddEven (const Vec128< float, N > a, const Vec128< float, 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_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_D(D, 1) >
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<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::InterleaveOdd (D, VFromD< D > a, VFromD< D > b)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::OddEvenBlocks (Vec128< T, N >, Vec128< T, N > even)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::SwapAdjacentBlocks (Vec128< T, N > v)
 
template<class V >
HWY_APIhwy::HWY_NAMESPACE::detail::AVX2ShlU16Vec128 (V v, V bits)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag, Vec128< uint16_t, N > v, Vec128< uint16_t, N > bits)
 
template<class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::AVX2ShlU8Vec128 (V v, V bits)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag tag, Vec128< uint8_t, N > v, Vec128< uint8_t, N > bits)
 
HWY_API Vec128< uint8_t, 1 > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag, Vec128< uint8_t, 1 > v, Vec128< uint8_t, 1 > bits)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag, Vec128< uint32_t, N > v, Vec128< uint32_t, N > bits)
 
HWY_API Vec32< uint32_t > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag, Vec32< uint32_t > v, const Vec32< uint32_t > bits)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag, Vec128< uint64_t > v, Vec128< uint64_t > bits)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::detail::Shl (hwy::UnsignedTag, Vec64< uint64_t > v, Vec64< uint64_t > 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_API Vec128< T, N > hwy::HWY_NAMESPACE::operator<< (Vec128< T, N > v, Vec128< T, N > bits)
 
template<class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::AVX2ShrU8Vec128 (V v, V bits)
 
template<size_t N>
HWY_API Vec128< uint16_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< uint16_t, N > in, const Vec128< uint16_t, N > bits)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< uint8_t, N > in, const Vec128< uint8_t, N > bits)
 
HWY_API Vec128< uint8_t, 1 > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint8_t, 1 > in, const Vec128< uint8_t, 1 > bits)
 
template<size_t N>
HWY_API Vec128< uint32_t, N > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint32_t, N > in, const Vec128< uint32_t, N > bits)
 
HWY_API Vec128< uint32_t, 1 > hwy::HWY_NAMESPACE::operator>> (const Vec128< uint32_t, 1 > in, const Vec128< uint32_t, 1 > bits)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::operator>> (Vec128< uint64_t > v, Vec128< uint64_t > bits)
 
HWY_API Vec64< uint64_t > hwy::HWY_NAMESPACE::operator>> (Vec64< uint64_t > v, Vec64< uint64_t > bits)
 
template<class V >
HWY_INLINEhwy::HWY_NAMESPACE::detail::AVX2ShrI8Vec128 (V v, V bits)
 
template<size_t N>
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< int16_t, N > v, Vec128< int16_t, N > bits)
 
template<size_t N>
HWY_API Vec128< int8_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< int8_t, N > v, Vec128< int8_t, N > bits)
 
HWY_API Vec128< int8_t, 1 > hwy::HWY_NAMESPACE::operator>> (Vec128< int8_t, 1 > v, Vec128< int8_t, 1 > bits)
 
template<size_t N>
HWY_API Vec128< int32_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< int32_t, N > v, Vec128< int32_t, N > bits)
 
template<size_t N>
HWY_API Vec128< int64_t, N > hwy::HWY_NAMESPACE::operator>> (Vec128< int64_t, N > v, Vec128< int64_t, N > bits)
 
template<class V , HWY_IF_U64(TFromV< V >) >
static HWY_INLINEhwy::HWY_NAMESPACE::detail::SSE2Mul128 (V a, V b, V &mulH)
 
template<class V , HWY_IF_UI64(TFromV< V >) , HWY_IF_V_SIZE_GT_V(V,(HWY_ARCH_X86_64 ? 16 :8)) >
HWY_APIhwy::HWY_NAMESPACE::MulEven (V a, V b)
 
template<class V , HWY_IF_UI64(TFromV< V >) , HWY_IF_V_SIZE_GT_V(V,(HWY_ARCH_X86_64 ? 16 :8)) >
HWY_APIhwy::HWY_NAMESPACE::MulOdd (V a, V 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_I32_D(D32) , HWY_IF_V_SIZE_LE_D(D32, 16) , class V16 = VFromD<RepartitionToNarrow<D32>>>
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D32, V16 a, V16 b)
 
template<class DU32 , HWY_IF_U32_D(DU32) , class VU16 = VFromD<RepartitionToNarrow<DU32>>>
HWY_API VFromD< DU32 > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (DU32 du32, VU16 a, VU16 b)
 
template<class DI16 , HWY_IF_I16_D(DI16) , HWY_IF_V_SIZE_LE_D(DI16, 16) >
HWY_API VFromD< DI16 > hwy::HWY_NAMESPACE::SatWidenMulPairwiseAdd (DI16, VFromD< Repartition< uint8_t, DI16 > > a, VFromD< Repartition< int8_t, DI16 > > b)
 
template<class DI32 , HWY_IF_I32_D(DI32) , HWY_IF_V_SIZE_LE_D(DI32, 16) >
HWY_API VFromD< DI32 > hwy::HWY_NAMESPACE::SatWidenMulPairwiseAccumulate (DI32, VFromD< Repartition< int16_t, DI32 > > a, VFromD< Repartition< int16_t, DI32 > > b, VFromD< DI32 > sum)
 
template<class D32 , HWY_IF_F32_D(D32) , class V16 = VFromD<Repartition<bfloat16_t, D32>>>
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D32 df32, V16 a, V16 b, const VFromD< D32 > sum0, VFromD< D32 > &sum1)
 
template<class D32 , HWY_IF_I32_D(D32) , HWY_IF_V_SIZE_LE_D(D32, 16) , class V16 = VFromD<RepartitionToNarrow<D32>>>
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D32 d, V16 a, V16 b, const VFromD< D32 > sum0, VFromD< D32 > &)
 
template<class DU32 , HWY_IF_U32_D(DU32) , class VU16 = VFromD<RepartitionToNarrow<DU32>>>
HWY_API VFromD< DU32 > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (DU32 d, VU16 a, VU16 b, const VFromD< DU32 > sum0, VFromD< DU32 > &)
 
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 DI32 , HWY_IF_I32_D(DI32) , HWY_IF_V_SIZE_LE_D(DI32, 16) >
HWY_API VFromD< DI32 > hwy::HWY_NAMESPACE::SumOfMulQuadAccumulate (DI32, VFromD< Repartition< uint8_t, DI32 > > a_u, VFromD< Repartition< int8_t, DI32 > > b_i, VFromD< DI32 > sum)
 
template<class DI32 , HWY_IF_I32_D(DI32) >
HWY_API VFromD< DI32 > hwy::HWY_NAMESPACE::SumOfMulQuadAccumulate (DI32 di32, VFromD< Repartition< int8_t, DI32 > > a, VFromD< Repartition< int8_t, DI32 > > b, VFromD< DI32 > sum)
 
template<class DU32 , HWY_IF_U32_D(DU32) >
HWY_API VFromD< DU32 > hwy::HWY_NAMESPACE::SumOfMulQuadAccumulate (DU32 du32, VFromD< Repartition< uint8_t, DU32 > > a, VFromD< Repartition< uint8_t, DU32 > > b, VFromD< DU32 > sum)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< uint8_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< uint16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , class V , HWY_IF_UI64_D(D) , HWY_IF_LANES_D(D, HWY_MAX_LANES_V(V)) , HWY_IF_UNSIGNED_V(V) , HWY_IF_T_SIZE_ONE_OF_V(V,(1<< 1)|(1<< 2)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D d, V v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< int8_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< int16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< int32_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , 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_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteTo (D, VFromD< Rebind< float, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< int32_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< int16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 4) , HWY_IF_U8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, VFromD< Rebind< uint16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 4) , HWY_IF_I16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D dn, Vec32< int32_t > a, Vec32< int32_t > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec64< int32_t > a, Vec64< int32_t > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec128< int32_t > a, Vec128< int32_t > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D dn, Vec128< uint32_t > a, Vec128< uint32_t > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_U16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D dn, VFromD< Repartition< uint32_t, D > > a, VFromD< Repartition< uint32_t, D > > b)
 
template<class D , HWY_IF_I8_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D d8, VFromD< Repartition< int16_t, D > > a, VFromD< Repartition< int16_t, D > > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 8) , HWY_IF_I8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec64< int16_t > a, Vec64< int16_t > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_I8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D, Vec128< int16_t > a, Vec128< int16_t > b)
 
template<class D , HWY_IF_V_SIZE_D(D, 16) , HWY_IF_U8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D dn, Vec128< uint16_t > a, Vec128< uint16_t > b)
 
template<class D , HWY_IF_U8_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D d8, VFromD< Repartition< uint16_t, D > > a, VFromD< Repartition< uint16_t, D > > b)
 
template<class D , HWY_IF_NOT_FLOAT_NOR_SPECIAL(TFromD< D >) , HWY_IF_V_SIZE_LE_D(D, 16) , 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_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 D >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::ClampF64ToI32Max (D d, VFromD< D > v)
 
template<class DI >
HWY_INLINE VFromD< DI > hwy::HWY_NAMESPACE::detail::FixConversionOverflow (DI di, VFromD< RebindToFloat< DI > > original, VFromD< DI > converted)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_I32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteInRangeTo (D, VFromD< Rebind< double, D > > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D d, VFromD< Rebind< double, D > > from)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D df32, VFromD< Rebind< int64_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D df32, VFromD< Rebind< uint64_t, D > > v)
 
template<size_t N>
HWY_API Vec128< uint8_t, N > hwy::HWY_NAMESPACE::U8FromU32 (Vec128< uint32_t, N > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_I64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::PromoteInRangeTo (D, VFromD< Rebind< float, D > > v)
 
HWY_API Vec128< int16_t > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec128< int16_t > a, Vec128< int16_t > b)
 
template<size_t N, HWY_IF_V_SIZE_LE(int16_t, N, 8) >
HWY_API Vec128< int16_t, N > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec128< int16_t, N > a, Vec128< int16_t, N > b)
 
template<typename From , class DTo , HWY_IF_LANES_D(DTo, 1) >
HWY_API VFromD< DTo > hwy::HWY_NAMESPACE::TruncateTo (DTo, Vec128< From, 1 > v)
 
template<class D , HWY_IF_V_SIZE_D(D, 2) , HWY_IF_U8_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::TruncateTo (D d, Vec128< uint64_t > v)
 
template<class D , HWY_IF_U8_D(D) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::TruncateTo (D, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , HWY_IF_U8_D(D) , HWY_IF_LANES_GT_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::TruncateTo (D, VFromD< Rebind< uint16_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 8) , HWY_IF_T_SIZE_D(D, 4) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(TFromD< D >) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D dn, VFromD< Repartition< int64_t, D > > a, VFromD< Repartition< int64_t, D > > b)
 
template<class D , HWY_IF_U32_D(D) , HWY_IF_V_SIZE_LE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ReorderDemote2To (D d32, VFromD< Repartition< uint64_t, D > > a, VFromD< Repartition< uint64_t, D > > b)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D, VFromD< Rebind< int32_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D, VFromD< Rebind< uint32_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D, VFromD< Rebind< int64_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_F64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D, VFromD< Rebind< uint64_t, D > > v)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_I32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertInRangeTo (D, VFromD< RebindToFloat< D > > v)
 
template<class D , HWY_IF_I32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ConvertTo (D di, VFromD< RebindToFloat< D > > v)
 
template<class DI , HWY_IF_NOT_FLOAT_NOR_SPECIAL_D(DI) , HWY_IF_T_SIZE_ONE_OF_D(DI,(1<< 4)|(1<< 8)) >
HWY_API VFromD< DI > hwy::HWY_NAMESPACE::ConvertInRangeTo (DI di, VFromD< RebindToFloat< DI > > v)
 
template<class DI , HWY_IF_I64_D(DI) >
HWY_API VFromD< DI > hwy::HWY_NAMESPACE::ConvertTo (DI di, VFromD< RebindToFloat< DI > > v)
 
template<class DU , HWY_IF_V_SIZE_LE_D(DU, 16) , HWY_IF_U32_D(DU) >
HWY_API VFromD< DU > hwy::HWY_NAMESPACE::ConvertInRangeTo (DU, VFromD< RebindToFloat< DU > > v)
 
template<class DU , HWY_IF_V_SIZE_LE_D(DU, 16) , HWY_IF_U32_D(DU) >
HWY_API VFromD< DU > hwy::HWY_NAMESPACE::ConvertTo (DU, VFromD< RebindToFloat< DU > > 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 Vec128< T, N > hwy::HWY_NAMESPACE::Round (Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_INLINE Mask128< T, N > hwy::HWY_NAMESPACE::detail::UseInt (const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Trunc (Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Ceil (const Vec128< T, N > v)
 
template<typename T , size_t N>
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Floor (const Vec128< T, N > v)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::IsNaN (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::IsNaN (const Vec128< double, N > v)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::IsEitherNaN (Vec128< float, N > a, Vec128< float, N > b)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::IsEitherNaN (Vec128< double, N > a, Vec128< double, N > b)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::IsInf (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::IsInf (const Vec128< double, N > v)
 
template<size_t N>
HWY_API Mask128< float, N > hwy::HWY_NAMESPACE::IsFinite (const Vec128< float, N > v)
 
template<size_t N>
HWY_API Mask128< double, N > hwy::HWY_NAMESPACE::IsFinite (const Vec128< double, N > v)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESRound (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESLastRound (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESInvMixColumns (Vec128< uint8_t > state)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESRoundInv (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESLastRoundInv (Vec128< uint8_t > state, Vec128< uint8_t > round_key)
 
template<uint8_t kRcon>
HWY_API Vec128< uint8_t > hwy::HWY_NAMESPACE::AESKeyGenAssist (Vec128< uint8_t > v)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::CLMulLower (Vec128< uint64_t, N > a, Vec128< uint64_t, N > b)
 
template<size_t N>
HWY_API Vec128< uint64_t, N > hwy::HWY_NAMESPACE::CLMulUpper (Vec128< uint64_t, N > a, Vec128< uint64_t, N > b)
 
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_IF_T_SIZE_D(D, 2) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Dup128MaskFromMaskBits (D d, unsigned mask_bits)
 
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_LE_D(D, 8) >
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_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<typename T >
HWY_API Vec128< T, 1 > hwy::HWY_NAMESPACE::Compress (Vec128< T, 1 > v, Mask128< T, 1 >)
 
template<size_t N, HWY_IF_V_SIZE_GT(float, N, 4) >
HWY_API Vec128< float, N > hwy::HWY_NAMESPACE::Compress (Vec128< float, N > v, Mask128< float, N > mask)
 
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 >
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)
 
HWY_API Vec128< uint64_t > hwy::HWY_NAMESPACE::CompressBlocksNot (Vec128< uint64_t > v, Mask128< uint64_t >)
 
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<size_t N>
HWY_INLINE Vec128< uint8_t, N > hwy::HWY_NAMESPACE::detail::NativeExpand (Vec128< uint8_t, N > v, Mask128< uint8_t, N > mask)
 
template<size_t N>
HWY_INLINE Vec128< uint16_t, N > hwy::HWY_NAMESPACE::detail::NativeExpand (Vec128< uint16_t, N > v, Mask128< uint16_t, N > mask)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_U8_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::NativeLoadExpand (MFromD< D > mask, D, const uint8_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_U16_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::NativeLoadExpand (MFromD< D > mask, D, const uint16_t *HWY_RESTRICT unaligned)
 
template<size_t N>
HWY_INLINE Vec128< uint32_t, N > hwy::HWY_NAMESPACE::detail::NativeExpand (Vec128< uint32_t, N > v, Mask128< uint32_t, N > mask)
 
template<size_t N>
HWY_INLINE Vec128< uint64_t, N > hwy::HWY_NAMESPACE::detail::NativeExpand (Vec128< uint64_t, N > v, Mask128< uint64_t, N > mask)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_U32_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::NativeLoadExpand (MFromD< D > mask, D, const uint32_t *HWY_RESTRICT unaligned)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_U64_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::NativeLoadExpand (MFromD< D > mask, D, const uint64_t *HWY_RESTRICT unaligned)
 
template<typename T , size_t N, HWY_IF_T_SIZE(T, 2) >
HWY_API Vec128< T, N > hwy::HWY_NAMESPACE::Expand (Vec128< T, N > v, Mask128< T, N > mask)
 
template<class D , HWY_IF_V_SIZE_LE_D(D, 16) , HWY_IF_T_SIZE_ONE_OF_D(D,(1<< 1)|(1<< 2)) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadExpand (MFromD< D > mask, D d, const TFromD< D > *HWY_RESTRICT unaligned)
 
template<class T , HWY_IF_LANES_LE(sizeof(T), 4) >
static HWY_INLINE uint32_t hwy::HWY_NAMESPACE::detail::AVX3Blsi (T x)
 
template<class T , HWY_IF_T_SIZE(T, 8) >
static HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::AVX3Blsi (T x)
 
template<class T , HWY_IF_LANES_LE(sizeof(T), 4) >
static HWY_INLINE uint32_t hwy::HWY_NAMESPACE::detail::AVX3Blsmsk (T x)
 
template<class T , HWY_IF_T_SIZE(T, 8) >
static HWY_INLINE uint64_t hwy::HWY_NAMESPACE::detail::AVX3Blsmsk (T x)
 
template<class T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask128< T, N > mask)
 
template<class T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetBeforeFirst (Mask128< T, N > mask)
 
template<class T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetAtOrBeforeFirst (Mask128< T, N > mask)
 
template<class T , size_t N>
HWY_API Mask128< T, N > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask128< T, N > mask)
 
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, 16) , HWY_IF_U16_D(D) >
HWY_API Vec128< uint16_t > hwy::HWY_NAMESPACE::MinOfLanes (D, Vec128< 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::MaxOfLanes (D d, Vec128< uint16_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::MinOfLanes (D d, 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::MinOfLanes (D d, Vec128< 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::MaxOfLanes (D d, 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::MaxOfLanes (D d, Vec128< uint8_t > v)
 
template<class D , HWY_IF_U64_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Lt128Vec (const D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Eq128Vec (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Ne128Vec (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Lt128UpperVec (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Eq128UpperVec (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_INLINE VFromD< D > hwy::HWY_NAMESPACE::detail::Ne128UpperVec (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Lt128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Eq128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Ne128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Lt128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Eq128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::Ne128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Min128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Max128 (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Min128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class D , HWY_IF_U64_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Max128Upper (D d, VFromD< D > a, VFromD< D > b)
 
template<class V , HWY_IF_UI32(TFromV< V >) , HWY_IF_V_SIZE_LE_D(DFromV< V >, 16) >
HWY_APIhwy::HWY_NAMESPACE::LeadingZeroCount (V v)
 
 HWY_AFTER_NAMESPACE ()
 

Macro Definition Documentation

◆ HWY_AVX3_HAVE_F32_TO_BF16C

#define HWY_AVX3_HAVE_F32_TO_BF16C   0

◆ HWY_COMPILER_HAS_MASK_INTRINSICS

#define HWY_COMPILER_HAS_MASK_INTRINSICS   0

◆ HWY_IF_ADDSUB_V

#define HWY_IF_ADDSUB_V ( V)
Value:
V, ((hwy::IsFloat3264<TFromV<V>>()) ? 32 : sizeof(TFromV<V>)))
HWY_API constexpr bool IsFloat3264()
Definition base.h:2122
#define HWY_IF_V_SIZE_GT_V(V, bytes)
Definition ops/shared-inl.h:636

◆ HWY_IF_MINMAX_OF_LANES_D

#define HWY_IF_MINMAX_OF_LANES_D ( D)
Value:
hwy::EnableIf<(!hwy::IsSame<TFromD<D>, uint8_t>() || \
((HWY_V_SIZE_D(D) < 8) || (HWY_V_SIZE_D(D) > 16))) && \
(!hwy::IsSame<TFromD<D>, uint16_t>() || \
(HWY_V_SIZE_D(D) != 16))>* = nullptr
HWY_API constexpr bool IsSame()
Definition base.h:499
typename EnableIfT< Condition >::type EnableIf
Definition base.h:486
#define HWY_V_SIZE_D(D)
Definition ops/shared-inl.h:603
#define HWY_IF_LANES_GT_D(D, lanes)
Definition ops/shared-inl.h:562

◆ HWY_IF_MULADDSUB_V

#define HWY_IF_MULADDSUB_V ( V)
Value:
HWY_IF_LANES_GT_D(DFromV<V>, 1), \
HWY_IF_T_SIZE_ONE_OF_V( \
V, (1 << 1) | ((hwy::IsFloat<TFromV<V>>()) \
? 0 \
: ((1 << 2) | (1 << 4) | (1 << 8))))
HWY_API constexpr bool IsFloat()
Definition base.h:2127

◆ HWY_IF_SUM_OF_LANES_D

#define HWY_IF_SUM_OF_LANES_D ( D)
Value:
(HWY_V_SIZE_D(D) != 8 && HWY_V_SIZE_D(D) != 16)>* = \
nullptr

◆ HWY_NATIVE_AES

#define HWY_NATIVE_AES

◆ HWY_NATIVE_BITWISE_IF_THEN_ELSE

#define HWY_NATIVE_BITWISE_IF_THEN_ELSE

◆ HWY_NATIVE_COMBINE_MASKS

#define HWY_NATIVE_COMBINE_MASKS

◆ HWY_NATIVE_DEMOTE_MASK_TO

#define HWY_NATIVE_DEMOTE_MASK_TO

◆ HWY_NATIVE_EXPAND

#define HWY_NATIVE_EXPAND

◆ HWY_NATIVE_F2I_CONVERT_IN_RANGE_TO

#define HWY_NATIVE_F2I_CONVERT_IN_RANGE_TO

◆ HWY_NATIVE_F32_TO_UI64_PROMOTE_IN_RANGE_TO

#define HWY_NATIVE_F32_TO_UI64_PROMOTE_IN_RANGE_TO

◆ HWY_NATIVE_F64_APPROX_RECIP

#define HWY_NATIVE_F64_APPROX_RECIP

◆ HWY_NATIVE_F64_APPROX_RSQRT

#define HWY_NATIVE_F64_APPROX_RSQRT

◆ HWY_NATIVE_F64_TO_UI32_DEMOTE_IN_RANGE_TO

#define HWY_NATIVE_F64_TO_UI32_DEMOTE_IN_RANGE_TO

◆ HWY_NATIVE_GATHER

#define HWY_NATIVE_GATHER

◆ HWY_NATIVE_I16_I16_SATWIDENMULPAIRWISEACCUM

#define HWY_NATIVE_I16_I16_SATWIDENMULPAIRWISEACCUM

◆ HWY_NATIVE_I32_SATURATED_ADDSUB

#define HWY_NATIVE_I32_SATURATED_ADDSUB

◆ HWY_NATIVE_I64_SATURATED_ADDSUB

#define HWY_NATIVE_I64_SATURATED_ADDSUB

◆ HWY_NATIVE_I8_I8_SUMOFMULQUADACCUMULATE

#define HWY_NATIVE_I8_I8_SUMOFMULQUADACCUMULATE

◆ HWY_NATIVE_INTEGER_IF_NEGATIVE_THEN_NEG

#define HWY_NATIVE_INTEGER_IF_NEGATIVE_THEN_NEG

◆ HWY_NATIVE_IS_EITHER_NAN

#define HWY_NATIVE_IS_EITHER_NAN

◆ HWY_NATIVE_IS_NEGATIVE

#define HWY_NATIVE_IS_NEGATIVE

◆ HWY_NATIVE_ISINF

#define HWY_NATIVE_ISINF

◆ HWY_NATIVE_LEADING_ZERO_COUNT

#define HWY_NATIVE_LEADING_ZERO_COUNT

◆ HWY_NATIVE_LOAD_N

#define HWY_NATIVE_LOAD_N

◆ HWY_NATIVE_LOWER_HALF_OF_MASK

#define HWY_NATIVE_LOWER_HALF_OF_MASK

◆ HWY_NATIVE_MASK_FALSE

#define HWY_NATIVE_MASK_FALSE

◆ HWY_NATIVE_MASKED_ARITH

#define HWY_NATIVE_MASKED_ARITH

◆ HWY_NATIVE_ORDERED_DEMOTE_2_MASKS_TO

#define HWY_NATIVE_ORDERED_DEMOTE_2_MASKS_TO

◆ HWY_NATIVE_PER4LANEBLKSHUF_DUP32

#define HWY_NATIVE_PER4LANEBLKSHUF_DUP32

◆ HWY_NATIVE_POPCNT

#define HWY_NATIVE_POPCNT

◆ HWY_NATIVE_PROMOTE_MASK_TO

#define HWY_NATIVE_PROMOTE_MASK_TO

◆ HWY_NATIVE_ROL_ROR_32_64

#define HWY_NATIVE_ROL_ROR_32_64

◆ HWY_NATIVE_ROL_ROR_SAME_32_64

#define HWY_NATIVE_ROL_ROR_SAME_32_64

◆ HWY_NATIVE_SATURATED_ABS

#define HWY_NATIVE_SATURATED_ABS

◆ HWY_NATIVE_SCATTER

#define HWY_NATIVE_SCATTER

◆ HWY_NATIVE_SLIDE_MASK

#define HWY_NATIVE_SLIDE_MASK

◆ HWY_NATIVE_STORE_N

#define HWY_NATIVE_STORE_N

◆ HWY_NATIVE_SUMS_OF_8_ABS_DIFF

#define HWY_NATIVE_SUMS_OF_8_ABS_DIFF

◆ HWY_NATIVE_SUMS_OF_ADJ_QUAD_ABS_DIFF

#define HWY_NATIVE_SUMS_OF_ADJ_QUAD_ABS_DIFF

◆ HWY_NATIVE_SUMS_OF_SHUFFLED_QUAD_ABS_DIFF

#define HWY_NATIVE_SUMS_OF_SHUFFLED_QUAD_ABS_DIFF

◆ HWY_NATIVE_U8_I8_SATWIDENMULPAIRWISEADD

#define HWY_NATIVE_U8_I8_SATWIDENMULPAIRWISEADD

◆ HWY_NATIVE_U8_I8_SUMOFMULQUADACCUMULATE

#define HWY_NATIVE_U8_I8_SUMOFMULQUADACCUMULATE

◆ HWY_NATIVE_U8_U8_SUMOFMULQUADACCUMULATE

#define HWY_NATIVE_U8_U8_SUMOFMULQUADACCUMULATE

◆ HWY_NATIVE_UPPER_HALF_OF_MASK

#define HWY_NATIVE_UPPER_HALF_OF_MASK

◆ HWY_SAFE_PARTIAL_LOAD_STORE

#define HWY_SAFE_PARTIAL_LOAD_STORE   0

◆ HWY_X86_FPCLASS_NEG

#define HWY_X86_FPCLASS_NEG   0x40

◆ HWY_X86_FPCLASS_NEG0

#define HWY_X86_FPCLASS_NEG0   0x04

◆ HWY_X86_FPCLASS_NEG_INF

#define HWY_X86_FPCLASS_NEG_INF   0x10

◆ HWY_X86_FPCLASS_POS0

#define HWY_X86_FPCLASS_POS0   0x02

◆ HWY_X86_FPCLASS_POS_INF

#define HWY_X86_FPCLASS_POS_INF   0x08

◆ HWY_X86_FPCLASS_QNAN

#define HWY_X86_FPCLASS_QNAN   0x01

◆ HWY_X86_FPCLASS_SNAN

#define HWY_X86_FPCLASS_SNAN   0x80

◆ HWY_X86_FPCLASS_SUBNORMAL

#define HWY_X86_FPCLASS_SUBNORMAL   0x20

◆ HWY_X86_IF_EMULATED_D

#define HWY_X86_IF_EMULATED_D ( D)    HWY_IF_SPECIAL_FLOAT_D(D)

Function Documentation

◆ HWY_AFTER_NAMESPACE()

HWY_AFTER_NAMESPACE ( )

◆ HWY_BEFORE_NAMESPACE()

HWY_BEFORE_NAMESPACE ( )

References HWY_NAMESPACE.