Grok 12.0.1
Classes | Namespaces | Macros | Typedefs | Functions
scalar-inl.h File Reference
#include <stdint.h>
#include <math.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::Vec1< T >
 
class  hwy::HWY_NAMESPACE::Mask1< T >
 
struct  hwy::HWY_NAMESPACE::Indices1< T >
 
struct  hwy::HWY_NAMESPACE::CompressIsPartition< T >
 

Namespaces

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

Macros

#define HWY_NATIVE_POPCNT
 
#define HWY_NATIVE_LOWER_HALF_OF_MASK
 
#define HWY_NATIVE_MUL_8
 
#define HWY_NATIVE_MUL_64
 
#define HWY_NATIVE_ISINF
 
#define HWY_NATIVE_LOAD_N
 
#define HWY_NATIVE_STORE_N
 
#define HWY_NATIVE_LOAD_STORE_INTERLEAVED
 
#define HWY_NATIVE_SCATTER
 
#define HWY_NATIVE_GATHER
 
#define HWY_NATIVE_PROMOTE_F16_TO_F64
 
#define HWY_NATIVE_F32_TO_UI64_PROMOTE_IN_RANGE_TO
 
#define HWY_IF_U2I_DEMOTE_FROM_LANE_SIZE_V(V)    hwy::EnableIf<!hwy::IsSame<V, V>()>* = nullptr
 
#define HWY_NATIVE_F64_TO_UI32_DEMOTE_IN_RANGE_TO
 
#define HWY_NATIVE_F16C
 
#define HWY_NATIVE_DEMOTE_F32_TO_BF16
 
#define HWY_NATIVE_F2I_CONVERT_IN_RANGE_TO
 
#define HWY_NATIVE_REVERSE2_8
 
#define HWY_NATIVE_REVERSE_LANE_BYTES
 
#define HWY_NATIVE_REVERSE_BITS_UI8
 
#define HWY_NATIVE_REVERSE_BITS_UI16_32_64
 
#define HWY_NATIVE_EXPAND
 
#define HWY_NATIVE_I16_SATWIDENMULACCUMFIXEDPOINT
 
#define HWY_NATIVE_U8_I8_SATWIDENMULPAIRWISEADD
 

Typedefs

template<typename T >
using hwy::HWY_NAMESPACE::Sisd = Simd<T, 1, 0>
 

Functions

 HWY_BEFORE_NAMESPACE ()
 
template<class DTo , typename TTo = TFromD<DTo>, typename TFrom >
HWY_API Vec1< TTo > hwy::HWY_NAMESPACE::BitCast (DTo, Vec1< TFrom > v)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Zero (D)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>, typename T2 >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Set (D, const T2 t)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Undefined (D d)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>, typename T2 >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Iota (const D, const T2 first)
 
template<class D , class FromV >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::ResizeBitCast (D d, FromV v)
 
template<class FromSizeTag , class ToSizeTag , class DTo , class DFrom >
HWY_INLINE VFromD< DTo > hwy::HWY_NAMESPACE::detail::ZeroExtendResizeBitCast (FromSizeTag, ToSizeTag, DTo d_to, DFrom, VFromD< DFrom > v)
 
template<class D , HWY_IF_T_SIZE_D(D, 1) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D > t4, TFromD< D > t5, TFromD< D > t6, TFromD< D > t7, TFromD< D > t8, TFromD< D > t9, TFromD< D > t10, TFromD< D > t11, TFromD< D > t12, TFromD< D > t13, TFromD< D > t14, TFromD< D > t15)
 
template<class D , HWY_IF_BF16_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D d, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3, TFromD< D > t4, TFromD< D > t5, TFromD< D > t6, TFromD< D > t7)
 
template<class D , HWY_IF_T_SIZE_D(D, 4) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D, TFromD< D > t0, TFromD< D > t1, TFromD< D > t2, TFromD< D > t3)
 
