You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- has_mask_load/store capability traits (xsimd::detail), size-keyed per arch
with inheritance-following; report a real predicated masked load/store vs the
emulated scalar common fallback (pure compile-time, build-independent)
- AVX / avx_128: integer 4/8-byte runtime masked load/store via float bitcast,
reusing the vmaskmov path (lifts pure-AVX / fma3<avx> off the scalar fallback)
- AVX512BW: native vmovdqu8/16 masked load/store for 8/16-bit integers;
avx512vl_128/256 native masked overloads
- dedup: constant-mask overloads with no compile-time advantage forward to the
runtime path instead of duplicating the intrinsic call
- sve: drop the dead pmask helper (constant masks forward via as_batch_bool)
XSIMD_INLINEvoidstore_masked(T* mem, batch<T, A> const& src, batch_bool<T, A> mask, Mode, requires_arch<avx512vl_128>) noexcept;
45
+
27
46
// select
28
47
template <classA, classT, bool... Values, class = std::enable_if_t<std::is_integral<T>::value>>
29
48
XSIMD_INLINE batch<T, A> select(batch_bool_constant<T, A, Values...> const&, batch<T, A> const& true_br, batch<T, A> const& false_br, requires_arch<avx2_128>) noexcept
@@ -122,18 +141,19 @@ namespace xsimd
122
141
}
123
142
}
124
143
144
+
// constant masks gain nothing on a single register; forward to runtime
0 commit comments