shared-inl.h File Reference
`#include <math.h>`
`#include "hwy/base.h"`
`#include "hwy/ops/set_macros-inl.h"`

Go to the source code of this file.

## Classes

struct | hwy::HWY_NAMESPACE::Simd< Lane, N, kPow2 >
struct | hwy::HWY_NAMESPACE::detail::ScalableTagChecker< T, kPow2 >
struct | hwy::HWY_NAMESPACE::detail::CappedTagChecker< T, kLimit >
struct | hwy::HWY_NAMESPACE::detail::FixedTagChecker< T, kNumLanes >

## Namespaces

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

## Macros

#define | HWY_IF_UNSIGNED_D(D) HWY_IF_UNSIGNED(TFromD<D>)
#define | HWY_IF_SIGNED_D(D) HWY_IF_SIGNED(TFromD<D>)
#define | HWY_IF_FLOAT_D(D) HWY_IF_FLOAT(TFromD<D>)
#define | HWY_IF_NOT_FLOAT_D(D) HWY_IF_NOT_FLOAT(TFromD<D>)
#define | HWY_IF_LANE_SIZE_D(D, bytes) HWY_IF_LANE_SIZE(TFromD<D>, bytes)
#define | HWY_IF_NOT_LANE_SIZE_D(D, bytes) HWY_IF_NOT_LANE_SIZE(TFromD<D>, bytes)
#define | HWY_IF_LANE_SIZE_ONE_OF_D(D, bit_array) HWY_IF_LANE_SIZE_ONE_OF(TFromD<D>, bit_array)
#define | HWY_IF_LT128_D(D) hwy::EnableIf<D::kPrivateN * sizeof(TFromD<D>) < 16>* = nullptr
#define | HWY_IF_GE128_D(D) hwy::EnableIf<D::kPrivateN * sizeof(TFromD<D>) >= 16>* = nullptr
#define | HWY_IF_UNSIGNED_V(V) HWY_IF_UNSIGNED(TFromV<V>)
#define | HWY_IF_SIGNED_V(V) HWY_IF_SIGNED(TFromV<V>)
#define | HWY_IF_FLOAT_V(V) HWY_IF_FLOAT(TFromV<V>)
#define | HWY_IF_LANE_SIZE_V(V, bytes) HWY_IF_LANE_SIZE(TFromV<V>, bytes)
#define | HWY_IF_NOT_LANE_SIZE_V(V, bytes) HWY_IF_NOT_LANE_SIZE(TFromV<V>, bytes)
#define | HWY_IF_LANE_SIZE_ONE_OF_V(V, bit_array) HWY_IF_LANE_SIZE_ONE_OF(TFromV<V>, bit_array)
#define | HWY_IF_POW2_GE(D, MIN) hwy::EnableIf<Pow2<D>(D()) >= (MIN)>* = nullptr

## Typedefs

template<typename T , int kPow2 = 0>
using | hwy::HWY_NAMESPACE::ScalableTag = typename detail::ScalableTagChecker< T, kPow2 >::type
template<typename T , size_t kLimit>
using | hwy::HWY_NAMESPACE::CappedTag = typename detail::CappedTagChecker< T, kLimit >::type
template<typename T , size_t kNumLanes>
using | hwy::HWY_NAMESPACE::FixedTag = typename detail::FixedTagChecker< T, kNumLanes >::type
template<class D >
using | hwy::HWY_NAMESPACE::TFromD = typename D::T
template<class T , class D >
using | hwy::HWY_NAMESPACE::Rebind = typename D::template Rebind< T >
template<class D >
using | hwy::HWY_NAMESPACE::RebindToSigned = Rebind< MakeSigned< TFromD< D > >, D >
template<class D >
using | hwy::HWY_NAMESPACE::RebindToUnsigned = Rebind< MakeUnsigned< TFromD< D > >, D >
template<class D >
using | hwy::HWY_NAMESPACE::RebindToFloat = Rebind< MakeFloat< TFromD< D > >, D >
template<class T , class D >
using | hwy::HWY_NAMESPACE::Repartition = typename D::template Repartition< T >
template<class D >
using | hwy::HWY_NAMESPACE::RepartitionToWide = Repartition< MakeWide< TFromD< D > >, D >
template<class D >
using | hwy::HWY_NAMESPACE::RepartitionToNarrow = Repartition< MakeNarrow< TFromD< D > >, D >
template<class D >
using | hwy::HWY_NAMESPACE::Half = typename D::Half
template<class D >
using | hwy::HWY_NAMESPACE::Twice = typename D::Twice
template<typename T >
using | hwy::HWY_NAMESPACE::Full16 = Simd< T, 2/sizeof(T), 0 >
template<typename T >
using | hwy::HWY_NAMESPACE::Full32 = Simd< T, 4/sizeof(T), 0 >
template<typename T >
using | hwy::HWY_NAMESPACE::Full64 = Simd< T, 8/sizeof(T), 0 >
template<class V >
using | hwy::HWY_NAMESPACE::VecArg = V

