Update pshiftleft to pass the shift as a true compile-time integer.

This commit is contained in:
Gael Guennebaud
2018-11-27 22:57:30 +01:00
parent fa7fd61eda
commit a1a5fbbd21
4 changed files with 11 additions and 9 deletions

View File

@@ -256,12 +256,12 @@ template<> EIGEN_STRONG_INLINE Packet8f pselect<Packet8f>(const Packet8f& mask,
template<> EIGEN_STRONG_INLINE Packet4d pselect<Packet4d>(const Packet4d& mask, const Packet4d& a, const Packet4d& b)
{ return _mm256_blendv_pd(b,a,mask); }
template<> EIGEN_STRONG_INLINE Packet8i pshiftleft<Packet8i>(const Packet8i& a, int n) {
template<int N> EIGEN_STRONG_INLINE Packet8i pshiftleft(const Packet8i& a) {
#ifdef EIGEN_VECTORIZE_AVX2
return _mm256_slli_epi32(a, n);
return _mm256_slli_epi32(a, N);
#else
__m128i lo = _mm_slli_epi32(_mm256_extractf128_si256(a, 0), n);
__m128i hi = _mm_slli_epi32(_mm256_extractf128_si256(a, 1), n);
__m128i lo = _mm_slli_epi32(_mm256_extractf128_si256(a, 0), N);
__m128i hi = _mm_slli_epi32(_mm256_extractf128_si256(a, 1), N);
return _mm256_insertf128_si256(_mm256_castsi128_si256(lo), (hi), 1);
#endif
}