32 #ifndef MCKL_INTERNAL_SSE2_OP_HPP 33 #define MCKL_INTERNAL_SSE2_OP_HPP 45 MCKL_INLINE inline void slli_epi32(std::array<__m128i, 4> &s)
47 std::get<0>(s) = _mm_slli_epi32(std::get<0>(s), imm8);
48 std::get<1>(s) = _mm_slli_epi32(std::get<1>(s), imm8);
49 std::get<2>(s) = _mm_slli_epi32(std::get<2>(s), imm8);
50 std::get<3>(s) = _mm_slli_epi32(std::get<3>(s), imm8);
54 MCKL_INLINE inline void srli_epi32(std::array<__m128i, 4> &s)
56 std::get<0>(s) = _mm_srli_epi32(std::get<0>(s), imm8);
57 std::get<1>(s) = _mm_srli_epi32(std::get<1>(s), imm8);
58 std::get<2>(s) = _mm_srli_epi32(std::get<2>(s), imm8);
59 std::get<3>(s) = _mm_srli_epi32(std::get<3>(s), imm8);
63 MCKL_INLINE inline void slli_epi64(std::array<__m128i, 4> &s)
65 std::get<0>(s) = _mm_slli_epi64(std::get<0>(s), imm8);
66 std::get<1>(s) = _mm_slli_epi64(std::get<1>(s), imm8);
67 std::get<2>(s) = _mm_slli_epi64(std::get<2>(s), imm8);
68 std::get<3>(s) = _mm_slli_epi64(std::get<3>(s), imm8);
72 MCKL_INLINE inline void srli_epi64(std::array<__m128i, 4> &s)
74 std::get<0>(s) = _mm_srli_epi64(std::get<0>(s), imm8);
75 std::get<1>(s) = _mm_srli_epi64(std::get<1>(s), imm8);
76 std::get<2>(s) = _mm_srli_epi64(std::get<2>(s), imm8);
77 std::get<3>(s) = _mm_srli_epi64(std::get<3>(s), imm8);
81 MCKL_INLINE inline void shuffle_epi32(std::array<__m128i, 4> &s)
83 std::get<0>(s) = _mm_shuffle_epi32(std::get<0>(s), imm8);
84 std::get<1>(s) = _mm_shuffle_epi32(std::get<1>(s), imm8);
85 std::get<2>(s) = _mm_shuffle_epi32(std::get<2>(s), imm8);
86 std::get<3>(s) = _mm_shuffle_epi32(std::get<3>(s), imm8);
89 MCKL_INLINE inline void and_si128(
const std::array<__m128i, 4> &s,
90 const __m128i &a, std::array<__m128i, 4> &t)
92 std::get<0>(t) = _mm_and_si128(std::get<0>(s), a);
93 std::get<1>(t) = _mm_and_si128(std::get<1>(s), a);
94 std::get<2>(t) = _mm_and_si128(std::get<2>(s), a);
95 std::get<3>(t) = _mm_and_si128(std::get<3>(s), a);
98 MCKL_INLINE inline void and_si128(std::array<__m128i, 4> &s,
const __m128i &a)
100 std::get<0>(s) = _mm_and_si128(std::get<0>(s), a);
101 std::get<1>(s) = _mm_and_si128(std::get<1>(s), a);
102 std::get<2>(s) = _mm_and_si128(std::get<2>(s), a);
103 std::get<3>(s) = _mm_and_si128(std::get<3>(s), a);
107 std::array<__m128i, 4> &s,
const std::array<__m128i, 4> &a)
109 std::get<0>(s) = _mm_xor_si128(std::get<0>(s), std::get<0>(a));
110 std::get<1>(s) = _mm_xor_si128(std::get<1>(s), std::get<1>(a));
111 std::get<2>(s) = _mm_xor_si128(std::get<2>(s), std::get<2>(a));
112 std::get<3>(s) = _mm_xor_si128(std::get<3>(s), std::get<3>(a));
115 MCKL_INLINE inline void xor_si128(std::array<__m128i, 4> &s,
const __m128i &a)
117 std::get<0>(s) = _mm_xor_si128(std::get<0>(s), a);
118 std::get<1>(s) = _mm_xor_si128(std::get<1>(s), a);
119 std::get<2>(s) = _mm_xor_si128(std::get<2>(s), a);
120 std::get<3>(s) = _mm_xor_si128(std::get<3>(s), a);
124 std::array<__m128i, 4> &s,
const std::array<__m128i, 4> &a)
126 std::get<0>(s) = _mm_add_epi32(std::get<0>(s), std::get<0>(a));
127 std::get<1>(s) = _mm_add_epi32(std::get<1>(s), std::get<1>(a));
128 std::get<2>(s) = _mm_add_epi32(std::get<2>(s), std::get<2>(a));
129 std::get<3>(s) = _mm_add_epi32(std::get<3>(s), std::get<3>(a));
133 std::array<__m128i, 4> &s,
const std::array<__m128i, 4> &a)
135 std::get<0>(s) = _mm_add_epi64(std::get<0>(s), std::get<0>(a));
136 std::get<1>(s) = _mm_add_epi64(std::get<1>(s), std::get<1>(a));
137 std::get<2>(s) = _mm_add_epi64(std::get<2>(s), std::get<2>(a));
138 std::get<3>(s) = _mm_add_epi64(std::get<3>(s), std::get<3>(a));
141 MCKL_INLINE inline void add_epi64(std::array<__m128i, 4> &s,
const __m128i &a)
143 std::get<0>(s) = _mm_add_epi64(std::get<0>(s), a);
144 std::get<1>(s) = _mm_add_epi64(std::get<1>(s), a);
145 std::get<2>(s) = _mm_add_epi64(std::get<2>(s), a);
146 std::get<3>(s) = _mm_add_epi64(std::get<3>(s), a);
149 MCKL_INLINE inline void mul_epu32(
const std::array<__m128i, 4> &s,
150 const __m128i &a, std::array<__m128i, 4> &t)
152 std::get<0>(t) = _mm_mul_epu32(std::get<0>(s), a);
153 std::get<1>(t) = _mm_mul_epu32(std::get<1>(s), a);
154 std::get<2>(t) = _mm_mul_epu32(std::get<2>(s), a);
155 std::get<3>(t) = _mm_mul_epu32(std::get<3>(s), a);
158 MCKL_INLINE inline void add_ps(std::array<__m128i, 4> &s,
const __m128i &a)
160 std::get<0>(s) = _mm_castps_si128(
161 _mm_add_ps(_mm_castsi128_ps(std::get<0>(s)), _mm_castsi128_ps(a)));
162 std::get<1>(s) = _mm_castps_si128(
163 _mm_add_ps(_mm_castsi128_ps(std::get<1>(s)), _mm_castsi128_ps(a)));
164 std::get<2>(s) = _mm_castps_si128(
165 _mm_add_ps(_mm_castsi128_ps(std::get<2>(s)), _mm_castsi128_ps(a)));
166 std::get<3>(s) = _mm_castps_si128(
167 _mm_add_ps(_mm_castsi128_ps(std::get<3>(s)), _mm_castsi128_ps(a)));
170 MCKL_INLINE inline void mul_ps(std::array<__m128i, 4> &s,
const __m128i &a)
172 std::get<0>(s) = _mm_castps_si128(
173 _mm_mul_ps(_mm_castsi128_ps(std::get<0>(s)), _mm_castsi128_ps(a)));
174 std::get<1>(s) = _mm_castps_si128(
175 _mm_mul_ps(_mm_castsi128_ps(std::get<1>(s)), _mm_castsi128_ps(a)));
176 std::get<2>(s) = _mm_castps_si128(
177 _mm_mul_ps(_mm_castsi128_ps(std::get<2>(s)), _mm_castsi128_ps(a)));
178 std::get<3>(s) = _mm_castps_si128(
179 _mm_mul_ps(_mm_castsi128_ps(std::get<3>(s)), _mm_castsi128_ps(a)));
182 MCKL_INLINE inline void add_pd(std::array<__m128i, 4> &s,
const __m128i &a)
184 std::get<0>(s) = _mm_castpd_si128(
185 _mm_add_pd(_mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(a)));
186 std::get<1>(s) = _mm_castpd_si128(
187 _mm_add_pd(_mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(a)));
188 std::get<2>(s) = _mm_castpd_si128(
189 _mm_add_pd(_mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(a)));
190 std::get<3>(s) = _mm_castpd_si128(
191 _mm_add_pd(_mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(a)));
195 std::array<__m128i, 4> &s,
const std::array<__m128i, 4> &a)
197 std::get<0>(s) = _mm_castpd_si128(_mm_add_pd(
198 _mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(std::get<0>(a))));
199 std::get<1>(s) = _mm_castpd_si128(_mm_add_pd(
200 _mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(std::get<1>(a))));
201 std::get<2>(s) = _mm_castpd_si128(_mm_add_pd(
202 _mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(std::get<2>(a))));
203 std::get<3>(s) = _mm_castpd_si128(_mm_add_pd(
204 _mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(std::get<3>(a))));
207 MCKL_INLINE inline void sub_pd(std::array<__m128i, 4> &s,
const __m128i &a)
209 std::get<0>(s) = _mm_castpd_si128(
210 _mm_sub_pd(_mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(a)));
211 std::get<1>(s) = _mm_castpd_si128(
212 _mm_sub_pd(_mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(a)));
213 std::get<2>(s) = _mm_castpd_si128(
214 _mm_sub_pd(_mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(a)));
215 std::get<3>(s) = _mm_castpd_si128(
216 _mm_sub_pd(_mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(a)));
219 MCKL_INLINE inline void mul_pd(std::array<__m128i, 4> &s,
const __m128i &a)
221 std::get<0>(s) = _mm_castpd_si128(
222 _mm_mul_pd(_mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(a)));
223 std::get<1>(s) = _mm_castpd_si128(
224 _mm_mul_pd(_mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(a)));
225 std::get<2>(s) = _mm_castpd_si128(
226 _mm_mul_pd(_mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(a)));
227 std::get<3>(s) = _mm_castpd_si128(
228 _mm_mul_pd(_mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(a)));
232 std::array<__m128i, 4> &s,
const std::array<__m128i, 4> &a)
234 std::get<0>(s) = _mm_castpd_si128(_mm_mul_pd(
235 _mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(std::get<0>(a))));
236 std::get<1>(s) = _mm_castpd_si128(_mm_mul_pd(
237 _mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(std::get<1>(a))));
238 std::get<2>(s) = _mm_castpd_si128(_mm_mul_pd(
239 _mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(std::get<2>(a))));
240 std::get<3>(s) = _mm_castpd_si128(_mm_mul_pd(
241 _mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(std::get<3>(a))));
245 MCKL_INLINE inline void slli_epi32(std::array<__m128i, 8> &s)
247 std::get<0>(s) = _mm_slli_epi32(std::get<0>(s), imm8);
248 std::get<1>(s) = _mm_slli_epi32(std::get<1>(s), imm8);
249 std::get<2>(s) = _mm_slli_epi32(std::get<2>(s), imm8);
250 std::get<3>(s) = _mm_slli_epi32(std::get<3>(s), imm8);
251 std::get<4>(s) = _mm_slli_epi32(std::get<4>(s), imm8);
252 std::get<5>(s) = _mm_slli_epi32(std::get<5>(s), imm8);
253 std::get<6>(s) = _mm_slli_epi32(std::get<6>(s), imm8);
254 std::get<7>(s) = _mm_slli_epi32(std::get<7>(s), imm8);
258 MCKL_INLINE inline void srli_epi32(std::array<__m128i, 8> &s)
260 std::get<0>(s) = _mm_srli_epi32(std::get<0>(s), imm8);
261 std::get<1>(s) = _mm_srli_epi32(std::get<1>(s), imm8);
262 std::get<2>(s) = _mm_srli_epi32(std::get<2>(s), imm8);
263 std::get<3>(s) = _mm_srli_epi32(std::get<3>(s), imm8);
264 std::get<4>(s) = _mm_srli_epi32(std::get<4>(s), imm8);
265 std::get<5>(s) = _mm_srli_epi32(std::get<5>(s), imm8);
266 std::get<6>(s) = _mm_srli_epi32(std::get<6>(s), imm8);
267 std::get<7>(s) = _mm_srli_epi32(std::get<7>(s), imm8);
271 MCKL_INLINE inline void slli_epi64(std::array<__m128i, 8> &s)
273 std::get<0>(s) = _mm_slli_epi64(std::get<0>(s), imm8);
274 std::get<1>(s) = _mm_slli_epi64(std::get<1>(s), imm8);
275 std::get<2>(s) = _mm_slli_epi64(std::get<2>(s), imm8);
276 std::get<3>(s) = _mm_slli_epi64(std::get<3>(s), imm8);
277 std::get<4>(s) = _mm_slli_epi64(std::get<4>(s), imm8);
278 std::get<5>(s) = _mm_slli_epi64(std::get<5>(s), imm8);
279 std::get<6>(s) = _mm_slli_epi64(std::get<6>(s), imm8);
280 std::get<7>(s) = _mm_slli_epi64(std::get<7>(s), imm8);
284 MCKL_INLINE inline void srli_epi64(std::array<__m128i, 8> &s)
286 std::get<0>(s) = _mm_srli_epi64(std::get<0>(s), imm8);
287 std::get<1>(s) = _mm_srli_epi64(std::get<1>(s), imm8);
288 std::get<2>(s) = _mm_srli_epi64(std::get<2>(s), imm8);
289 std::get<3>(s) = _mm_srli_epi64(std::get<3>(s), imm8);
290 std::get<4>(s) = _mm_srli_epi64(std::get<4>(s), imm8);
291 std::get<5>(s) = _mm_srli_epi64(std::get<5>(s), imm8);
292 std::get<6>(s) = _mm_srli_epi64(std::get<6>(s), imm8);
293 std::get<7>(s) = _mm_srli_epi64(std::get<7>(s), imm8);
297 MCKL_INLINE inline void shuffle_epi32(std::array<__m128i, 8> &s)
299 std::get<0>(s) = _mm_shuffle_epi32(std::get<0>(s), imm8);
300 std::get<1>(s) = _mm_shuffle_epi32(std::get<1>(s), imm8);
301 std::get<2>(s) = _mm_shuffle_epi32(std::get<2>(s), imm8);
302 std::get<3>(s) = _mm_shuffle_epi32(std::get<3>(s), imm8);
303 std::get<4>(s) = _mm_shuffle_epi32(std::get<4>(s), imm8);
304 std::get<5>(s) = _mm_shuffle_epi32(std::get<5>(s), imm8);
305 std::get<6>(s) = _mm_shuffle_epi32(std::get<6>(s), imm8);
306 std::get<7>(s) = _mm_shuffle_epi32(std::get<7>(s), imm8);
309 MCKL_INLINE inline void and_si128(
const std::array<__m128i, 8> &s,
310 const __m128i &a, std::array<__m128i, 8> &t)
312 std::get<0>(t) = _mm_and_si128(std::get<0>(s), a);
313 std::get<1>(t) = _mm_and_si128(std::get<1>(s), a);
314 std::get<2>(t) = _mm_and_si128(std::get<2>(s), a);
315 std::get<3>(t) = _mm_and_si128(std::get<3>(s), a);
316 std::get<4>(t) = _mm_and_si128(std::get<4>(s), a);
317 std::get<5>(t) = _mm_and_si128(std::get<5>(s), a);
318 std::get<6>(t) = _mm_and_si128(std::get<6>(s), a);
319 std::get<7>(t) = _mm_and_si128(std::get<7>(s), a);
322 MCKL_INLINE inline void and_si128(std::array<__m128i, 8> &s,
const __m128i &a)
324 std::get<0>(s) = _mm_and_si128(std::get<0>(s), a);
325 std::get<1>(s) = _mm_and_si128(std::get<1>(s), a);
326 std::get<2>(s) = _mm_and_si128(std::get<2>(s), a);
327 std::get<3>(s) = _mm_and_si128(std::get<3>(s), a);
328 std::get<4>(s) = _mm_and_si128(std::get<4>(s), a);
329 std::get<5>(s) = _mm_and_si128(std::get<5>(s), a);
330 std::get<6>(s) = _mm_and_si128(std::get<6>(s), a);
331 std::get<7>(s) = _mm_and_si128(std::get<7>(s), a);
335 std::array<__m128i, 8> &s,
const std::array<__m128i, 8> &a)
337 std::get<0>(s) = _mm_xor_si128(std::get<0>(s), std::get<0>(a));
338 std::get<1>(s) = _mm_xor_si128(std::get<1>(s), std::get<1>(a));
339 std::get<2>(s) = _mm_xor_si128(std::get<2>(s), std::get<2>(a));
340 std::get<3>(s) = _mm_xor_si128(std::get<3>(s), std::get<3>(a));
341 std::get<4>(s) = _mm_xor_si128(std::get<4>(s), std::get<4>(a));
342 std::get<5>(s) = _mm_xor_si128(std::get<5>(s), std::get<5>(a));
343 std::get<6>(s) = _mm_xor_si128(std::get<6>(s), std::get<6>(a));
344 std::get<7>(s) = _mm_xor_si128(std::get<7>(s), std::get<7>(a));
347 MCKL_INLINE inline void xor_si128(std::array<__m128i, 8> &s,
const __m128i &a)
349 std::get<0>(s) = _mm_xor_si128(std::get<0>(s), a);
350 std::get<1>(s) = _mm_xor_si128(std::get<1>(s), a);
351 std::get<2>(s) = _mm_xor_si128(std::get<2>(s), a);
352 std::get<3>(s) = _mm_xor_si128(std::get<3>(s), a);
353 std::get<4>(s) = _mm_xor_si128(std::get<4>(s), a);
354 std::get<5>(s) = _mm_xor_si128(std::get<5>(s), a);
355 std::get<6>(s) = _mm_xor_si128(std::get<6>(s), a);
356 std::get<7>(s) = _mm_xor_si128(std::get<7>(s), a);
360 std::array<__m128i, 8> &s,
const std::array<__m128i, 8> &a)
362 std::get<0>(s) = _mm_add_epi32(std::get<0>(s), std::get<0>(a));
363 std::get<1>(s) = _mm_add_epi32(std::get<1>(s), std::get<1>(a));
364 std::get<2>(s) = _mm_add_epi32(std::get<2>(s), std::get<2>(a));
365 std::get<3>(s) = _mm_add_epi32(std::get<3>(s), std::get<3>(a));
366 std::get<4>(s) = _mm_add_epi32(std::get<4>(s), std::get<4>(a));
367 std::get<5>(s) = _mm_add_epi32(std::get<5>(s), std::get<5>(a));
368 std::get<6>(s) = _mm_add_epi32(std::get<6>(s), std::get<6>(a));
369 std::get<7>(s) = _mm_add_epi32(std::get<7>(s), std::get<7>(a));
373 std::array<__m128i, 8> &s,
const std::array<__m128i, 8> &a)
375 std::get<0>(s) = _mm_add_epi64(std::get<0>(s), std::get<0>(a));
376 std::get<1>(s) = _mm_add_epi64(std::get<1>(s), std::get<1>(a));
377 std::get<2>(s) = _mm_add_epi64(std::get<2>(s), std::get<2>(a));
378 std::get<3>(s) = _mm_add_epi64(std::get<3>(s), std::get<3>(a));
379 std::get<4>(s) = _mm_add_epi64(std::get<4>(s), std::get<4>(a));
380 std::get<5>(s) = _mm_add_epi64(std::get<5>(s), std::get<5>(a));
381 std::get<6>(s) = _mm_add_epi64(std::get<6>(s), std::get<6>(a));
382 std::get<7>(s) = _mm_add_epi64(std::get<7>(s), std::get<7>(a));
385 MCKL_INLINE inline void add_epi64(std::array<__m128i, 8> &s,
const __m128i &a)
387 std::get<0>(s) = _mm_add_epi64(std::get<0>(s), a);
388 std::get<1>(s) = _mm_add_epi64(std::get<1>(s), a);
389 std::get<2>(s) = _mm_add_epi64(std::get<2>(s), a);
390 std::get<3>(s) = _mm_add_epi64(std::get<3>(s), a);
391 std::get<4>(s) = _mm_add_epi64(std::get<4>(s), a);
392 std::get<5>(s) = _mm_add_epi64(std::get<5>(s), a);
393 std::get<6>(s) = _mm_add_epi64(std::get<6>(s), a);
394 std::get<7>(s) = _mm_add_epi64(std::get<7>(s), a);
397 MCKL_INLINE inline void mul_epu32(
const std::array<__m128i, 8> &s,
398 const __m128i &a, std::array<__m128i, 8> &t)
400 std::get<0>(t) = _mm_mul_epu32(std::get<0>(s), a);
401 std::get<1>(t) = _mm_mul_epu32(std::get<1>(s), a);
402 std::get<2>(t) = _mm_mul_epu32(std::get<2>(s), a);
403 std::get<3>(t) = _mm_mul_epu32(std::get<3>(s), a);
404 std::get<4>(t) = _mm_mul_epu32(std::get<4>(s), a);
405 std::get<5>(t) = _mm_mul_epu32(std::get<5>(s), a);
406 std::get<6>(t) = _mm_mul_epu32(std::get<6>(s), a);
407 std::get<7>(t) = _mm_mul_epu32(std::get<7>(s), a);
410 MCKL_INLINE inline void add_ps(std::array<__m128i, 8> &s,
const __m128i &a)
412 std::get<0>(s) = _mm_castps_si128(
413 _mm_add_ps(_mm_castsi128_ps(std::get<0>(s)), _mm_castsi128_ps(a)));
414 std::get<1>(s) = _mm_castps_si128(
415 _mm_add_ps(_mm_castsi128_ps(std::get<1>(s)), _mm_castsi128_ps(a)));
416 std::get<2>(s) = _mm_castps_si128(
417 _mm_add_ps(_mm_castsi128_ps(std::get<2>(s)), _mm_castsi128_ps(a)));
418 std::get<3>(s) = _mm_castps_si128(
419 _mm_add_ps(_mm_castsi128_ps(std::get<3>(s)), _mm_castsi128_ps(a)));
420 std::get<4>(s) = _mm_castps_si128(
421 _mm_add_ps(_mm_castsi128_ps(std::get<4>(s)), _mm_castsi128_ps(a)));
422 std::get<5>(s) = _mm_castps_si128(
423 _mm_add_ps(_mm_castsi128_ps(std::get<5>(s)), _mm_castsi128_ps(a)));
424 std::get<6>(s) = _mm_castps_si128(
425 _mm_add_ps(_mm_castsi128_ps(std::get<6>(s)), _mm_castsi128_ps(a)));
426 std::get<7>(s) = _mm_castps_si128(
427 _mm_add_ps(_mm_castsi128_ps(std::get<7>(s)), _mm_castsi128_ps(a)));
430 MCKL_INLINE inline void mul_ps(std::array<__m128i, 8> &s,
const __m128i &a)
432 std::get<0>(s) = _mm_castps_si128(
433 _mm_mul_ps(_mm_castsi128_ps(std::get<0>(s)), _mm_castsi128_ps(a)));
434 std::get<1>(s) = _mm_castps_si128(
435 _mm_mul_ps(_mm_castsi128_ps(std::get<1>(s)), _mm_castsi128_ps(a)));
436 std::get<2>(s) = _mm_castps_si128(
437 _mm_mul_ps(_mm_castsi128_ps(std::get<2>(s)), _mm_castsi128_ps(a)));
438 std::get<3>(s) = _mm_castps_si128(
439 _mm_mul_ps(_mm_castsi128_ps(std::get<3>(s)), _mm_castsi128_ps(a)));
440 std::get<4>(s) = _mm_castps_si128(
441 _mm_mul_ps(_mm_castsi128_ps(std::get<4>(s)), _mm_castsi128_ps(a)));
442 std::get<5>(s) = _mm_castps_si128(
443 _mm_mul_ps(_mm_castsi128_ps(std::get<5>(s)), _mm_castsi128_ps(a)));
444 std::get<6>(s) = _mm_castps_si128(
445 _mm_mul_ps(_mm_castsi128_ps(std::get<6>(s)), _mm_castsi128_ps(a)));
446 std::get<7>(s) = _mm_castps_si128(
447 _mm_mul_ps(_mm_castsi128_ps(std::get<7>(s)), _mm_castsi128_ps(a)));
450 MCKL_INLINE inline void add_pd(std::array<__m128i, 8> &s,
const __m128i &a)
452 std::get<0>(s) = _mm_castpd_si128(
453 _mm_add_pd(_mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(a)));
454 std::get<1>(s) = _mm_castpd_si128(
455 _mm_add_pd(_mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(a)));
456 std::get<2>(s) = _mm_castpd_si128(
457 _mm_add_pd(_mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(a)));
458 std::get<3>(s) = _mm_castpd_si128(
459 _mm_add_pd(_mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(a)));
460 std::get<4>(s) = _mm_castpd_si128(
461 _mm_add_pd(_mm_castsi128_pd(std::get<4>(s)), _mm_castsi128_pd(a)));
462 std::get<5>(s) = _mm_castpd_si128(
463 _mm_add_pd(_mm_castsi128_pd(std::get<5>(s)), _mm_castsi128_pd(a)));
464 std::get<6>(s) = _mm_castpd_si128(
465 _mm_add_pd(_mm_castsi128_pd(std::get<6>(s)), _mm_castsi128_pd(a)));
466 std::get<7>(s) = _mm_castpd_si128(
467 _mm_add_pd(_mm_castsi128_pd(std::get<7>(s)), _mm_castsi128_pd(a)));
471 std::array<__m128i, 8> &s,
const std::array<__m128i, 8> &a)
473 std::get<0>(s) = _mm_castpd_si128(_mm_add_pd(
474 _mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(std::get<0>(a))));
475 std::get<1>(s) = _mm_castpd_si128(_mm_add_pd(
476 _mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(std::get<1>(a))));
477 std::get<2>(s) = _mm_castpd_si128(_mm_add_pd(
478 _mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(std::get<2>(a))));
479 std::get<3>(s) = _mm_castpd_si128(_mm_add_pd(
480 _mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(std::get<3>(a))));
481 std::get<4>(s) = _mm_castpd_si128(_mm_add_pd(
482 _mm_castsi128_pd(std::get<4>(s)), _mm_castsi128_pd(std::get<4>(a))));
483 std::get<5>(s) = _mm_castpd_si128(_mm_add_pd(
484 _mm_castsi128_pd(std::get<5>(s)), _mm_castsi128_pd(std::get<5>(a))));
485 std::get<6>(s) = _mm_castpd_si128(_mm_add_pd(
486 _mm_castsi128_pd(std::get<6>(s)), _mm_castsi128_pd(std::get<6>(a))));
487 std::get<7>(s) = _mm_castpd_si128(_mm_add_pd(
488 _mm_castsi128_pd(std::get<7>(s)), _mm_castsi128_pd(std::get<7>(a))));
491 MCKL_INLINE inline void sub_pd(std::array<__m128i, 8> &s,
const __m128i &a)
493 std::get<0>(s) = _mm_castpd_si128(
494 _mm_sub_pd(_mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(a)));
495 std::get<1>(s) = _mm_castpd_si128(
496 _mm_sub_pd(_mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(a)));
497 std::get<2>(s) = _mm_castpd_si128(
498 _mm_sub_pd(_mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(a)));
499 std::get<3>(s) = _mm_castpd_si128(
500 _mm_sub_pd(_mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(a)));
501 std::get<4>(s) = _mm_castpd_si128(
502 _mm_sub_pd(_mm_castsi128_pd(std::get<4>(s)), _mm_castsi128_pd(a)));
503 std::get<5>(s) = _mm_castpd_si128(
504 _mm_sub_pd(_mm_castsi128_pd(std::get<5>(s)), _mm_castsi128_pd(a)));
505 std::get<6>(s) = _mm_castpd_si128(
506 _mm_sub_pd(_mm_castsi128_pd(std::get<6>(s)), _mm_castsi128_pd(a)));
507 std::get<7>(s) = _mm_castpd_si128(
508 _mm_sub_pd(_mm_castsi128_pd(std::get<7>(s)), _mm_castsi128_pd(a)));
511 MCKL_INLINE inline void mul_pd(std::array<__m128i, 8> &s,
const __m128i &a)
513 std::get<0>(s) = _mm_castpd_si128(
514 _mm_mul_pd(_mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(a)));
515 std::get<1>(s) = _mm_castpd_si128(
516 _mm_mul_pd(_mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(a)));
517 std::get<2>(s) = _mm_castpd_si128(
518 _mm_mul_pd(_mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(a)));
519 std::get<3>(s) = _mm_castpd_si128(
520 _mm_mul_pd(_mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(a)));
521 std::get<4>(s) = _mm_castpd_si128(
522 _mm_mul_pd(_mm_castsi128_pd(std::get<4>(s)), _mm_castsi128_pd(a)));
523 std::get<5>(s) = _mm_castpd_si128(
524 _mm_mul_pd(_mm_castsi128_pd(std::get<5>(s)), _mm_castsi128_pd(a)));
525 std::get<6>(s) = _mm_castpd_si128(
526 _mm_mul_pd(_mm_castsi128_pd(std::get<6>(s)), _mm_castsi128_pd(a)));
527 std::get<7>(s) = _mm_castpd_si128(
528 _mm_mul_pd(_mm_castsi128_pd(std::get<7>(s)), _mm_castsi128_pd(a)));
532 std::array<__m128i, 8> &s,
const std::array<__m128i, 8> &a)
534 std::get<0>(s) = _mm_castpd_si128(_mm_mul_pd(
535 _mm_castsi128_pd(std::get<0>(s)), _mm_castsi128_pd(std::get<0>(a))));
536 std::get<1>(s) = _mm_castpd_si128(_mm_mul_pd(
537 _mm_castsi128_pd(std::get<1>(s)), _mm_castsi128_pd(std::get<1>(a))));
538 std::get<2>(s) = _mm_castpd_si128(_mm_mul_pd(
539 _mm_castsi128_pd(std::get<2>(s)), _mm_castsi128_pd(std::get<2>(a))));
540 std::get<3>(s) = _mm_castpd_si128(_mm_mul_pd(
541 _mm_castsi128_pd(std::get<3>(s)), _mm_castsi128_pd(std::get<3>(a))));
542 std::get<4>(s) = _mm_castpd_si128(_mm_mul_pd(
543 _mm_castsi128_pd(std::get<4>(s)), _mm_castsi128_pd(std::get<4>(a))));
544 std::get<5>(s) = _mm_castpd_si128(_mm_mul_pd(
545 _mm_castsi128_pd(std::get<5>(s)), _mm_castsi128_pd(std::get<5>(a))));
546 std::get<6>(s) = _mm_castpd_si128(_mm_mul_pd(
547 _mm_castsi128_pd(std::get<6>(s)), _mm_castsi128_pd(std::get<6>(a))));
548 std::get<7>(s) = _mm_castpd_si128(_mm_mul_pd(
549 _mm_castsi128_pd(std::get<7>(s)), _mm_castsi128_pd(std::get<7>(a))));
553 MCKL_INLINE inline void slli_epi32(std::array<__m128i, 16> &s)
555 std::get<0x0>(s) = _mm_slli_epi32(std::get<0x0>(s), imm8);
556 std::get<0x1>(s) = _mm_slli_epi32(std::get<0x1>(s), imm8);
557 std::get<0x2>(s) = _mm_slli_epi32(std::get<0x2>(s), imm8);
558 std::get<0x3>(s) = _mm_slli_epi32(std::get<0x3>(s), imm8);
559 std::get<0x4>(s) = _mm_slli_epi32(std::get<0x4>(s), imm8);
560 std::get<0x5>(s) = _mm_slli_epi32(std::get<0x5>(s), imm8);
561 std::get<0x6>(s) = _mm_slli_epi32(std::get<0x6>(s), imm8);
562 std::get<0x7>(s) = _mm_slli_epi32(std::get<0x7>(s), imm8);
563 std::get<0x8>(s) = _mm_slli_epi32(std::get<0x8>(s), imm8);
564 std::get<0x9>(s) = _mm_slli_epi32(std::get<0x9>(s), imm8);
565 std::get<0xA>(s) = _mm_slli_epi32(std::get<0xA>(s), imm8);
566 std::get<0xB>(s) = _mm_slli_epi32(std::get<0xB>(s), imm8);
567 std::get<0xC>(s) = _mm_slli_epi32(std::get<0xC>(s), imm8);
568 std::get<0xD>(s) = _mm_slli_epi32(std::get<0xD>(s), imm8);
569 std::get<0xE>(s) = _mm_slli_epi32(std::get<0xE>(s), imm8);
570 std::get<0xF>(s) = _mm_slli_epi32(std::get<0xF>(s), imm8);
574 MCKL_INLINE inline void srli_epi32(std::array<__m128i, 16> &s)
576 std::get<0x0>(s) = _mm_srli_epi32(std::get<0x0>(s), imm8);
577 std::get<0x1>(s) = _mm_srli_epi32(std::get<0x1>(s), imm8);
578 std::get<0x2>(s) = _mm_srli_epi32(std::get<0x2>(s), imm8);
579 std::get<0x3>(s) = _mm_srli_epi32(std::get<0x3>(s), imm8);
580 std::get<0x4>(s) = _mm_srli_epi32(std::get<0x4>(s), imm8);
581 std::get<0x5>(s) = _mm_srli_epi32(std::get<0x5>(s), imm8);
582 std::get<0x6>(s) = _mm_srli_epi32(std::get<0x6>(s), imm8);
583 std::get<0x7>(s) = _mm_srli_epi32(std::get<0x7>(s), imm8);
584 std::get<0x8>(s) = _mm_srli_epi32(std::get<0x8>(s), imm8);
585 std::get<0x9>(s) = _mm_srli_epi32(std::get<0x9>(s), imm8);
586 std::get<0xA>(s) = _mm_srli_epi32(std::get<0xA>(s), imm8);
587 std::get<0xB>(s) = _mm_srli_epi32(std::get<0xB>(s), imm8);
588 std::get<0xC>(s) = _mm_srli_epi32(std::get<0xC>(s), imm8);
589 std::get<0xD>(s) = _mm_srli_epi32(std::get<0xD>(s), imm8);
590 std::get<0xE>(s) = _mm_srli_epi32(std::get<0xE>(s), imm8);
591 std::get<0xF>(s) = _mm_srli_epi32(std::get<0xF>(s), imm8);
595 MCKL_INLINE inline void slli_epi64(std::array<__m128i, 16> &s)
597 std::get<0x0>(s) = _mm_slli_epi64(std::get<0x0>(s), imm8);
598 std::get<0x1>(s) = _mm_slli_epi64(std::get<0x1>(s), imm8);
599 std::get<0x2>(s) = _mm_slli_epi64(std::get<0x2>(s), imm8);
600 std::get<0x3>(s) = _mm_slli_epi64(std::get<0x3>(s), imm8);
601 std::get<0x4>(s) = _mm_slli_epi64(std::get<0x4>(s), imm8);
602 std::get<0x5>(s) = _mm_slli_epi64(std::get<0x5>(s), imm8);
603 std::get<0x6>(s) = _mm_slli_epi64(std::get<0x6>(s), imm8);
604 std::get<0x7>(s) = _mm_slli_epi64(std::get<0x7>(s), imm8);
605 std::get<0x8>(s) = _mm_slli_epi64(std::get<0x8>(s), imm8);
606 std::get<0x9>(s) = _mm_slli_epi64(std::get<0x9>(s), imm8);
607 std::get<0xA>(s) = _mm_slli_epi64(std::get<0xA>(s), imm8);
608 std::get<0xB>(s) = _mm_slli_epi64(std::get<0xB>(s), imm8);
609 std::get<0xC>(s) = _mm_slli_epi64(std::get<0xC>(s), imm8);
610 std::get<0xD>(s) = _mm_slli_epi64(std::get<0xD>(s), imm8);
611 std::get<0xE>(s) = _mm_slli_epi64(std::get<0xE>(s), imm8);
612 std::get<0xF>(s) = _mm_slli_epi64(std::get<0xF>(s), imm8);
616 MCKL_INLINE inline void srli_epi64(std::array<__m128i, 16> &s)
618 std::get<0x0>(s) = _mm_srli_epi64(std::get<0x0>(s), imm8);
619 std::get<0x1>(s) = _mm_srli_epi64(std::get<0x1>(s), imm8);
620 std::get<0x2>(s) = _mm_srli_epi64(std::get<0x2>(s), imm8);
621 std::get<0x3>(s) = _mm_srli_epi64(std::get<0x3>(s), imm8);
622 std::get<0x4>(s) = _mm_srli_epi64(std::get<0x4>(s), imm8);
623 std::get<0x5>(s) = _mm_srli_epi64(std::get<0x5>(s), imm8);
624 std::get<0x6>(s) = _mm_srli_epi64(std::get<0x6>(s), imm8);
625 std::get<0x7>(s) = _mm_srli_epi64(std::get<0x7>(s), imm8);
626 std::get<0x8>(s) = _mm_srli_epi64(std::get<0x8>(s), imm8);
627 std::get<0x9>(s) = _mm_srli_epi64(std::get<0x9>(s), imm8);
628 std::get<0xA>(s) = _mm_srli_epi64(std::get<0xA>(s), imm8);
629 std::get<0xB>(s) = _mm_srli_epi64(std::get<0xB>(s), imm8);
630 std::get<0xC>(s) = _mm_srli_epi64(std::get<0xC>(s), imm8);
631 std::get<0xD>(s) = _mm_srli_epi64(std::get<0xD>(s), imm8);
632 std::get<0xE>(s) = _mm_srli_epi64(std::get<0xE>(s), imm8);
633 std::get<0xF>(s) = _mm_srli_epi64(std::get<0xF>(s), imm8);
637 MCKL_INLINE inline void shuffle_epi32(std::array<__m128i, 16> &s)
639 std::get<0x0>(s) = _mm_shuffle_epi32(std::get<0x0>(s), imm8);
640 std::get<0x1>(s) = _mm_shuffle_epi32(std::get<0x1>(s), imm8);
641 std::get<0x2>(s) = _mm_shuffle_epi32(std::get<0x2>(s), imm8);
642 std::get<0x3>(s) = _mm_shuffle_epi32(std::get<0x3>(s), imm8);
643 std::get<0x4>(s) = _mm_shuffle_epi32(std::get<0x4>(s), imm8);
644 std::get<0x5>(s) = _mm_shuffle_epi32(std::get<0x5>(s), imm8);
645 std::get<0x6>(s) = _mm_shuffle_epi32(std::get<0x6>(s), imm8);
646 std::get<0x7>(s) = _mm_shuffle_epi32(std::get<0x7>(s), imm8);
647 std::get<0x8>(s) = _mm_shuffle_epi32(std::get<0x8>(s), imm8);
648 std::get<0x9>(s) = _mm_shuffle_epi32(std::get<0x9>(s), imm8);
649 std::get<0xA>(s) = _mm_shuffle_epi32(std::get<0xA>(s), imm8);
650 std::get<0xB>(s) = _mm_shuffle_epi32(std::get<0xB>(s), imm8);
651 std::get<0xC>(s) = _mm_shuffle_epi32(std::get<0xC>(s), imm8);
652 std::get<0xD>(s) = _mm_shuffle_epi32(std::get<0xD>(s), imm8);
653 std::get<0xE>(s) = _mm_shuffle_epi32(std::get<0xE>(s), imm8);
654 std::get<0xF>(s) = _mm_shuffle_epi32(std::get<0xF>(s), imm8);
657 MCKL_INLINE inline void and_si128(
const std::array<__m128i, 16> &s,
658 const __m128i &a, std::array<__m128i, 16> &t)
660 std::get<0x0>(t) = _mm_and_si128(std::get<0x0>(s), a);
661 std::get<0x1>(t) = _mm_and_si128(std::get<0x1>(s), a);
662 std::get<0x2>(t) = _mm_and_si128(std::get<0x2>(s), a);
663 std::get<0x3>(t) = _mm_and_si128(std::get<0x3>(s), a);
664 std::get<0x4>(t) = _mm_and_si128(std::get<0x4>(s), a);
665 std::get<0x5>(t) = _mm_and_si128(std::get<0x5>(s), a);
666 std::get<0x6>(t) = _mm_and_si128(std::get<0x6>(s), a);
667 std::get<0x7>(t) = _mm_and_si128(std::get<0x7>(s), a);
668 std::get<0x8>(t) = _mm_and_si128(std::get<0x8>(s), a);
669 std::get<0x9>(t) = _mm_and_si128(std::get<0x9>(s), a);
670 std::get<0xA>(t) = _mm_and_si128(std::get<0xA>(s), a);
671 std::get<0xB>(t) = _mm_and_si128(std::get<0xB>(s), a);
672 std::get<0xC>(t) = _mm_and_si128(std::get<0xC>(s), a);
673 std::get<0xD>(t) = _mm_and_si128(std::get<0xD>(s), a);
674 std::get<0xE>(t) = _mm_and_si128(std::get<0xE>(s), a);
675 std::get<0xF>(t) = _mm_and_si128(std::get<0xF>(s), a);
678 MCKL_INLINE inline void and_si128(std::array<__m128i, 16> &s,
const __m128i &a)
680 std::get<0x0>(s) = _mm_and_si128(std::get<0x0>(s), a);
681 std::get<0x1>(s) = _mm_and_si128(std::get<0x1>(s), a);
682 std::get<0x2>(s) = _mm_and_si128(std::get<0x2>(s), a);
683 std::get<0x3>(s) = _mm_and_si128(std::get<0x3>(s), a);
684 std::get<0x4>(s) = _mm_and_si128(std::get<0x4>(s), a);
685 std::get<0x5>(s) = _mm_and_si128(std::get<0x5>(s), a);
686 std::get<0x6>(s) = _mm_and_si128(std::get<0x6>(s), a);
687 std::get<0x7>(s) = _mm_and_si128(std::get<0x7>(s), a);
688 std::get<0x8>(s) = _mm_and_si128(std::get<0x8>(s), a);
689 std::get<0x9>(s) = _mm_and_si128(std::get<0x9>(s), a);
690 std::get<0xA>(s) = _mm_and_si128(std::get<0xA>(s), a);
691 std::get<0xB>(s) = _mm_and_si128(std::get<0xB>(s), a);
692 std::get<0xC>(s) = _mm_and_si128(std::get<0xC>(s), a);
693 std::get<0xD>(s) = _mm_and_si128(std::get<0xD>(s), a);
694 std::get<0xE>(s) = _mm_and_si128(std::get<0xE>(s), a);
695 std::get<0xF>(s) = _mm_and_si128(std::get<0xF>(s), a);
699 std::array<__m128i, 16> &s,
const std::array<__m128i, 16> &a)
701 std::get<0x0>(s) = _mm_xor_si128(std::get<0x0>(s), std::get<0x0>(a));
702 std::get<0x1>(s) = _mm_xor_si128(std::get<0x1>(s), std::get<0x1>(a));
703 std::get<0x2>(s) = _mm_xor_si128(std::get<0x2>(s), std::get<0x2>(a));
704 std::get<0x3>(s) = _mm_xor_si128(std::get<0x3>(s), std::get<0x3>(a));
705 std::get<0x4>(s) = _mm_xor_si128(std::get<0x4>(s), std::get<0x4>(a));
706 std::get<0x5>(s) = _mm_xor_si128(std::get<0x5>(s), std::get<0x5>(a));
707 std::get<0x6>(s) = _mm_xor_si128(std::get<0x6>(s), std::get<0x6>(a));
708 std::get<0x7>(s) = _mm_xor_si128(std::get<0x7>(s), std::get<0x7>(a));
709 std::get<0x8>(s) = _mm_xor_si128(std::get<0x8>(s), std::get<0x8>(a));
710 std::get<0x9>(s) = _mm_xor_si128(std::get<0x9>(s), std::get<0x9>(a));
711 std::get<0xA>(s) = _mm_xor_si128(std::get<0xA>(s), std::get<0xA>(a));
712 std::get<0xB>(s) = _mm_xor_si128(std::get<0xB>(s), std::get<0xB>(a));
713 std::get<0xC>(s) = _mm_xor_si128(std::get<0xC>(s), std::get<0xC>(a));
714 std::get<0xD>(s) = _mm_xor_si128(std::get<0xD>(s), std::get<0xD>(a));
715 std::get<0xE>(s) = _mm_xor_si128(std::get<0xE>(s), std::get<0xE>(a));
716 std::get<0xF>(s) = _mm_xor_si128(std::get<0xF>(s), std::get<0xF>(a));
719 MCKL_INLINE inline void xor_si128(std::array<__m128i, 16> &s,
const __m128i &a)
721 std::get<0x0>(s) = _mm_xor_si128(std::get<0x0>(s), a);
722 std::get<0x1>(s) = _mm_xor_si128(std::get<0x1>(s), a);
723 std::get<0x2>(s) = _mm_xor_si128(std::get<0x2>(s), a);
724 std::get<0x3>(s) = _mm_xor_si128(std::get<0x3>(s), a);
725 std::get<0x4>(s) = _mm_xor_si128(std::get<0x4>(s), a);
726 std::get<0x5>(s) = _mm_xor_si128(std::get<0x5>(s), a);
727 std::get<0x6>(s) = _mm_xor_si128(std::get<0x6>(s), a);
728 std::get<0x7>(s) = _mm_xor_si128(std::get<0x7>(s), a);
729 std::get<0x8>(s) = _mm_xor_si128(std::get<0x8>(s), a);
730 std::get<0x9>(s) = _mm_xor_si128(std::get<0x9>(s), a);
731 std::get<0xA>(s) = _mm_xor_si128(std::get<0xA>(s), a);
732 std::get<0xB>(s) = _mm_xor_si128(std::get<0xB>(s), a);
733 std::get<0xC>(s) = _mm_xor_si128(std::get<0xC>(s), a);
734 std::get<0xD>(s) = _mm_xor_si128(std::get<0xD>(s), a);
735 std::get<0xE>(s) = _mm_xor_si128(std::get<0xE>(s), a);
736 std::get<0xF>(s) = _mm_xor_si128(std::get<0xF>(s), a);
740 std::array<__m128i, 16> &s,
const std::array<__m128i, 16> &a)
742 std::get<0x0>(s) = _mm_add_epi32(std::get<0x0>(s), std::get<0x0>(a));
743 std::get<0x1>(s) = _mm_add_epi32(std::get<0x1>(s), std::get<0x1>(a));
744 std::get<0x2>(s) = _mm_add_epi32(std::get<0x2>(s), std::get<0x2>(a));
745 std::get<0x3>(s) = _mm_add_epi32(std::get<0x3>(s), std::get<0x3>(a));
746 std::get<0x4>(s) = _mm_add_epi32(std::get<0x4>(s), std::get<0x4>(a));
747 std::get<0x5>(s) = _mm_add_epi32(std::get<0x5>(s), std::get<0x5>(a));
748 std::get<0x6>(s) = _mm_add_epi32(std::get<0x6>(s), std::get<0x6>(a));
749 std::get<0x7>(s) = _mm_add_epi32(std::get<0x7>(s), std::get<0x7>(a));
750 std::get<0x8>(s) = _mm_add_epi32(std::get<0x8>(s), std::get<0x8>(a));
751 std::get<0x9>(s) = _mm_add_epi32(std::get<0x9>(s), std::get<0x9>(a));
752 std::get<0xA>(s) = _mm_add_epi32(std::get<0xA>(s), std::get<0xA>(a));
753 std::get<0xB>(s) = _mm_add_epi32(std::get<0xB>(s), std::get<0xB>(a));
754 std::get<0xC>(s) = _mm_add_epi32(std::get<0xC>(s), std::get<0xC>(a));
755 std::get<0xD>(s) = _mm_add_epi32(std::get<0xD>(s), std::get<0xD>(a));
756 std::get<0xE>(s) = _mm_add_epi32(std::get<0xE>(s), std::get<0xE>(a));
757 std::get<0xF>(s) = _mm_add_epi32(std::get<0xF>(s), std::get<0xF>(a));
761 std::array<__m128i, 16> &s,
const std::array<__m128i, 16> &a)
763 std::get<0x0>(s) = _mm_add_epi64(std::get<0x0>(s), std::get<0x0>(a));
764 std::get<0x1>(s) = _mm_add_epi64(std::get<0x1>(s), std::get<0x1>(a));
765 std::get<0x2>(s) = _mm_add_epi64(std::get<0x2>(s), std::get<0x2>(a));
766 std::get<0x3>(s) = _mm_add_epi64(std::get<0x3>(s), std::get<0x3>(a));
767 std::get<0x4>(s) = _mm_add_epi64(std::get<0x4>(s), std::get<0x4>(a));
768 std::get<0x5>(s) = _mm_add_epi64(std::get<0x5>(s), std::get<0x5>(a));
769 std::get<0x6>(s) = _mm_add_epi64(std::get<0x6>(s), std::get<0x6>(a));
770 std::get<0x7>(s) = _mm_add_epi64(std::get<0x7>(s), std::get<0x7>(a));
771 std::get<0x8>(s) = _mm_add_epi64(std::get<0x8>(s), std::get<0x8>(a));
772 std::get<0x9>(s) = _mm_add_epi64(std::get<0x9>(s), std::get<0x9>(a));
773 std::get<0xA>(s) = _mm_add_epi64(std::get<0xA>(s), std::get<0xA>(a));
774 std::get<0xB>(s) = _mm_add_epi64(std::get<0xB>(s), std::get<0xB>(a));
775 std::get<0xC>(s) = _mm_add_epi64(std::get<0xC>(s), std::get<0xC>(a));
776 std::get<0xD>(s) = _mm_add_epi64(std::get<0xD>(s), std::get<0xD>(a));
777 std::get<0xE>(s) = _mm_add_epi64(std::get<0xE>(s), std::get<0xE>(a));
778 std::get<0xF>(s) = _mm_add_epi64(std::get<0xF>(s), std::get<0xF>(a));
781 MCKL_INLINE inline void add_epi64(std::array<__m128i, 16> &s,
const __m128i &a)
783 std::get<0x0>(s) = _mm_add_epi64(std::get<0x0>(s), a);
784 std::get<0x1>(s) = _mm_add_epi64(std::get<0x1>(s), a);
785 std::get<0x2>(s) = _mm_add_epi64(std::get<0x2>(s), a);
786 std::get<0x3>(s) = _mm_add_epi64(std::get<0x3>(s), a);
787 std::get<0x4>(s) = _mm_add_epi64(std::get<0x4>(s), a);
788 std::get<0x5>(s) = _mm_add_epi64(std::get<0x5>(s), a);
789 std::get<0x6>(s) = _mm_add_epi64(std::get<0x6>(s), a);
790 std::get<0x7>(s) = _mm_add_epi64(std::get<0x7>(s), a);
791 std::get<0x8>(s) = _mm_add_epi64(std::get<0x8>(s), a);
792 std::get<0x9>(s) = _mm_add_epi64(std::get<0x9>(s), a);
793 std::get<0xA>(s) = _mm_add_epi64(std::get<0xA>(s), a);
794 std::get<0xB>(s) = _mm_add_epi64(std::get<0xB>(s), a);
795 std::get<0xC>(s) = _mm_add_epi64(std::get<0xC>(s), a);
796 std::get<0xD>(s) = _mm_add_epi64(std::get<0xD>(s), a);
797 std::get<0xE>(s) = _mm_add_epi64(std::get<0xE>(s), a);
798 std::get<0xF>(s) = _mm_add_epi64(std::get<0xF>(s), a);
801 MCKL_INLINE inline void mul_epu32(
const std::array<__m128i, 16> &s,
802 const __m128i &a, std::array<__m128i, 16> &t)
804 std::get<0x0>(t) = _mm_mul_epu32(std::get<0x0>(s), a);
805 std::get<0x1>(t) = _mm_mul_epu32(std::get<0x1>(s), a);
806 std::get<0x2>(t) = _mm_mul_epu32(std::get<0x2>(s), a);
807 std::get<0x3>(t) = _mm_mul_epu32(std::get<0x3>(s), a);
808 std::get<0x4>(t) = _mm_mul_epu32(std::get<0x4>(s), a);
809 std::get<0x5>(t) = _mm_mul_epu32(std::get<0x5>(s), a);
810 std::get<0x6>(t) = _mm_mul_epu32(std::get<0x6>(s), a);
811 std::get<0x7>(t) = _mm_mul_epu32(std::get<0x7>(s), a);
812 std::get<0x8>(t) = _mm_mul_epu32(std::get<0x8>(s), a);
813 std::get<0x9>(t) = _mm_mul_epu32(std::get<0x9>(s), a);
814 std::get<0xA>(t) = _mm_mul_epu32(std::get<0xA>(s), a);
815 std::get<0xB>(t) = _mm_mul_epu32(std::get<0xB>(s), a);
816 std::get<0xC>(t) = _mm_mul_epu32(std::get<0xC>(s), a);
817 std::get<0xD>(t) = _mm_mul_epu32(std::get<0xD>(s), a);
818 std::get<0xE>(t) = _mm_mul_epu32(std::get<0xE>(s), a);
819 std::get<0xF>(t) = _mm_mul_epu32(std::get<0xF>(s), a);
822 MCKL_INLINE inline void add_ps(std::array<__m128i, 16> &s,
const __m128i &a)
824 std::get<0x0>(s) = _mm_castps_si128(
825 _mm_add_ps(_mm_castsi128_ps(std::get<0x0>(s)), _mm_castsi128_ps(a)));
826 std::get<0x1>(s) = _mm_castps_si128(
827 _mm_add_ps(_mm_castsi128_ps(std::get<0x1>(s)), _mm_castsi128_ps(a)));
828 std::get<0x2>(s) = _mm_castps_si128(
829 _mm_add_ps(_mm_castsi128_ps(std::get<0x2>(s)), _mm_castsi128_ps(a)));
830 std::get<0x3>(s) = _mm_castps_si128(
831 _mm_add_ps(_mm_castsi128_ps(std::get<0x3>(s)), _mm_castsi128_ps(a)));
832 std::get<0x4>(s) = _mm_castps_si128(
833 _mm_add_ps(_mm_castsi128_ps(std::get<0x4>(s)), _mm_castsi128_ps(a)));
834 std::get<0x5>(s) = _mm_castps_si128(
835 _mm_add_ps(_mm_castsi128_ps(std::get<0x5>(s)), _mm_castsi128_ps(a)));
836 std::get<0x6>(s) = _mm_castps_si128(
837 _mm_add_ps(_mm_castsi128_ps(std::get<0x6>(s)), _mm_castsi128_ps(a)));
838 std::get<0x7>(s) = _mm_castps_si128(
839 _mm_add_ps(_mm_castsi128_ps(std::get<0x7>(s)), _mm_castsi128_ps(a)));
840 std::get<0x8>(s) = _mm_castps_si128(
841 _mm_add_ps(_mm_castsi128_ps(std::get<0x8>(s)), _mm_castsi128_ps(a)));
842 std::get<0x9>(s) = _mm_castps_si128(
843 _mm_add_ps(_mm_castsi128_ps(std::get<0x9>(s)), _mm_castsi128_ps(a)));
844 std::get<0xA>(s) = _mm_castps_si128(
845 _mm_add_ps(_mm_castsi128_ps(std::get<0xA>(s)), _mm_castsi128_ps(a)));
846 std::get<0xB>(s) = _mm_castps_si128(
847 _mm_add_ps(_mm_castsi128_ps(std::get<0xB>(s)), _mm_castsi128_ps(a)));
848 std::get<0xC>(s) = _mm_castps_si128(
849 _mm_add_ps(_mm_castsi128_ps(std::get<0xC>(s)), _mm_castsi128_ps(a)));
850 std::get<0xD>(s) = _mm_castps_si128(
851 _mm_add_ps(_mm_castsi128_ps(std::get<0xD>(s)), _mm_castsi128_ps(a)));
852 std::get<0xE>(s) = _mm_castps_si128(
853 _mm_add_ps(_mm_castsi128_ps(std::get<0xE>(s)), _mm_castsi128_ps(a)));
854 std::get<0xF>(s) = _mm_castps_si128(
855 _mm_add_ps(_mm_castsi128_ps(std::get<0xF>(s)), _mm_castsi128_ps(a)));
858 MCKL_INLINE inline void mul_ps(std::array<__m128i, 16> &s,
const __m128i &a)
860 std::get<0x0>(s) = _mm_castps_si128(
861 _mm_mul_ps(_mm_castsi128_ps(std::get<0x0>(s)), _mm_castsi128_ps(a)));
862 std::get<0x1>(s) = _mm_castps_si128(
863 _mm_mul_ps(_mm_castsi128_ps(std::get<0x1>(s)), _mm_castsi128_ps(a)));
864 std::get<0x2>(s) = _mm_castps_si128(
865 _mm_mul_ps(_mm_castsi128_ps(std::get<0x2>(s)), _mm_castsi128_ps(a)));
866 std::get<0x3>(s) = _mm_castps_si128(
867 _mm_mul_ps(_mm_castsi128_ps(std::get<0x3>(s)), _mm_castsi128_ps(a)));
868 std::get<0x4>(s) = _mm_castps_si128(
869 _mm_mul_ps(_mm_castsi128_ps(std::get<0x4>(s)), _mm_castsi128_ps(a)));
870 std::get<0x5>(s) = _mm_castps_si128(
871 _mm_mul_ps(_mm_castsi128_ps(std::get<0x5>(s)), _mm_castsi128_ps(a)));
872 std::get<0x6>(s) = _mm_castps_si128(
873 _mm_mul_ps(_mm_castsi128_ps(std::get<0x6>(s)), _mm_castsi128_ps(a)));
874 std::get<0x7>(s) = _mm_castps_si128(
875 _mm_mul_ps(_mm_castsi128_ps(std::get<0x7>(s)), _mm_castsi128_ps(a)));
876 std::get<0x8>(s) = _mm_castps_si128(
877 _mm_mul_ps(_mm_castsi128_ps(std::get<0x8>(s)), _mm_castsi128_ps(a)));
878 std::get<0x9>(s) = _mm_castps_si128(
879 _mm_mul_ps(_mm_castsi128_ps(std::get<0x9>(s)), _mm_castsi128_ps(a)));
880 std::get<0xA>(s) = _mm_castps_si128(
881 _mm_mul_ps(_mm_castsi128_ps(std::get<0xA>(s)), _mm_castsi128_ps(a)));
882 std::get<0xB>(s) = _mm_castps_si128(
883 _mm_mul_ps(_mm_castsi128_ps(std::get<0xB>(s)), _mm_castsi128_ps(a)));
884 std::get<0xC>(s) = _mm_castps_si128(
885 _mm_mul_ps(_mm_castsi128_ps(std::get<0xC>(s)), _mm_castsi128_ps(a)));
886 std::get<0xD>(s) = _mm_castps_si128(
887 _mm_mul_ps(_mm_castsi128_ps(std::get<0xD>(s)), _mm_castsi128_ps(a)));
888 std::get<0xE>(s) = _mm_castps_si128(
889 _mm_mul_ps(_mm_castsi128_ps(std::get<0xE>(s)), _mm_castsi128_ps(a)));
890 std::get<0xF>(s) = _mm_castps_si128(
891 _mm_mul_ps(_mm_castsi128_ps(std::get<0xF>(s)), _mm_castsi128_ps(a)));
894 MCKL_INLINE inline void add_pd(std::array<__m128i, 16> &s,
const __m128i &a)
896 std::get<0x0>(s) = _mm_castpd_si128(
897 _mm_add_pd(_mm_castsi128_pd(std::get<0x0>(s)), _mm_castsi128_pd(a)));
898 std::get<0x1>(s) = _mm_castpd_si128(
899 _mm_add_pd(_mm_castsi128_pd(std::get<0x1>(s)), _mm_castsi128_pd(a)));
900 std::get<0x2>(s) = _mm_castpd_si128(
901 _mm_add_pd(_mm_castsi128_pd(std::get<0x2>(s)), _mm_castsi128_pd(a)));
902 std::get<0x3>(s) = _mm_castpd_si128(
903 _mm_add_pd(_mm_castsi128_pd(std::get<0x3>(s)), _mm_castsi128_pd(a)));
904 std::get<0x4>(s) = _mm_castpd_si128(
905 _mm_add_pd(_mm_castsi128_pd(std::get<0x4>(s)), _mm_castsi128_pd(a)));
906 std::get<0x5>(s) = _mm_castpd_si128(
907 _mm_add_pd(_mm_castsi128_pd(std::get<0x5>(s)), _mm_castsi128_pd(a)));
908 std::get<0x6>(s) = _mm_castpd_si128(
909 _mm_add_pd(_mm_castsi128_pd(std::get<0x6>(s)), _mm_castsi128_pd(a)));
910 std::get<0x7>(s) = _mm_castpd_si128(
911 _mm_add_pd(_mm_castsi128_pd(std::get<0x7>(s)), _mm_castsi128_pd(a)));
912 std::get<0x8>(s) = _mm_castpd_si128(
913 _mm_add_pd(_mm_castsi128_pd(std::get<0x8>(s)), _mm_castsi128_pd(a)));
914 std::get<0x9>(s) = _mm_castpd_si128(
915 _mm_add_pd(_mm_castsi128_pd(std::get<0x9>(s)), _mm_castsi128_pd(a)));
916 std::get<0xA>(s) = _mm_castpd_si128(
917 _mm_add_pd(_mm_castsi128_pd(std::get<0xA>(s)), _mm_castsi128_pd(a)));
918 std::get<0xB>(s) = _mm_castpd_si128(
919 _mm_add_pd(_mm_castsi128_pd(std::get<0xB>(s)), _mm_castsi128_pd(a)));
920 std::get<0xC>(s) = _mm_castpd_si128(
921 _mm_add_pd(_mm_castsi128_pd(std::get<0xC>(s)), _mm_castsi128_pd(a)));
922 std::get<0xD>(s) = _mm_castpd_si128(
923 _mm_add_pd(_mm_castsi128_pd(std::get<0xD>(s)), _mm_castsi128_pd(a)));
924 std::get<0xE>(s) = _mm_castpd_si128(
925 _mm_add_pd(_mm_castsi128_pd(std::get<0xE>(s)), _mm_castsi128_pd(a)));
926 std::get<0xF>(s) = _mm_castpd_si128(
927 _mm_add_pd(_mm_castsi128_pd(std::get<0xF>(s)), _mm_castsi128_pd(a)));
931 std::array<__m128i, 16> &s,
const std::array<__m128i, 16> &a)
934 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x0>(s)),
935 _mm_castsi128_pd(std::get<0x0>(a))));
937 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x1>(s)),
938 _mm_castsi128_pd(std::get<0x1>(a))));
940 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x2>(s)),
941 _mm_castsi128_pd(std::get<0x2>(a))));
943 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x3>(s)),
944 _mm_castsi128_pd(std::get<0x3>(a))));
946 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x4>(s)),
947 _mm_castsi128_pd(std::get<0x4>(a))));
949 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x5>(s)),
950 _mm_castsi128_pd(std::get<0x5>(a))));
952 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x6>(s)),
953 _mm_castsi128_pd(std::get<0x6>(a))));
955 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x7>(s)),
956 _mm_castsi128_pd(std::get<0x7>(a))));
958 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x8>(s)),
959 _mm_castsi128_pd(std::get<0x8>(a))));
961 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0x9>(s)),
962 _mm_castsi128_pd(std::get<0x9>(a))));
964 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0xA>(s)),
965 _mm_castsi128_pd(std::get<0xA>(a))));
967 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0xB>(s)),
968 _mm_castsi128_pd(std::get<0xB>(a))));
970 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0xC>(s)),
971 _mm_castsi128_pd(std::get<0xC>(a))));
973 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0xD>(s)),
974 _mm_castsi128_pd(std::get<0xD>(a))));
976 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0xE>(s)),
977 _mm_castsi128_pd(std::get<0xE>(a))));
979 _mm_castpd_si128(_mm_add_pd(_mm_castsi128_pd(std::get<0xF>(s)),
980 _mm_castsi128_pd(std::get<0xF>(a))));
983 MCKL_INLINE inline void sub_pd(std::array<__m128i, 16> &s,
const __m128i &a)
985 std::get<0x0>(s) = _mm_castpd_si128(
986 _mm_sub_pd(_mm_castsi128_pd(std::get<0x0>(s)), _mm_castsi128_pd(a)));
987 std::get<0x1>(s) = _mm_castpd_si128(
988 _mm_sub_pd(_mm_castsi128_pd(std::get<0x1>(s)), _mm_castsi128_pd(a)));
989 std::get<0x2>(s) = _mm_castpd_si128(
990 _mm_sub_pd(_mm_castsi128_pd(std::get<0x2>(s)), _mm_castsi128_pd(a)));
991 std::get<0x3>(s) = _mm_castpd_si128(
992 _mm_sub_pd(_mm_castsi128_pd(std::get<0x3>(s)), _mm_castsi128_pd(a)));
993 std::get<0x4>(s) = _mm_castpd_si128(
994 _mm_sub_pd(_mm_castsi128_pd(std::get<0x4>(s)), _mm_castsi128_pd(a)));
995 std::get<0x5>(s) = _mm_castpd_si128(
996 _mm_sub_pd(_mm_castsi128_pd(std::get<0x5>(s)), _mm_castsi128_pd(a)));
997 std::get<0x6>(s) = _mm_castpd_si128(
998 _mm_sub_pd(_mm_castsi128_pd(std::get<0x6>(s)), _mm_castsi128_pd(a)));
999 std::get<0x7>(s) = _mm_castpd_si128(
1000 _mm_sub_pd(_mm_castsi128_pd(std::get<0x7>(s)), _mm_castsi128_pd(a)));
1001 std::get<0x8>(s) = _mm_castpd_si128(
1002 _mm_sub_pd(_mm_castsi128_pd(std::get<0x8>(s)), _mm_castsi128_pd(a)));
1003 std::get<0x9>(s) = _mm_castpd_si128(
1004 _mm_sub_pd(_mm_castsi128_pd(std::get<0x9>(s)), _mm_castsi128_pd(a)));
1005 std::get<0xA>(s) = _mm_castpd_si128(
1006 _mm_sub_pd(_mm_castsi128_pd(std::get<0xA>(s)), _mm_castsi128_pd(a)));
1007 std::get<0xB>(s) = _mm_castpd_si128(
1008 _mm_sub_pd(_mm_castsi128_pd(std::get<0xB>(s)), _mm_castsi128_pd(a)));
1009 std::get<0xC>(s) = _mm_castpd_si128(
1010 _mm_sub_pd(_mm_castsi128_pd(std::get<0xC>(s)), _mm_castsi128_pd(a)));
1011 std::get<0xD>(s) = _mm_castpd_si128(
1012 _mm_sub_pd(_mm_castsi128_pd(std::get<0xD>(s)), _mm_castsi128_pd(a)));
1013 std::get<0xE>(s) = _mm_castpd_si128(
1014 _mm_sub_pd(_mm_castsi128_pd(std::get<0xE>(s)), _mm_castsi128_pd(a)));
1015 std::get<0xF>(s) = _mm_castpd_si128(
1016 _mm_sub_pd(_mm_castsi128_pd(std::get<0xF>(s)), _mm_castsi128_pd(a)));
1019 MCKL_INLINE inline void mul_pd(std::array<__m128i, 16> &s,
const __m128i &a)
1021 std::get<0x0>(s) = _mm_castpd_si128(
1022 _mm_mul_pd(_mm_castsi128_pd(std::get<0x0>(s)), _mm_castsi128_pd(a)));
1023 std::get<0x1>(s) = _mm_castpd_si128(
1024 _mm_mul_pd(_mm_castsi128_pd(std::get<0x1>(s)), _mm_castsi128_pd(a)));
1025 std::get<0x2>(s) = _mm_castpd_si128(
1026 _mm_mul_pd(_mm_castsi128_pd(std::get<0x2>(s)), _mm_castsi128_pd(a)));
1027 std::get<0x3>(s) = _mm_castpd_si128(
1028 _mm_mul_pd(_mm_castsi128_pd(std::get<0x3>(s)), _mm_castsi128_pd(a)));
1029 std::get<0x4>(s) = _mm_castpd_si128(
1030 _mm_mul_pd(_mm_castsi128_pd(std::get<0x4>(s)), _mm_castsi128_pd(a)));
1031 std::get<0x5>(s) = _mm_castpd_si128(
1032 _mm_mul_pd(_mm_castsi128_pd(std::get<0x5>(s)), _mm_castsi128_pd(a)));
1033 std::get<0x6>(s) = _mm_castpd_si128(
1034 _mm_mul_pd(_mm_castsi128_pd(std::get<0x6>(s)), _mm_castsi128_pd(a)));
1035 std::get<0x7>(s) = _mm_castpd_si128(
1036 _mm_mul_pd(_mm_castsi128_pd(std::get<0x7>(s)), _mm_castsi128_pd(a)));
1037 std::get<0x8>(s) = _mm_castpd_si128(
1038 _mm_mul_pd(_mm_castsi128_pd(std::get<0x8>(s)), _mm_castsi128_pd(a)));
1039 std::get<0x9>(s) = _mm_castpd_si128(
1040 _mm_mul_pd(_mm_castsi128_pd(std::get<0x9>(s)), _mm_castsi128_pd(a)));
1041 std::get<0xA>(s) = _mm_castpd_si128(
1042 _mm_mul_pd(_mm_castsi128_pd(std::get<0xA>(s)), _mm_castsi128_pd(a)));
1043 std::get<0xB>(s) = _mm_castpd_si128(
1044 _mm_mul_pd(_mm_castsi128_pd(std::get<0xB>(s)), _mm_castsi128_pd(a)));
1045 std::get<0xC>(s) = _mm_castpd_si128(
1046 _mm_mul_pd(_mm_castsi128_pd(std::get<0xC>(s)), _mm_castsi128_pd(a)));
1047 std::get<0xD>(s) = _mm_castpd_si128(
1048 _mm_mul_pd(_mm_castsi128_pd(std::get<0xD>(s)), _mm_castsi128_pd(a)));
1049 std::get<0xE>(s) = _mm_castpd_si128(
1050 _mm_mul_pd(_mm_castsi128_pd(std::get<0xE>(s)), _mm_castsi128_pd(a)));
1051 std::get<0xF>(s) = _mm_castpd_si128(
1052 _mm_mul_pd(_mm_castsi128_pd(std::get<0xF>(s)), _mm_castsi128_pd(a)));
1056 std::array<__m128i, 16> &s,
const std::array<__m128i, 16> &a)
1059 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x0>(s)),
1060 _mm_castsi128_pd(std::get<0x0>(a))));
1062 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x1>(s)),
1063 _mm_castsi128_pd(std::get<0x1>(a))));
1065 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x2>(s)),
1066 _mm_castsi128_pd(std::get<0x2>(a))));
1068 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x3>(s)),
1069 _mm_castsi128_pd(std::get<0x3>(a))));
1071 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x4>(s)),
1072 _mm_castsi128_pd(std::get<0x4>(a))));
1074 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x5>(s)),
1075 _mm_castsi128_pd(std::get<0x5>(a))));
1077 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x6>(s)),
1078 _mm_castsi128_pd(std::get<0x6>(a))));
1080 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x7>(s)),
1081 _mm_castsi128_pd(std::get<0x7>(a))));
1083 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x8>(s)),
1084 _mm_castsi128_pd(std::get<0x8>(a))));
1086 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0x9>(s)),
1087 _mm_castsi128_pd(std::get<0x9>(a))));
1089 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0xA>(s)),
1090 _mm_castsi128_pd(std::get<0xA>(a))));
1092 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0xB>(s)),
1093 _mm_castsi128_pd(std::get<0xB>(a))));
1095 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0xC>(s)),
1096 _mm_castsi128_pd(std::get<0xC>(a))));
1098 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0xD>(s)),
1099 _mm_castsi128_pd(std::get<0xD>(a))));
1101 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0xE>(s)),
1102 _mm_castsi128_pd(std::get<0xE>(a))));
1104 _mm_castpd_si128(_mm_mul_pd(_mm_castsi128_pd(std::get<0xF>(s)),
1105 _mm_castsi128_pd(std::get<0xF>(a))));
1114 #endif // MCKL_INTERNAL_SSE2_OP_HPP #define MCKL_PUSH_GCC_WARNING(warning)
#define MCKL_POP_GCC_WARNING