17 #if defined(HIGHWAY_HWY_CONTRIB_ALGO_TRANSFORM_INL_H_) == \
18 defined(HWY_TARGET_TOGGLE)
19 #ifdef HIGHWAY_HWY_CONTRIB_ALGO_TRANSFORM_INL_H_
20 #undef HIGHWAY_HWY_CONTRIB_ALGO_TRANSFORM_INL_H_
22 #define HIGHWAY_HWY_CONTRIB_ALGO_TRANSFORM_INL_H_
48 template <
class D,
class Func,
typename T = TFromD<D>>
53 for (; idx +
N <= count; idx +=
N) {
61 #if HWY_MEM_OPS_MIGHT_FAULT
64 for (; idx < count; ++idx) {
65 using V1 =
Vec<decltype(d1)>;
66 const V1
v =
LoadU(d1, inout + idx);
67 StoreU(func(d1,
v), d1, inout + idx);
70 const size_t remaining = count - idx;
80 template <
class D,
class Func,
typename T = TFromD<D>>
86 for (; idx +
N <= count; idx +=
N) {
95 #if HWY_MEM_OPS_MIGHT_FAULT
98 for (; idx < count; ++idx) {
99 using V1 =
Vec<decltype(d1)>;
100 const V1
v =
LoadU(d1, inout + idx);
101 const V1 v1 =
LoadU(d1, in1 + idx);
102 StoreU(func(d1,
v, v1), d1, inout + idx);
105 const size_t remaining = count - idx;
116 template <
class D,
class Func,
typename T = TFromD<D>>
123 for (; idx +
N <= count; idx +=
N) {
127 StoreU(func(
d,
v, v1, v2),
d, inout + idx);
133 #if HWY_MEM_OPS_MIGHT_FAULT
136 for (; idx < count; ++idx) {
137 using V1 =
Vec<decltype(d1)>;
138 const V1
v =
LoadU(d1, inout + idx);
139 const V1 v1 =
LoadU(d1, in1 + idx);
140 const V1 v2 =
LoadU(d1, in2 + idx);
141 StoreU(func(d1,
v, v1, v2), d1, inout + idx);
144 const size_t remaining = count - idx;
#define HWY_RESTRICT
Definition: base.h:63
#define HWY_DASSERT(condition)
Definition: base.h:193
#define HWY_UNLIKELY(expr)
Definition: base.h:69
d
Definition: rvv-inl.h:1656
HWY_API Mask128< T, N > FirstN(const Simd< T, N, 0 > d, size_t num)
Definition: arm_neon-inl.h:1896
typename detail::CappedTagChecker< T, kLimit >::type CappedTag
Definition: ops/shared-inl.h:173
void Transform2(D d, T *HWY_RESTRICT inout, size_t count, const T *HWY_RESTRICT in1, const T *HWY_RESTRICT in2, const Func &func)
Definition: transform-inl.h:117
HWY_API size_t Lanes(Simd< T, N, kPow2 > d)
Definition: arm_sve-inl.h:218
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:2210
HWY_API void BlendedStore(Vec128< T, N > v, Mask128< T, N > m, Simd< T, N, 0 > d, T *HWY_RESTRICT p)
Definition: arm_neon-inl.h:2402
HWY_API void StoreU(const Vec128< uint8_t > v, Full128< uint8_t >, uint8_t *HWY_RESTRICT unaligned)
Definition: arm_neon-inl.h:2224
void Transform(D d, T *HWY_RESTRICT inout, size_t count, const Func &func)
Definition: transform-inl.h:49
HWY_API Vec128< uint8_t > LoadU(Full128< uint8_t >, const uint8_t *HWY_RESTRICT unaligned)
Definition: arm_neon-inl.h:2031
decltype(MaskFromVec(Zero(D()))) Mask
Definition: generic_ops-inl.h:38
N
Definition: rvv-inl.h:1656
void Transform1(D d, T *HWY_RESTRICT inout, size_t count, const T *HWY_RESTRICT in1, const Func &func)
Definition: transform-inl.h:81
const vfloat64m1_t v
Definition: rvv-inl.h:1656
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:80