swizzle has pretty weak mask type constraint
|
swizzle(batch<T, A> const& x, batch_constant<Vt, A, Values...> mask) noexcept |
But (at least some) kernels require it to be an unsigned integer type. On MSVC I ran into a compiler error when using signed integers in the mask.
|
XSIMD_INLINE batch<float, A> swizzle(batch<float, A> const& self, batch<uint32_t, A> mask, requires_arch<avx2>) noexcept |
A possible solution could be to replace Vt with as_unsigned_integer_t<T>. In term of breakage, this moves the implicit conversion from xsimd to user code.
This may concern shuffle too.
swizzlehas pretty weak mask type constraintxsimd/include/xsimd/types/xsimd_api.hpp
Line 2411 in d92c6d4
But (at least some) kernels require it to be an unsigned integer type. On MSVC I ran into a compiler error when using signed integers in the mask.
xsimd/include/xsimd/arch/xsimd_avx2.hpp
Line 907 in d92c6d4
A possible solution could be to replace
Vtwithas_unsigned_integer_t<T>. In term of breakage, this moves the implicit conversion fromxsimdto user code.This may concern
shuffletoo.