19#ifndef HIGHWAY_HWY_CONTRIB_SORT_SHARED_INL_H_
20#define HIGHWAY_HWY_CONTRIB_SORT_SHARED_INL_H_
33#if HWY_COMPILER_MSVC || HWY_IS_DEBUG_BUILD
34 static constexpr size_t kMaxCols = 8;
46 template <
size_t kLPK>
82 template <
typename T,
size_t kLPK>
86 return HWY_MAX(SampleLanes<T>() + BaseCaseNumLanes<kLPK>(N) + N,
91 template <
typename T,
size_t kLPK>
93 return BufNum<T, kLPK>(vector_size /
sizeof(T)) *
sizeof(T);
97 template <
size_t kLPK>
100 return kLPK == 2 ? BufBytes<uint64_t, 2>(vector_size)
101 :
HWY_MAX((BufBytes<uint16_t, 1>(vector_size)),
102 HWY_MAX((BufBytes<uint32_t, 1>(vector_size)),
103 (BufBytes<uint64_t, 1>(vector_size))));
107static_assert(SortConstants::MaxBufBytes<1>(64) <= 1664,
"Unexpectedly high");
108static_assert(SortConstants::MaxBufBytes<2>(64) <= 1664,
"Unexpectedly high");
116#if defined(HIGHWAY_HWY_CONTRIB_SORT_SHARED_TOGGLE) == defined(HWY_TARGET_TOGGLE)
118#ifdef HIGHWAY_HWY_CONTRIB_SORT_SHARED_TOGGLE
119#undef HIGHWAY_HWY_CONTRIB_SORT_SHARED_TOGGLE
121#define HIGHWAY_HWY_CONTRIB_SORT_SHARED_TOGGLE
130#if (HWY_TARGET == HWY_SCALAR) || \
131 (HWY_COMPILER_MSVC && !HWY_IS_DEBUG_BUILD) || \
132 (HWY_ARCH_ARM_V7 && HWY_IS_DEBUG_BUILD) || \
133 (HWY_ARCH_ARM_A64 && HWY_COMPILER_GCC_ACTUAL && HWY_IS_ASAN)
134#define VQSORT_ENABLED 0
136#define VQSORT_ENABLED 1
143#if HWY_TARGET == HWY_RVV
#define HWY_MAX(a, b)
Definition base.h:177
#define HWY_MIN(a, b)
Definition base.h:176
#define HWY_INLINE
Definition base.h:101
ScalableTag< T, -1 > SortTag
Definition contrib/sort/shared-inl.h:146
typename detail::ScalableTagChecker< T, kPow2 >::type ScalableTag
Definition ops/shared-inl.h:367
#define HWY_NAMESPACE
Definition set_macros-inl.h:166
Definition contrib/sort/shared-inl.h:28
static constexpr HWY_INLINE size_t BufBytes(size_t vector_size)
Definition contrib/sort/shared-inl.h:92
static constexpr HWY_INLINE size_t BaseCaseNumLanes(size_t N)
Definition contrib/sort/shared-inl.h:47
static constexpr size_t kMaxCols
Definition contrib/sort/shared-inl.h:36
static constexpr HWY_INLINE size_t PartitionBufNum(size_t N)
Definition contrib/sort/shared-inl.h:73
static constexpr HWY_INLINE size_t LanesPerChunk(size_t sizeof_t)
Definition contrib/sort/shared-inl.h:64
static constexpr HWY_INLINE size_t MaxBufBytes(size_t vector_size)
Definition contrib/sort/shared-inl.h:98
static constexpr size_t kMaxRows
Definition contrib/sort/shared-inl.h:43
static constexpr HWY_INLINE size_t BufNum(size_t N)
Definition contrib/sort/shared-inl.h:83
static constexpr HWY_INLINE size_t SampleLanes()
Definition contrib/sort/shared-inl.h:69
static constexpr size_t kPartitionUnroll
Definition contrib/sort/shared-inl.h:58