@@ -1095,7 +1095,7 @@ namespace xsimd
10951095 }
10961096 }
10971097
1098- // swizzle (dynamic mask)
1098+ // swizzle (dynamic mask) on 8 and 16 bits; see avx for 32 and 64 bits versions
10991099 template <class A >
11001100 XSIMD_INLINE batch<uint8_t , A> swizzle (batch<uint8_t , A> const & self, batch<uint8_t , A> mask, requires_arch<avx2>) noexcept
11011101 {
@@ -1141,40 +1141,6 @@ namespace xsimd
11411141 return bitwise_cast<T>(swizzle (bitwise_cast<uint16_t >(self), mask, req));
11421142 }
11431143
1144- template <class A >
1145- XSIMD_INLINE batch<float , A> swizzle (batch<float , A> const & self, batch<uint32_t , A> mask, requires_arch<avx2>) noexcept
1146- {
1147- return swizzle (self, mask, avx {});
1148- }
1149- template <class A >
1150- XSIMD_INLINE batch<double , A> swizzle (batch<double , A> const & self, batch<uint64_t , A> mask, requires_arch<avx2>) noexcept
1151- {
1152- batch<uint32_t , A> broadcaster = { 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 };
1153- constexpr uint64_t comb = 0x0000000100000001ul * 2 ;
1154- return bitwise_cast<double >(swizzle (bitwise_cast<float >(self), bitwise_cast<uint32_t >(mask * comb) + broadcaster, avx2 {}));
1155- }
1156-
1157- template <class A >
1158- XSIMD_INLINE batch<uint64_t , A> swizzle (batch<uint64_t , A> const & self, batch<uint64_t , A> mask, requires_arch<avx2>) noexcept
1159- {
1160- return bitwise_cast<uint64_t >(swizzle (bitwise_cast<double >(self), mask, avx2 {}));
1161- }
1162- template <class A >
1163- XSIMD_INLINE batch<int64_t , A> swizzle (batch<int64_t , A> const & self, batch<uint64_t , A> mask, requires_arch<avx2>) noexcept
1164- {
1165- return bitwise_cast<int64_t >(swizzle (bitwise_cast<double >(self), mask, avx2 {}));
1166- }
1167- template <class A >
1168- XSIMD_INLINE batch<uint32_t , A> swizzle (batch<uint32_t , A> const & self, batch<uint32_t , A> mask, requires_arch<avx2>) noexcept
1169- {
1170- return swizzle (self, mask, avx {});
1171- }
1172- template <class A >
1173- XSIMD_INLINE batch<int32_t , A> swizzle (batch<int32_t , A> const & self, batch<uint32_t , A> mask, requires_arch<avx2>) noexcept
1174- {
1175- return bitwise_cast<int32_t >(swizzle (bitwise_cast<uint32_t >(self), mask, avx2 {}));
1176- }
1177-
11781144 // swizzle (constant mask)
11791145 template <class A , uint32_t V0, uint32_t V1, uint32_t V2, uint32_t V3, uint32_t V4, uint32_t V5, uint32_t V6, uint32_t V7>
11801146 XSIMD_INLINE batch<float , A> swizzle (batch<float , A> const & self, batch_constant<uint32_t , A, V0, V1, V2, V3, V4, V5, V6, V7> mask, requires_arch<avx2>) noexcept
0 commit comments