| arm_neon-inl.h |  | 393202 | 
        
          | arm_sve-inl.h |  | 263481 | 
        
          | emu128-inl.h | tag | 90027 | 
        
          | generic_ops-inl.h | .h.
#if HWY_IDE && !defined(HWY_HIGHWAY_INCLUDED)
#include "hwy/detect_targets.h"
#include "hwy/ops/emu128-inl.h"
#endif  // HWY_IDE
// Relies on the external include guard in highway.h.
HWY_BEFORE_NAMESPACE();
namespace hwy {
namespace HWY_NAMESPACE {
// The lane type of a vector type, e.g. float for Vec<ScalableTag<float>>.
template <class V>
using LaneType = decltype(GetLane(V()));
// Vector type, e.g. Vec128<float> for CappedTag<float, 4>. Useful as the return
// type of functions that do not take a vector argument, or as an argument type
// if the function only has a template argument for D, or for explicit type
// names instead of auto. This may be a built-in type.
template <class D>
using Vec = decltype(Zero(D()));
// Mask type. Useful as the return type of functions that do not take a mask
// argument, or as an argument type if the function only has a template argument
// for D, or for explicit type names instead of auto.
template <class D>
using Mask = decltype(MaskFromVec(Zero(D())));
// Returns the closest value to v within [lo, hi].
template <class V>
HWY_API V Clamp(const V v, const V lo, const V hi) {
  return Min(Max(lo, v), hi);
}
// CombineShiftRightBytes (and -Lanes) are not available for the scalar target,
// and RVV has its own implementation of -Lanes.
#if (HWY_TARGET != HWY_SCALAR && HWY_TARGET != HWY_RVV) || HWY_IDE
template <size_t kLanes, class D>
HWY_API VFromD<D> CombineShiftRightLanes(D d, VFromD<D> hi, VFromD<D> lo) {
  constexpr size_t kBytes = kLanes * sizeof(TFromD<D>);
  static_assert(kBytes < 16, "Shift count is per-block");
  return CombineShiftRightBytes<kBytes>(d, hi, lo);
}
#endif
// Returns lanes with the most significant bit set and all other bits zero.
template <class D>
HWY_API Vec<D> SignBit(D d) {
  const RebindToUnsigned<decltype(d)> du;
  return BitCast(d, Set(du, SignMask<TFromD<D>>()));
}
// Returns quiet NaN.
template <class D>
HWY_API Vec<D> NaN(D d) {
  const RebindToSigned<D> di;
  // LimitsMax sets all exponent and mantissa bits to 1. The exponent plus
  // mantissa MSB (to indicate quiet) would be sufficient.
  return BitCast(d, Set(di, LimitsMax<TFromD<decltype(di)>>()));
}
// Returns positive infinity.
template <class D>
HWY_API Vec<D> Inf(D d) {
  const RebindToUnsigned<D> du;
  using T = TFromD<D>;
  using TU = TFromD<decltype(du)>;
  const TU max_x2 = static_cast<TU>(MaxExponentTimes2<T>());
  return BitCast(d, Set(du, max_x2 >> 1));
}
// ------------------------------ MaskedSetOr/MaskedSet
template <class V, typename T = TFromV<V>, typename D = DFromV<V>,
          typename M = MFromD<D>>
HWY_API V MaskedSetOr(V no, M m, T a) {
  D d;
  return IfThenElse(m, Set(d, a), no);
}
template <class D, typename V = VFromD<D>, typename M = MFromD<D>,
          typename T = TFromD<D>>
HWY_API V MaskedSet(D d, M m, T a) {
  return IfThenElseZero(m, Set(d, a));
}
// ------------------------------ ZeroExtendResizeBitCast
// The implementation of detail::ZeroExtendResizeBitCast for the HWY_EMU128
// target is in emu128-inl.h, and the implementation of
// detail::ZeroExtendResizeBitCast for the HWY_SCALAR target is in scalar-inl.h
#if HWY_TARGET != HWY_EMU128 && HWY_TARGET != HWY_SCALAR
namespace detail {
#if HWY_HAVE_SCALABLE
template <size_t kFromVectSize, size_t kToVectSize, class DTo, class DFrom>
HWY_INLINE VFromD<DTo> ZeroExtendResizeBitCast(
    hwy::SizeTag<kFromVectSize> /* from_size_tag | 308379 | 
        
          | inside-inl.h | tag | 23665 | 
        
          | loongarch_lasx-inl.h | tag | 178821 | 
        
          | loongarch_lsx-inl.h | tag | 219888 | 
        
          | ppc_vsx-inl.h |  | 276125 | 
        
          | rvv-inl.h | tag | 281495 | 
        
          | scalar-inl.h | tag | 69588 | 
        
          | set_macros-inl.h |  | 23755 | 
        
          | shared-inl.h |  | 29433 | 
        
          | wasm_128-inl.h | tag | 233537 | 
        
          | wasm_256-inl.h |  | 80865 | 
        
          | x86_128-inl.h |  | 523671 | 
        
          | x86_256-inl.h |  | 345601 | 
        
          | x86_512-inl.h |  | 301904 | 
        
          | x86_avx3-inl.h |  | 19232 |