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_
40 template <
class D,
typename T = TFromD<D>>
46 for (; idx +
N <= count; idx +=
N) {
53 const size_t remaining = count - idx;
59 template <
class D,
typename T = TFromD<D>>
64 for (; idx +
N <= count; idx +=
N) {
72 const size_t remaining = count - idx;
89 template <
class D,
class Func,
typename T = TFromD<D>>
95 for (; idx +
N <= count; idx +=
N) {
103 #if HWY_MEM_OPS_MIGHT_FAULT
106 for (; idx < count; ++idx) {
107 using V1 =
Vec<decltype(d1)>;
110 const uintptr_t addr =
reinterpret_cast<uintptr_t
>(from);
112 reinterpret_cast<const T *
HWY_RESTRICT>(addr + (idx *
sizeof(T)));
113 const V1
v =
LoadU(d1, from_idx);
116 if (
CountTrue(d1, func(d1,
v)) == 0)
continue;
122 const size_t last = count -
N;
124 const size_t invalid = idx - last;
#define HWY_RESTRICT
Definition: base.h:61
#define HWY_DASSERT(condition)
Definition: base.h:191
#define HWY_UNLIKELY(expr)
Definition: base.h:67
d
Definition: rvv-inl.h:1742
HWY_API Mask128< T, N > FirstN(const Simd< T, N, 0 > d, size_t num)
Definition: arm_neon-inl.h:2409
constexpr HWY_API size_t Lanes(Simd< T, N, kPow2 >)
Definition: arm_sve-inl.h:236
typename detail::CappedTagChecker< T, kLimit >::type CappedTag
Definition: ops/shared-inl.h:172
HWY_API Vec128< T, N > MaskedLoad(Mask128< T, N > m, Simd< T, N, 0 > d, const T *HWY_RESTRICT aligned)
Definition: arm_neon-inl.h:2711
HWY_API size_t CountTrue(Full128< T >, const Mask128< T > mask)
Definition: arm_neon-inl.h:5269
HWY_API void StoreU(const Vec128< uint8_t > v, Full128< uint8_t >, uint8_t *HWY_RESTRICT unaligned)
Definition: arm_neon-inl.h:2725
svuint16_t Set(Simd< bfloat16_t, N, kPow2 > d, bfloat16_t arg)
Definition: arm_sve-inl.h:312
HWY_API Vec128< uint8_t > LoadU(Full128< uint8_t >, const uint8_t *HWY_RESTRICT unaligned)
Definition: arm_neon-inl.h:2544
HWY_API Vec128< T, N > And(const Vec128< T, N > a, const Vec128< T, N > b)
Definition: arm_neon-inl.h:1934
void Fill(D d, T value, size_t count, T *HWY_RESTRICT to)
Definition: copy-inl.h:41
HWY_API size_t CompressBlendedStore(Vec128< T, N > v, Mask128< T, N > m, Simd< T, N, 0 > d, T *HWY_RESTRICT unaligned)
Definition: arm_neon-inl.h:5846
void Copy(D d, const T *HWY_RESTRICT from, size_t count, T *HWY_RESTRICT to)
Definition: copy-inl.h:60
HWY_API Vec128< T > Not(const Vec128< T > v)
Definition: arm_neon-inl.h:1916
HWY_API void SafeFillN(const size_t num, const T value, D d, T *HWY_RESTRICT to)
Definition: generic_ops-inl.h:88
HWY_API void SafeCopyN(const size_t num, D d, const T *HWY_RESTRICT from, T *HWY_RESTRICT to)
Definition: generic_ops-inl.h:103
decltype(MaskFromVec(Zero(D()))) Mask
Definition: generic_ops-inl.h:38
T * CopyIf(D d, const T *HWY_RESTRICT from, size_t count, T *HWY_RESTRICT to, const Func &func)
Definition: copy-inl.h:90
N
Definition: rvv-inl.h:1742
const vfloat64m1_t v
Definition: rvv-inl.h:1742
decltype(Zero(D())) Vec
Definition: generic_ops-inl.h:32
Definition: aligned_allocator.h:27
FuncOutput(*)(const void *, FuncInput) Func
Definition: nanobenchmark.h:105
#define HWY_NAMESPACE
Definition: set_macros-inl.h:82