## Functions

| HWY_BEFORE_NAMESPACE ()
template<typename T , size_t N, int kPow2>
constexpr bool | hwy::HWY_NAMESPACE::detail::IsFull (Simd< T, N, kPow2 >)
constexpr size_t | hwy::HWY_NAMESPACE::detail::ScaleByPower (size_t N, int pow2)
template<class D >
HWY_INLINE HWY_MAYBE_UNUSED constexpr int | hwy::HWY_NAMESPACE::Pow2 (D)
template<class D >
HWY_INLINE HWY_MAYBE_UNUSED constexpr size_t | hwy::HWY_NAMESPACE::MaxLanes (D)
template<typename T , size_t N, int kPow2>
HWY_INLINE HWY_MAYBE_UNUSED size_t | hwy::HWY_NAMESPACE::Lanes (Simd< T, N, kPow2 >)
| HWY_AFTER_NAMESPACE ()

## Macro Definition Documentation

## HWY_IF_FLOAT_D

#define HWY_IF_FLOAT_D | ( |  | D | ) | HWY_IF_FLOAT(TFromD<D>)

## HWY_IF_FLOAT_V

#define HWY_IF_FLOAT_V | ( |  | V | ) | HWY_IF_FLOAT(TFromV<V>)

## HWY_IF_GE128_D

#define HWY_IF_GE128_D | ( |  | D | ) | hwy::EnableIf<D::kPrivateN * sizeof(TFromD<D>) >= 16>* = nullptr

## HWY_IF_LANE_SIZE_D

#define HWY_IF_LANE_SIZE_D | ( |  | D,
|  |  | bytes
| ) |  | HWY_IF_LANE_SIZE(TFromD<D>, bytes)

## HWY_IF_LANE_SIZE_ONE_OF_D

#define HWY_IF_LANE_SIZE_ONE_OF_D | ( |  | D,
|  |  | bit_array
| ) |  | HWY_IF_LANE_SIZE_ONE_OF(TFromD<D>, bit_array)

## HWY_IF_LANE_SIZE_ONE_OF_V

#define HWY_IF_LANE_SIZE_ONE_OF_V | ( |  | V,
|  |  | bit_array
| ) |  | HWY_IF_LANE_SIZE_ONE_OF(TFromV<V>, bit_array)

## HWY_IF_LANE_SIZE_V

#define HWY_IF_LANE_SIZE_V | ( |  | V,
|  |  | bytes
| ) |  | HWY_IF_LANE_SIZE(TFromV<V>, bytes)

## HWY_IF_LT128_D

#define HWY_IF_LT128_D | ( |  | D | ) | hwy::EnableIf<D::kPrivateN * sizeof(TFromD<D>) < 16>* = nullptr

## HWY_IF_NOT_FLOAT_D

#define HWY_IF_NOT_FLOAT_D | ( |  | D | ) | HWY_IF_NOT_FLOAT(TFromD<D>)

## HWY_IF_NOT_LANE_SIZE_D

#define HWY_IF_NOT_LANE_SIZE_D | ( |  | D,
|  |  | bytes
| ) |  | HWY_IF_NOT_LANE_SIZE(TFromD<D>, bytes)

## HWY_IF_NOT_LANE_SIZE_V

#define HWY_IF_NOT_LANE_SIZE_V | ( |  | V,
|  |  | bytes
| ) |  | HWY_IF_NOT_LANE_SIZE(TFromV<V>, bytes)

## HWY_IF_POW2_GE

#define HWY_IF_POW2_GE | ( |  | D,
|  |  | MIN
| ) |  | hwy::EnableIf<Pow2<D>(D()) >= (MIN)>* = nullptr

## HWY_IF_SIGNED_D

#define HWY_IF_SIGNED_D | ( |  | D | ) | HWY_IF_SIGNED(TFromD<D>)

## HWY_IF_SIGNED_V

#define HWY_IF_SIGNED_V | ( |  | V | ) | HWY_IF_SIGNED(TFromV<V>)

## HWY_IF_UNSIGNED_D

#define HWY_IF_UNSIGNED_D | ( |  | D | ) | HWY_IF_UNSIGNED(TFromD<D>)

## HWY_IF_UNSIGNED_V

#define HWY_IF_UNSIGNED_V | ( |  | V | ) | HWY_IF_UNSIGNED(TFromV<V>)

## Function Documentation

## HWY_AFTER_NAMESPACE()

HWY_AFTER_NAMESPACE | ( |  | ) |

## HWY_BEFORE_NAMESPACE()

HWY_BEFORE_NAMESPACE | ( |  | ) |