17#if defined(HIGHWAY_HWY_CONTRIB_ALGO_COPY_INL_H_) == \
18 defined(HWY_TARGET_TOGGLE)
19#ifdef HIGHWAY_HWY_CONTRIB_ALGO_COPY_INL_H_
20#undef HIGHWAY_HWY_CONTRIB_ALGO_COPY_INL_H_
22#define HIGHWAY_HWY_CONTRIB_ALGO_COPY_INL_H_
41template <
class D,
typename T = TFromD<D>>
48 for (; idx <= count - N; idx += N) {
56 const size_t remaining = count - idx;
62template <
class D,
typename T = TFromD<D>>
68 for (; idx <= count - N; idx += N) {
77 const size_t remaining = count - idx;
94template <
class D,
class Func,
typename T = TFromD<D>>
101 for (; idx <= count - N; idx += N) {
110#if HWY_MEM_OPS_MIGHT_FAULT
113 for (; idx < count; ++idx) {
114 using V1 =
Vec<
decltype(d1)>;
117 const uintptr_t addr =
reinterpret_cast<uintptr_t
>(from);
119 reinterpret_cast<const T *
HWY_RESTRICT>(addr + (idx *
sizeof(T)));
120 const V1 v =
LoadU(d1, from_idx);
123 if (
CountTrue(d1, func(d1, v)) == 0)
continue;
129 const size_t last = count - N;
131 const size_t invalid = idx - last;
#define HWY_RESTRICT
Definition base.h:95
#define HWY_DASSERT(condition)
Definition base.h:290
#define HWY_UNLIKELY(expr)
Definition base.h:107
T * CopyIf(D d, const T *HWY_RESTRICT from, size_t count, T *HWY_RESTRICT to, const Func &func)
Definition copy-inl.h:95
D d
Definition arm_sve-inl.h:1915
HWY_API size_t CountTrue(D, Mask128< T > mask)
Definition arm_neon-inl.h:8358
HWY_API Vec128< T, N > And(const Vec128< T, N > a, const Vec128< T, N > b)
Definition arm_neon-inl.h:2690
HWY_API Vec128< uint8_t > LoadU(D, const uint8_t *HWY_RESTRICT unaligned)
Definition arm_neon-inl.h:3442
HWY_API Vec128< T > Not(const Vec128< T > v)
Definition arm_neon-inl.h:2672
HWY_API void StoreU(Vec128< uint8_t > v, D, uint8_t *HWY_RESTRICT unaligned)
Definition arm_neon-inl.h:3689
typename detail::CappedTagChecker< T, kLimit, kPow2 >::type CappedTag
Definition ops/shared-inl.h:379
decltype(MaskFromVec(Zero(D()))) Mask
Definition generic_ops-inl.h:52
HWY_INLINE Vec128< TFromD< D > > Set(D, T t)
Definition arm_neon-inl.h:931
void Fill(D d, T value, size_t count, T *HWY_RESTRICT to)
Definition copy-inl.h:42
void Copy(D d, const T *HWY_RESTRICT from, size_t count, T *HWY_RESTRICT to)
Definition copy-inl.h:63
HWY_API void SafeFillN(const size_t num, const T value, D d, T *HWY_RESTRICT to)
Definition generic_ops-inl.h:172
HWY_API void SafeCopyN(const size_t num, D d, const T *HWY_RESTRICT from, T *HWY_RESTRICT to)
Definition generic_ops-inl.h:187
decltype(Zero(D())) Vec
Definition generic_ops-inl.h:46
HWY_API size_t Lanes(D)
Definition rvv-inl.h:598
HWY_API MFromD< D > FirstN(D d, size_t num)
Definition arm_neon-inl.h:3232
HWY_API size_t CompressBlendedStore(VFromD< D > v, MFromD< D > m, D d, TFromD< D > *HWY_RESTRICT unaligned)
Definition arm_neon-inl.h:8955
HWY_API VFromD< D > MaskedLoad(MFromD< D > m, D d, const TFromD< D > *HWY_RESTRICT aligned)
Definition arm_neon-inl.h:3669
FuncOutput(*)(const void *, FuncInput) Func
Definition nanobenchmark.h:87
#define HWY_NAMESPACE
Definition set_macros-inl.h:166