@@ -1216,65 +1216,15 @@ namespace xsimd
12161216 {
12171217 return vec_adds (self, other);
12181218 }
1219- #if 0
12201219
12211220 // set
1222- template <class A, class... Values>
1223- XSIMD_INLINE batch<float, A> set(batch<float, A> const&, requires_arch<altivec>, Values... values) noexcept
1224- {
1225- static_assert(sizeof...(Values) == batch<float, A>::size, "consistent init");
1226- return _mm_setr_ps(values...);
1227- }
1228-
1229- template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
1230- XSIMD_INLINE batch<T, A> set(batch<T, A> const&, requires_arch<altivec>, T v0, T v1) noexcept
1231- {
1232- return _mm_set_epi64x(v1, v0);
1233- }
1234- template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
1235- XSIMD_INLINE batch<T, A> set(batch<T, A> const&, requires_arch<altivec>, T v0, T v1, T v2, T v3) noexcept
1236- {
1237- return _mm_setr_epi32(v0, v1, v2, v3);
1238- }
1239- template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
1240- XSIMD_INLINE batch<T, A> set(batch<T, A> const&, requires_arch<altivec>, T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7) noexcept
1241- {
1242- return _mm_setr_epi16(v0, v1, v2, v3, v4, v5, v6, v7);
1243- }
1244- template <class A, class T, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
1245- XSIMD_INLINE batch<T, A> set(batch<T, A> const&, requires_arch<altivec>, T v0, T v1, T v2, T v3, T v4, T v5, T v6, T v7, T v8, T v9, T v10, T v11, T v12, T v13, T v14, T v15) noexcept
1221+ template <class A , class T , class ... Values>
1222+ XSIMD_INLINE batch<float , A> set (batch<T, A> const &, requires_arch<altivec>, Values... values) noexcept
12461223 {
1247- return _mm_setr_epi8(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15);
1224+ static_assert (sizeof ...(Values) == batch<T, A>::size, " consistent init" );
1225+ return typename batch<T, A>::register_type { values... };
12481226 }
12491227
1250- template <class A, class... Values>
1251- XSIMD_INLINE batch<double, A> set(batch<double, A> const&, requires_arch<altivec>, Values... values) noexcept
1252- {
1253- static_assert(sizeof...(Values) == batch<double, A>::size, "consistent init");
1254- return _mm_setr_pd(values...);
1255- }
1256-
1257- template <class A, class T, class... Values, class = typename std::enable_if<std::is_integral<T>::value, void>::type>
1258- XSIMD_INLINE batch_bool<T, A> set(batch_bool<T, A> const&, requires_arch<altivec>, Values... values) noexcept
1259- {
1260- return set(batch<T, A>(), A {}, static_cast<T>(values ? -1LL : 0LL)...).data;
1261- }
1262-
1263- template <class A, class... Values>
1264- XSIMD_INLINE batch_bool<float, A> set(batch_bool<float, A> const&, requires_arch<altivec>, Values... values) noexcept
1265- {
1266- static_assert(sizeof...(Values) == batch_bool<float, A>::size, "consistent init");
1267- return _mm_castsi128_ps(set(batch<int32_t, A>(), A {}, static_cast<int32_t>(values ? -1LL : 0LL)...).data);
1268- }
1269-
1270- template <class A, class... Values>
1271- XSIMD_INLINE batch_bool<double, A> set(batch_bool<double, A> const&, requires_arch<altivec>, Values... values) noexcept
1272- {
1273- static_assert(sizeof...(Values) == batch_bool<double, A>::size, "consistent init");
1274- return _mm_castsi128_pd(set(batch<int64_t, A>(), A {}, static_cast<int64_t>(values ? -1LL : 0LL)...).data);
1275- }
1276- #endif
1277-
12781228 // ssub
12791229
12801230 template <class A , class T , class = typename std::enable_if<std::is_scalar<T>::value, void >::type>
0 commit comments