template<class D , HWY_IF_T_SIZE_D(D, 8) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::Dup128VecFromValues (D, TFromD< D > t0, TFromD< D > t1)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Not (const Vec1< T > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::And (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator& (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::AndNot (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Or (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator| (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Xor (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator^ (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Xor3 (Vec1< T > x1, Vec1< T > x2, Vec1< T > x3)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Or3 (Vec1< T > o1, Vec1< T > o2, Vec1< T > o3)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::OrAnd (const Vec1< T > o, const Vec1< T > a1, const Vec1< T > a2)
 
template<class DTo , typename TTo = TFromD<DTo>, typename TFrom >
HWY_API Mask1< TTo > hwy::HWY_NAMESPACE::RebindMask (DTo, Mask1< TFrom > m)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::MaskFromVec (const Vec1< T > v)
 
template<typename T >
Vec1< T > hwy::HWY_NAMESPACE::VecFromMask (const Mask1< T > mask)
 
template<class D , typename T = TFromD<D>>
Vec1< T > hwy::HWY_NAMESPACE::VecFromMask (D, const Mask1< T > mask)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>>
HWY_API Mask1< T > hwy::HWY_NAMESPACE::FirstN (D, size_t n)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::IfVecThenElse (Vec1< T > mask, Vec1< T > yes, Vec1< T > no)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::CopySign (const Vec1< T > magn, const Vec1< T > sign)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::CopySignToAbs (const Vec1< T > abs, const Vec1< T > sign)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::BroadcastSignBit (const Vec1< T > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::PopulationCount (Vec1< T > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::IfThenElse (const Mask1< T > mask, const Vec1< T > yes, const Vec1< T > no)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::IfThenElseZero (const Mask1< T > mask, const Vec1< T > yes)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::IfThenZeroElse (const Mask1< T > mask, const Vec1< T > no)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::IfNegativeThenElse (Vec1< T > v, Vec1< T > yes, Vec1< T > no)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::Not (const Mask1< T > m)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::And (const Mask1< T > a, Mask1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::AndNot (const Mask1< T > a, Mask1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::Or (const Mask1< T > a, Mask1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::Xor (const Mask1< T > a, Mask1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::ExclusiveNeither (const Mask1< T > a, Mask1< T > b)
 
template<class T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::SetAtOrAfterFirst (Mask1< T > mask)
 
template<class T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::SetBeforeFirst (Mask1< T > mask)
 
template<class T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::SetOnlyFirst (Mask1< T > mask)
 
template<class T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::SetAtOrBeforeFirst (Mask1< T >)
 
template<class D >
HWY_API MFromD< D > hwy::HWY_NAMESPACE::LowerHalfOfMask (D, MFromD< D > m)
 
template<int kBits, typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::ShiftLeft (const Vec1< T > v)
 
template<int kBits, typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::ShiftRight (const Vec1< T > v)
 
template<int kBits, typename T , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::RotateRight (const Vec1< T > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::ShiftLeftSame (const Vec1< T > v, int bits)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::ShiftRightSame (const Vec1< T > v, int bits)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator<< (const Vec1< T > v, const Vec1< T > bits)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator>> (const Vec1< T > v, const Vec1< T > bits)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator+ (Vec1< T > a, Vec1< T > b)
 
HWY_API Vec1< float > hwy::HWY_NAMESPACE::operator+ (const Vec1< float > a, const Vec1< float > b)
 
HWY_API Vec1< double > hwy::HWY_NAMESPACE::operator+ (const Vec1< double > a, const Vec1< double > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator- (Vec1< T > a, Vec1< T > b)
 
HWY_API Vec1< float > hwy::HWY_NAMESPACE::operator- (const Vec1< float > a, const Vec1< float > b)
 
HWY_API Vec1< double > hwy::HWY_NAMESPACE::operator- (const Vec1< double > a, const Vec1< double > b)
 
HWY_API Vec1< int64_t > hwy::HWY_NAMESPACE::SumsOf8 (const Vec1< int8_t > v)
 
HWY_API Vec1< uint64_t > hwy::HWY_NAMESPACE::SumsOf8 (const Vec1< uint8_t > v)
 
template<class T >
HWY_API Vec1< MakeWide< T > > hwy::HWY_NAMESPACE::SumsOf2 (const Vec1< T > v)
 
HWY_API Vec1< uint8_t > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec1< uint8_t > a, const Vec1< uint8_t > b)
 
HWY_API Vec1< uint16_t > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec1< uint16_t > a, const Vec1< uint16_t > b)
 
HWY_API Vec1< int8_t > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec1< int8_t > a, const Vec1< int8_t > b)
 
HWY_API Vec1< int16_t > hwy::HWY_NAMESPACE::SaturatedAdd (const Vec1< int16_t > a, const Vec1< int16_t > b)
 
HWY_API Vec1< uint8_t > hwy::HWY_NAMESPACE::SaturatedSub (const Vec1< uint8_t > a, const Vec1< uint8_t > b)
 
HWY_API Vec1< uint16_t > hwy::HWY_NAMESPACE::SaturatedSub (const Vec1< uint16_t > a, const Vec1< uint16_t > b)
 
HWY_API Vec1< int8_t > hwy::HWY_NAMESPACE::SaturatedSub (const Vec1< int8_t > a, const Vec1< int8_t > b)
 
HWY_API Vec1< int16_t > hwy::HWY_NAMESPACE::SaturatedSub (const Vec1< int16_t > a, const Vec1< int16_t > b)
 
HWY_API Vec1< uint8_t > hwy::HWY_NAMESPACE::AverageRound (const Vec1< uint8_t > a, const Vec1< uint8_t > b)
 
HWY_API Vec1< uint16_t > hwy::HWY_NAMESPACE::AverageRound (const Vec1< uint16_t > a, const Vec1< uint16_t > b)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Abs (const Vec1< T > a)
 
template<typename T , HWY_IF_NOT_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Min (const Vec1< T > a, const Vec1< T > b)
 
template<typename T , HWY_IF_NOT_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Max (const Vec1< T > a, const Vec1< T > b)
 
template<typename T , HWY_IF_FLOAT_OR_SPECIAL(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Neg (const Vec1< T > v)
 
template<typename T , HWY_IF_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator* (const Vec1< T > a, const Vec1< T > b)
 
template<class T , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::operator/ (Vec1< T > a, Vec1< T > b)
 
template<class T , HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MulHigh (const Vec1< T > a, const Vec1< T > b)
 
template<class T , HWY_IF_UI64(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MulHigh (const Vec1< T > a, const Vec1< T > b)
 
HWY_API Vec1< int16_t > hwy::HWY_NAMESPACE::MulFixedPoint15 (Vec1< int16_t > a, Vec1< int16_t > b)
 
template<class T , HWY_IF_T_SIZE_ONE_OF(T,(1<< 1)|(1<< 2)|(1<< 4)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(T) >
HWY_API Vec1< MakeWide< T > > hwy::HWY_NAMESPACE::MulEven (const Vec1< T > a, const Vec1< T > b)
 
HWY_API Vec1< float > hwy::HWY_NAMESPACE::ApproximateReciprocal (const Vec1< float > v)
 
template<typename T , HWY_IF_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::AbsDiff (const Vec1< T > a, const Vec1< T > b)
 
template<typename T , HWY_IF_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MulAdd (const Vec1< T > mul, const Vec1< T > x, const Vec1< T > add)
 
template<typename T , HWY_IF_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::NegMulAdd (const Vec1< T > mul, const Vec1< T > x, const Vec1< T > add)
 
template<typename T , HWY_IF_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MulSub (const Vec1< T > mul, const Vec1< T > x, const Vec1< T > sub)
 
template<typename T , HWY_IF_FLOAT(T) >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::NegMulSub (const Vec1< T > mul, const Vec1< T > x, const Vec1< T > sub)
 
HWY_API Vec1< float > hwy::HWY_NAMESPACE::ApproximateReciprocalSqrt (const Vec1< float > v)
 
HWY_API Vec1< float > hwy::HWY_NAMESPACE::Sqrt (Vec1< float > v)
 
HWY_API Vec1< double > hwy::HWY_NAMESPACE::Sqrt (Vec1< double > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Round (const Vec1< T > v)
 
HWY_API Vec1< int32_t > hwy::HWY_NAMESPACE::NearestInt (const Vec1< float > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Trunc (const Vec1< T > v)
 
template<typename Float , typename Bits , int kMantissaBits, int kExponentBits, class V >
hwy::HWY_NAMESPACE::Ceiling (const V v)
 
template<typename Float , typename Bits , int kMantissaBits, int kExponentBits, class V >
hwy::HWY_NAMESPACE::Floor (const V v)
 
HWY_API Vec1< float > hwy::HWY_NAMESPACE::Ceil (const Vec1< float > v)
 
HWY_API Vec1< double > hwy::HWY_NAMESPACE::Ceil (const Vec1< double > v)
 
HWY_API Vec1< float > hwy::HWY_NAMESPACE::Floor (const Vec1< float > v)
 
HWY_API Vec1< double > hwy::HWY_NAMESPACE::Floor (const Vec1< double > v)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::operator== (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::operator!= (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::TestBit (const Vec1< T > v, const Vec1< T > bit)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::operator< (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::operator> (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::operator<= (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::operator>= (const Vec1< T > a, const Vec1< T > b)
 
template<typename T >
HWY_API Mask1< T > hwy::HWY_NAMESPACE::IsNaN (const Vec1< T > v)
 
HWY_API Mask1< float > hwy::HWY_NAMESPACE::IsInf (const Vec1< float > v)
 
HWY_API Mask1< double > hwy::HWY_NAMESPACE::IsInf (const Vec1< double > v)
 
HWY_API Mask1< float > hwy::HWY_NAMESPACE::IsFinite (const Vec1< float > v)
 
HWY_API Mask1< double > hwy::HWY_NAMESPACE::IsFinite (const Vec1< double > v)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Load (D, const T *HWY_RESTRICT aligned)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MaskedLoad (Mask1< T > m, D d, const T *HWY_RESTRICT aligned)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MaskedLoadOr (Vec1< T > v, Mask1< T > m, D d, const T *HWY_RESTRICT aligned)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::LoadU (D d, const T *HWY_RESTRICT p)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::LoadDup128 (D d, const T *HWY_RESTRICT aligned)
 
template<class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadN (D d, const T *HWY_RESTRICT p, size_t max_lanes_to_load)
 
template<class D , typename T = TFromD<D>>
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadNOr (VFromD< D > no, D d, const T *HWY_RESTRICT p, size_t max_lanes_to_load)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::Store (const Vec1< T > v, D, T *HWY_RESTRICT aligned)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreU (const Vec1< T > v, D d, T *HWY_RESTRICT p)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::BlendedStore (const Vec1< T > v, Mask1< T > m, D d, T *HWY_RESTRICT p)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreN (VFromD< D > v, D d, T *HWY_RESTRICT p, size_t max_lanes_to_store)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved2 (D d, const T *HWY_RESTRICT unaligned, Vec1< T > &v0, Vec1< T > &v1)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved3 (D d, const T *HWY_RESTRICT unaligned, Vec1< T > &v0, Vec1< T > &v1, Vec1< T > &v2)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::LoadInterleaved4 (D d, const T *HWY_RESTRICT unaligned, Vec1< T > &v0, Vec1< T > &v1, Vec1< T > &v2, Vec1< T > &v3)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved2 (const Vec1< T > v0, const Vec1< T > v1, D d, T *HWY_RESTRICT unaligned)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved3 (const Vec1< T > v0, const Vec1< T > v1, const Vec1< T > v2, D d, T *HWY_RESTRICT unaligned)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::StoreInterleaved4 (const Vec1< T > v0, const Vec1< T > v1, const Vec1< T > v2, const Vec1< T > v3, D d, T *HWY_RESTRICT unaligned)
 
template<class D , typename T = TFromD<D>>
HWY_API void hwy::HWY_NAMESPACE::Stream (const Vec1< T > v, D d, T *HWY_RESTRICT aligned)
 
template<class D , typename T = TFromD<D>, typename TI >
HWY_API void hwy::HWY_NAMESPACE::ScatterOffset (Vec1< T > v, D d, T *base, Vec1< TI > offset)
 
template<class D , typename T = TFromD<D>, typename TI >
HWY_API void hwy::HWY_NAMESPACE::ScatterIndex (Vec1< T > v, D d, T *HWY_RESTRICT base, Vec1< TI > index)
 
template<class D , typename T = TFromD<D>, typename TI >
HWY_API void hwy::HWY_NAMESPACE::MaskedScatterIndex (Vec1< T > v, Mask1< T > m, D d, T *HWY_RESTRICT base, Vec1< TI > index)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::GatherOffset (D d, const T *base, Vec1< MakeSigned< T > > offset)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::GatherIndex (D d, const T *HWY_RESTRICT base, Vec1< MakeSigned< T > > index)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MaskedGatherIndex (Mask1< T > m, D d, const T *HWY_RESTRICT base, Vec1< MakeSigned< T > > index)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::MaskedGatherIndexOr (Vec1< T > no, Mask1< T > m, D d, const T *HWY_RESTRICT base, Vec1< MakeSigned< T > > index)
 
template<class ToT , class FromT >
HWY_INLINE ToT hwy::HWY_NAMESPACE::detail::CastValueForF2IConv (FromT val)
 
template<class ToT , class ToTypeTag , class FromT >
HWY_INLINE ToT hwy::HWY_NAMESPACE::detail::CastValueForPromoteTo (ToTypeTag, FromT val)
 
template<class ToT >
HWY_INLINE ToT hwy::HWY_NAMESPACE::detail::CastValueForPromoteTo (hwy::SignedTag, float val)
 
template<class ToT >
HWY_INLINE ToT hwy::HWY_NAMESPACE::detail::CastValueForPromoteTo (hwy::UnsignedTag, float val)
 
template<class ToT , class FromT >
HWY_INLINE ToT hwy::HWY_NAMESPACE::detail::CastValueForInRangeF2IConv (FromT val)
 
template<class DTo , typename TTo = TFromD<DTo>, typename TFrom >
HWY_API Vec1< TTo > hwy::HWY_NAMESPACE::PromoteTo (DTo, Vec1< TFrom > from)
 
template<class DTo , HWY_IF_UI64_D(DTo) >
HWY_API VFromD< DTo > hwy::HWY_NAMESPACE::PromoteInRangeTo (DTo, Vec1< float > from)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API Vec1< float > hwy::HWY_NAMESPACE::DemoteTo (D, Vec1< double > from)
 
template<class D , HWY_IF_UI32_D(D) >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::DemoteTo (D, Vec1< double > from)
 
template<class DTo , typename TTo = TFromD<DTo>, typename TFrom , HWY_IF_SIGNED(TFrom) , HWY_IF_NOT_FLOAT_NOR_SPECIAL(TFromD< DTo >) >
HWY_API Vec1< TTo > hwy::HWY_NAMESPACE::DemoteTo (DTo, Vec1< TFrom > from)
 
template<class D32 , HWY_IF_UI32_D(D32) >
HWY_API VFromD< D32 > hwy::HWY_NAMESPACE::DemoteInRangeTo (D32 d32, VFromD< Rebind< double, D32 > > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API Vec1< float > hwy::HWY_NAMESPACE::PromoteTo (D, const Vec1< float16_t > v)
 
template<class D , HWY_IF_F32_D(D) >
HWY_API Vec1< float > hwy::HWY_NAMESPACE::PromoteTo (D d, const Vec1< bfloat16_t > v)
 
template<class DTo , typename TFrom >
HWY_API VFromD< DTo > hwy::HWY_NAMESPACE::PromoteEvenTo (DTo d_to, Vec1< TFrom > v)
 
template<class D , HWY_IF_F16_D(D) >
HWY_API Vec1< float16_thwy::HWY_NAMESPACE::DemoteTo (D, const Vec1< float > v)
 
template<class D , HWY_IF_BF16_D(D) >
HWY_API Vec1< bfloat16_thwy::HWY_NAMESPACE::DemoteTo (D d, const Vec1< float > v)
 
template<class DTo , typename TTo = TFromD<DTo>, typename TFrom , HWY_IF_FLOAT(TFrom) >
HWY_API Vec1< TTo > hwy::HWY_NAMESPACE::ConvertTo (DTo, Vec1< TFrom > from)
 
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)
 
HWY_API Vec1< uint8_t > hwy::HWY_NAMESPACE::U8FromU32 (const Vec1< uint32_t > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec1< uint8_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec1< uint64_t > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec1< uint16_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec1< uint64_t > v)
 
template<class D , HWY_IF_U32_D(D) >
HWY_API Vec1< uint32_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec1< uint64_t > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec1< uint8_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec1< uint32_t > v)
 
template<class D , HWY_IF_U16_D(D) >
HWY_API Vec1< uint16_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec1< uint32_t > v)
 
template<class D , HWY_IF_U8_D(D) >
HWY_API Vec1< uint8_t > hwy::HWY_NAMESPACE::TruncateTo (D, Vec1< uint16_t > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::LowerHalf (Vec1< T > v)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::LowerHalf (D, Vec1< T > v)
 
template<typename T >
HWY_APIhwy::HWY_NAMESPACE::GetLane (const Vec1< T > v)
 
template<typename T >
HWY_APIhwy::HWY_NAMESPACE::ExtractLane (const Vec1< T > v, size_t i)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::InsertLane (Vec1< T > v, size_t i, T t)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::DupEven (Vec1< T > v)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::OddEven (Vec1< T >, Vec1< T > even)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::OddEvenBlocks (Vec1< T >, Vec1< T > even)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::SwapAdjacentBlocks (Vec1< T > v)
 
template<class D , typename T = TFromD<D>, typename TI >
HWY_API Indices1< T > hwy::HWY_NAMESPACE::IndicesFromVec (D, Vec1< TI > vec)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>, typename TI >
HWY_API Indices1< T > hwy::HWY_NAMESPACE::SetTableIndices (D d, const TI *idx)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::TableLookupLanes (const Vec1< T > v, const Indices1< T >)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::TwoTablesLookupLanes (const Vec1< T > a, const Vec1< T > b, const Indices1< T > idx)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::ReverseBlocks (D, const Vec1< T > v)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Reverse (D, const Vec1< T > v)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Reverse2 (D, const Vec1< T > v)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Reverse4 (D, const Vec1< T > v)
 
template<class D , typename T = TFromD<D>>
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Reverse8 (D, const Vec1< T > v)
 
HWY_API Vec1< uint16_t > hwy::HWY_NAMESPACE::ReverseLaneBytes (Vec1< uint16_t > v)
 
HWY_API Vec1< uint32_t > hwy::HWY_NAMESPACE::ReverseLaneBytes (Vec1< uint32_t > v)
 
HWY_API Vec1< uint64_t > hwy::HWY_NAMESPACE::ReverseLaneBytes (Vec1< uint64_t > v)
 
template<class V , HWY_IF_SIGNED_V(V) , HWY_IF_T_SIZE_ONE_OF_V(V,(1<< 2)|(1<< 4)|(1<< 8)) >
HWY_APIhwy::HWY_NAMESPACE::ReverseLaneBytes (V v)
 
template<class T >
HWY_INLINEhwy::HWY_NAMESPACE::detail::ReverseBitsOfEachByte (T val)
 
template<class V , HWY_IF_T_SIZE_ONE_OF_V(V,(1<< 2)|(1<< 4)|(1<< 8)) , HWY_IF_NOT_FLOAT_NOR_SPECIAL_V(V) >
HWY_APIhwy::HWY_NAMESPACE::ReverseBits (V v)
 
template<class V , HWY_IF_T_SIZE_V(V, 1) >
HWY_APIhwy::HWY_NAMESPACE::ReverseBits (V v)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideUpLanes (D d, VFromD< D > v, size_t amt)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::SlideDownLanes (D d, VFromD< D > v, size_t amt)
 
template<int kLane, typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Broadcast (const Vec1< T > v)
 
template<typename T , typename TI >
HWY_API Vec1< TI > hwy::HWY_NAMESPACE::TableLookupBytes (const Vec1< T > in, const Vec1< TI > indices)
 
template<typename T , typename TI >
HWY_API Vec1< TI > hwy::HWY_NAMESPACE::TableLookupBytesOr0 (const Vec1< T > in, const Vec1< TI > indices)
 
HWY_API Vec1< uint16_t > hwy::HWY_NAMESPACE::ZipLower (Vec1< uint8_t > a, Vec1< uint8_t > b)
 
HWY_API Vec1< uint32_t > hwy::HWY_NAMESPACE::ZipLower (Vec1< uint16_t > a, Vec1< uint16_t > b)
 
HWY_API Vec1< uint64_t > hwy::HWY_NAMESPACE::ZipLower (Vec1< uint32_t > a, Vec1< uint32_t > b)
 
HWY_API Vec1< int16_t > hwy::HWY_NAMESPACE::ZipLower (Vec1< int8_t > a, Vec1< int8_t > b)
 
HWY_API Vec1< int32_t > hwy::HWY_NAMESPACE::ZipLower (Vec1< int16_t > a, Vec1< int16_t > b)
 
HWY_API Vec1< int64_t > hwy::HWY_NAMESPACE::ZipLower (Vec1< int32_t > a, Vec1< int32_t > b)
 
template<class DW , typename TW = TFromD<DW>, typename TN = MakeNarrow<TW>>
HWY_API Vec1< TW > hwy::HWY_NAMESPACE::ZipLower (DW, Vec1< TN > a, Vec1< TN > b)
 
template<class D , typename T = TFromD<D>>
HWY_API bool hwy::HWY_NAMESPACE::AllFalse (D, const Mask1< T > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API bool hwy::HWY_NAMESPACE::AllTrue (D, const Mask1< T > mask)
 
template<class D , HWY_IF_LANES_D(D, 1) , typename T = TFromD<D>>
HWY_API Mask1< T > hwy::HWY_NAMESPACE::LoadMaskBits (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 , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::StoreMaskBits (D d, const Mask1< T > mask, uint8_t *bits)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::CountTrue (D, const Mask1< T > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API intptr_t hwy::HWY_NAMESPACE::FindFirstTrue (D, const Mask1< T > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::FindKnownFirstTrue (D, const Mask1< T >)
 
template<class D , typename T = TFromD<D>>
HWY_API intptr_t hwy::HWY_NAMESPACE::FindLastTrue (D, const Mask1< T > mask)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::FindKnownLastTrue (D, const Mask1< T >)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Compress (Vec1< T > v, const Mask1< T >)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::CompressNot (Vec1< T > v, const Mask1< T >)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::CompressStore (Vec1< T > v, const Mask1< T > mask, D d, T *HWY_RESTRICT unaligned)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::CompressBlendedStore (Vec1< T > v, const Mask1< T > mask, D d, T *HWY_RESTRICT unaligned)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::CompressBits (Vec1< T > v, const uint8_t *HWY_RESTRICT)
 
template<class D , typename T = TFromD<D>>
HWY_API size_t hwy::HWY_NAMESPACE::CompressBitsStore (Vec1< T > v, const uint8_t *HWY_RESTRICT bits, D d, T *HWY_RESTRICT unaligned)
 
template<typename T >
HWY_API Vec1< T > hwy::HWY_NAMESPACE::Expand (Vec1< T > v, const Mask1< T > mask)
 
template<class D >
HWY_API VFromD< D > hwy::HWY_NAMESPACE::LoadExpand (MFromD< D > mask, D d, const TFromD< D > *HWY_RESTRICT unaligned)
 
template<class D32 , HWY_IF_F32_D(D32) >
HWY_API Vec1< float > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D32, Vec1< bfloat16_t > a, Vec1< bfloat16_t > b)
 
template<class D32 , HWY_IF_I32_D(D32) >
HWY_API Vec1< int32_t > hwy::HWY_NAMESPACE::WidenMulPairwiseAdd (D32, Vec1< int16_t > a, Vec1< int16_t > b)
 
template<class DI32 , HWY_IF_I32_D(DI32) >
HWY_API VFromD< DI32 > hwy::HWY_NAMESPACE::SatWidenMulAccumFixedPoint (DI32, VFromD< Rebind< int16_t, DI32 > > a, VFromD< Rebind< int16_t, DI32 > > b, VFromD< DI32 > sum)
 
template<class DI16 , HWY_IF_I16_D(DI16) >
HWY_API Vec1< int16_t > hwy::HWY_NAMESPACE::SatWidenMulPairwiseAdd (DI16, Vec1< uint8_t > a, Vec1< int8_t > b)
 
template<class D32 , HWY_IF_F32_D(D32) >
HWY_API Vec1< float > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D32, Vec1< bfloat16_t > a, Vec1< bfloat16_t > b, const Vec1< float > sum0, Vec1< float > &)
 
template<class D32 , HWY_IF_I32_D(D32) >
HWY_API Vec1< int32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (D32, Vec1< int16_t > a, Vec1< int16_t > b, const Vec1< int32_t > sum0, Vec1< int32_t > &)
 
template<class DU32 , HWY_IF_U32_D(DU32) >
HWY_API Vec1< uint32_t > hwy::HWY_NAMESPACE::ReorderWidenMulAccumulate (DU32, Vec1< uint16_t > a, Vec1< uint16_t > b, const Vec1< uint32_t > sum0, Vec1< uint32_t > &)
 
template<typename TW >
HWY_API Vec1< TW > hwy::HWY_NAMESPACE::RearrangeToOddPlusEven (Vec1< TW > sum0, Vec1< TW >)
 
 HWY_AFTER_NAMESPACE ()
 

Macro Definition Documentation

◆ HWY_IF_U2I_DEMOTE_FROM_LANE_SIZE_V

#define HWY_IF_U2I_DEMOTE_FROM_LANE_SIZE_V ( V)     hwy::EnableIf<!hwy::IsSame<V, V>()>* = nullptr

◆ HWY_NATIVE_DEMOTE_F32_TO_BF16

#define HWY_NATIVE_DEMOTE_F32_TO_BF16

◆ HWY_NATIVE_EXPAND

#define HWY_NATIVE_EXPAND

◆ HWY_NATIVE_F16C

#define HWY_NATIVE_F16C

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

#define HWY_NATIVE_I16_SATWIDENMULACCUMFIXEDPOINT

◆ HWY_NATIVE_ISINF

#define HWY_NATIVE_ISINF

◆ HWY_NATIVE_LOAD_N

#define HWY_NATIVE_LOAD_N

◆ HWY_NATIVE_LOAD_STORE_INTERLEAVED

#define HWY_NATIVE_LOAD_STORE_INTERLEAVED

◆ HWY_NATIVE_LOWER_HALF_OF_MASK

#define HWY_NATIVE_LOWER_HALF_OF_MASK

◆ HWY_NATIVE_MUL_64

#define HWY_NATIVE_MUL_64

◆ HWY_NATIVE_MUL_8

#define HWY_NATIVE_MUL_8

◆ HWY_NATIVE_POPCNT

#define HWY_NATIVE_POPCNT

◆ HWY_NATIVE_PROMOTE_F16_TO_F64

#define HWY_NATIVE_PROMOTE_F16_TO_F64

◆ HWY_NATIVE_REVERSE2_8

#define HWY_NATIVE_REVERSE2_8

◆ HWY_NATIVE_REVERSE_BITS_UI16_32_64

#define HWY_NATIVE_REVERSE_BITS_UI16_32_64

◆ HWY_NATIVE_REVERSE_BITS_UI8

#define HWY_NATIVE_REVERSE_BITS_UI8

◆ HWY_NATIVE_REVERSE_LANE_BYTES

#define HWY_NATIVE_REVERSE_LANE_BYTES

◆ HWY_NATIVE_SCATTER

#define HWY_NATIVE_SCATTER

◆ HWY_NATIVE_STORE_N

#define HWY_NATIVE_STORE_N

◆ HWY_NATIVE_U8_I8_SATWIDENMULPAIRWISEADD

#define HWY_NATIVE_U8_I8_SATWIDENMULPAIRWISEADD

Function Documentation

◆ HWY_AFTER_NAMESPACE()

HWY_AFTER_NAMESPACE ( )

◆ HWY_BEFORE_NAMESPACE()

HWY_BEFORE_NAMESPACE ( )