@@ -131,54 +131,6 @@ Vc_INTRINSIC void Vector<T, VectorAbi::Avx>::store(U *mem, Mask mask, Flags flag
131
131
}
132
132
133
133
// /////////////////////////////////////////////////////////////////////////////////////////
134
- // /////////////////////////////////////////////////////////////////////////////////////////
135
- // swizzles {{{1
136
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE &Vector<T, VectorAbi::Avx>::abcd() const { return *this ; }
137
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::cdab() const { return Mem::permute<X2, X3, X0, X1>(data ()); }
138
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::badc() const { return Mem::permute<X1, X0, X3, X2>(data ()); }
139
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::aaaa() const { return Mem::permute<X0, X0, X0, X0>(data ()); }
140
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::bbbb() const { return Mem::permute<X1, X1, X1, X1>(data ()); }
141
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::cccc() const { return Mem::permute<X2, X2, X2, X2>(data ()); }
142
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dddd() const { return Mem::permute<X3, X3, X3, X3>(data ()); }
143
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::bcad() const { return Mem::permute<X1, X2, X0, X3>(data ()); }
144
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::bcda() const { return Mem::permute<X1, X2, X3, X0>(data ()); }
145
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dabc() const { return Mem::permute<X3, X0, X1, X2>(data ()); }
146
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::acbd() const { return Mem::permute<X0, X2, X1, X3>(data ()); }
147
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dbca() const { return Mem::permute<X3, X1, X2, X0>(data ()); }
148
- template <typename T> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dcba() const { return Mem::permute<X3, X2, X1, X0>(data ()); }
149
-
150
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::cdab () const { return Mem::shuffle128<X1, X0>(data (), data ()); }
151
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::badc () const { return Mem::permute<X1, X0, X3, X2>(data ()); }
152
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::aaaa () const { const double &tmp = d.m (0 ); return _mm256_broadcast_sd (&tmp); }
153
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::bbbb () const { const double &tmp = d.m (1 ); return _mm256_broadcast_sd (&tmp); }
154
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::cccc () const { const double &tmp = d.m (2 ); return _mm256_broadcast_sd (&tmp); }
155
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::dddd () const { const double &tmp = d.m (3 ); return _mm256_broadcast_sd (&tmp); }
156
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::bcad () const { return Mem::shuffle<X1, Y0, X2, Y3>(Mem::shuffle128<X0, X0>(data (), data ()), Mem::shuffle128<X1, X1>(data (), data ())); }
157
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::bcda () const { return Mem::shuffle<X1, Y0, X3, Y2>(data (), Mem::shuffle128<X1, X0>(data (), data ())); }
158
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::dabc () const { return Mem::shuffle<X1, Y0, X3, Y2>(Mem::shuffle128<X1, X0>(data (), data ()), data ()); }
159
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::acbd () const { return Mem::shuffle<X0, Y0, X3, Y3>(Mem::shuffle128<X0, X0>(data (), data ()), Mem::shuffle128<X1, X1>(data (), data ())); }
160
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::dbca () const { return Mem::shuffle<X1, Y1, X2, Y2>(Mem::shuffle128<X1, X1>(data (), data ()), Mem::shuffle128<X0, X0>(data (), data ())); }
161
- template <> Vc_INTRINSIC const AVX2::double_v Vc_PURE AVX2::double_v::dcba () const { return cdab ().badc (); }
162
-
163
- #define VC_SWIZZLES_16BIT_IMPL (T ) \
164
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::cdab() const { return Mem::permute<X2, X3, X0, X1, X6, X7, X4, X5>(data ()); } \
165
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::badc() const { return Mem::permute<X1, X0, X3, X2, X5, X4, X7, X6>(data ()); } \
166
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::aaaa() const { return Mem::permute<X0, X0, X0, X0, X4, X4, X4, X4>(data ()); } \
167
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::bbbb() const { return Mem::permute<X1, X1, X1, X1, X5, X5, X5, X5>(data ()); } \
168
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::cccc() const { return Mem::permute<X2, X2, X2, X2, X6, X6, X6, X6>(data ()); } \
169
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dddd() const { return Mem::permute<X3, X3, X3, X3, X7, X7, X7, X7>(data ()); } \
170
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::bcad() const { return Mem::permute<X1, X2, X0, X3, X5, X6, X4, X7>(data ()); } \
171
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::bcda() const { return Mem::permute<X1, X2, X3, X0, X5, X6, X7, X4>(data ()); } \
172
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dabc() const { return Mem::permute<X3, X0, X1, X2, X7, X4, X5, X6>(data ()); } \
173
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::acbd() const { return Mem::permute<X0, X2, X1, X3, X4, X6, X5, X7>(data ()); } \
174
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dbca() const { return Mem::permute<X3, X1, X2, X0, X7, X5, X6, X4>(data ()); } \
175
- template <> Vc_INTRINSIC const AVX2::Vector<T> Vc_PURE Vector<T, VectorAbi::Avx>::dcba() const { return Mem::permute<X3, X2, X1, X0, X7, X6, X5, X4>(data ()); }
176
- #ifdef VC_IMPL_AVX2
177
- VC_SWIZZLES_16BIT_IMPL (short )
178
- VC_SWIZZLES_16BIT_IMPL(unsigned short )
179
- #endif
180
- #undef VC_SWIZZLES_16BIT_IMPL
181
-
182
134
// /////////////////////////////////////////////////////////////////////////////////////////
183
135
// division {{{1
184
136
template <typename T> inline AVX2::Vector<T> &Vector<T, VectorAbi::Avx>::operator /=(EntryType x)
0 commit comments