BOOST_FORCEINLINE __m256 shuffle_pairs(__m256 const lower, __m256 const upper) { return _mm256_castpd_ps( _mm256_shuffle_pd( _mm256_castps_pd(lower), _mm256_castps_pd(upper) , BOOST_SIMD_MM_SHUFFLE_PD(i3, i2, i1, i0) ) ); }
template<> INLINE avxb shuffle<0,1,0,1>(const avxb& b) { return _mm256_castpd_ps(_mm256_movedup_pd(_mm256_castps_pd(b))); }
template<> INLINE const avxi shuffle<0, 1, 0, 1>( const avxi& b ) { return _mm256_castps_si256(_mm256_castpd_ps(_mm256_movedup_pd(_mm256_castps_pd(_mm256_castsi256_ps(b))))); }