// load_masked template <class A, bool... Values, class Mode>
XSIMD_INLINE batch<int32_t, A> load_masked(int32_t const* mem, batch_bool_constant<int32_t, A, Values...> mask, convert<int32_t>, Mode, requires_arch<avx2_128>) noexcept
{ return _mm_maskload_epi32(mem, mask.as_batch());
} template <class A, bool... Values, class Mode>
XSIMD_INLINE batch<uint32_t, A> load_masked(uint32_t const* mem, batch_bool_constant<uint32_t, A, Values...> mask, convert<uint32_t>, Mode, requires_arch<avx2_128>) noexcept
{ return _mm_maskload_epi32((int32_t*)mem, mask.as_batch());
} template <class A, bool... Values, class Mode>
XSIMD_INLINE batch<int64_t, A> load_masked(int64_t const* mem, batch_bool_constant<int64_t, A, Values...> mask, convert<double>, Mode, requires_arch<avx_128>) noexcept
{ return _mm_maskload_epi64(mem, mask.as_batch());
} template <class A, bool... Values, class Mode>
XSIMD_INLINE batch<uint64_t, A> load_masked(uint64_t const* mem, batch_bool_constant<uint64_t, A, Values...> mask, convert<double>, Mode, requires_arch<avx_128>) noexcept
{ return _mm_maskload_epi64((int64_t*)mem, mask.as_batch());
}
// store_masked template <class A, bool... Values, class Mode>
XSIMD_INLINE void store_masked(int32_t* mem, batch<int32_t, A> const& src, batch_bool_constant<int32_t, A, Values...> mask, Mode, requires_arch<avx2_128>) noexcept
{ return _mm_maskstore_epi32(mem, mask.as_batch(), src);
} template <class A, bool... Values, class Mode>
XSIMD_INLINE void store_masked(uint32_t* mem, batch<uint32_t, A> const& src, batch_bool_constant<uint32_t, A, Values...> mask, Mode, requires_arch<avx2_128>) noexcept
{ return _mm_maskstore_epi32((int32_t*)mem, mask.as_batch(), src);
} template <class A, bool... Values, class Mode>
XSIMD_INLINE void store_masked(int64_t* mem, batch<int64_t, A> const& src, batch_bool_constant<int64_t, A, Values...> mask, Mode, requires_arch<avx_128>) noexcept
{ return _mm_maskstore_epi64(mem, mask.as_batch(), src);
} template <class A, bool... Values, class Mode>
XSIMD_INLINE void store_masked(uint64_t* mem, batch<uint64_t, A> const& src, batch_bool_constant<uint64_t, A, Values...> mask, Mode, requires_arch<avx_128>) noexcept
{ return _mm_maskstore_epi64((int64_t*)mem, mask.as_batch(), src);
}
// gather template <class T, class A, class U, detail::enable_sized_integral_t<T, 4> = 0, detail::enable_sized_integral_t<U, 4> = 0>
XSIMD_INLINE batch<T, A> gather(batch<T, A> const&, T const* src, batch<U, A> const& index,
kernel::requires_arch<avx2_128>) noexcept
{ return _mm_i32gather_epi32(reinterpret_cast<constint*>(src), index, sizeof(T));
}
template <class T, class A, class U, detail::enable_sized_integral_t<T, 8> = 0, detail::enable_sized_integral_t<U, 8> = 0>
XSIMD_INLINE batch<T, A> gather(batch<T, A> const&, T const* src, batch<U, A> const& index,
kernel::requires_arch<avx2_128>) noexcept
{ return _mm_i64gather_epi64(reinterpret_cast<constlonglongint*>(src), index, sizeof(T));
}
template <class A, class U,
detail::enable_sized_integral_t<U, 4> = 0>
XSIMD_INLINE batch<float, A> gather(batch<float, A> const&, floatconst* src,
batch<U, A> const& index,
kernel::requires_arch<avx2_128>) noexcept
{ return _mm_i32gather_ps(src, index, sizeof(float));
}
template <class A, class U, detail::enable_sized_integral_t<U, 8> = 0>
XSIMD_INLINE batch<double, A> gather(batch<double, A> const&, doubleconst* src,
batch<U, A> const& index,
requires_arch<avx2_128>) noexcept
{ return _mm_i64gather_pd(src, index, sizeof(double));
}
}
}
#endif
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.