diff --git a/Eigen/src/Core/arch/AVX/PacketMath.h b/Eigen/src/Core/arch/AVX/PacketMath.h index fc525bf66..cca91807a 100644 --- a/Eigen/src/Core/arch/AVX/PacketMath.h +++ b/Eigen/src/Core/arch/AVX/PacketMath.h @@ -276,8 +276,6 @@ template<> struct packet_traits : default_packet_traits HasTranspose = 0, HasNegate = 0, HasSqrt = 0, - HasMul = 0, - HasAbs2 = 0, HasCmp = 1, HasShift = 1 }; @@ -662,6 +660,10 @@ EIGEN_STRONG_INLINE Packet4l pmul(const Packet4l& a, const Packet4l& b __m256i high = _mm256_slli_epi64(_mm256_add_epi64(mul1, mul2), 32); return _mm256_add_epi64(high, mul3); } +template <> +EIGEN_STRONG_INLINE Packet4ul pmul(const Packet4ul& a, const Packet4ul& b) { + return (Packet4ul)pmul((Packet4l)a, (Packet4l)b); +} #endif template<> EIGEN_STRONG_INLINE Packet8f pset1(const float& from) { return _mm256_set1_ps(from); } diff --git a/test/array_cwise.cpp b/test/array_cwise.cpp index 1ddd22b32..f437c7667 100644 --- a/test/array_cwise.cpp +++ b/test/array_cwise.cpp @@ -476,7 +476,7 @@ template void array(const ArrayType& m) // reductions VERIFY_IS_APPROX(m1.abs().colwise().sum().sum(), m1.abs().sum()); VERIFY_IS_APPROX(m1.abs().rowwise().sum().sum(), m1.abs().sum()); - using std::abs; + using numext::abs; VERIFY_IS_MUCH_SMALLER_THAN(abs(m1.colwise().sum().sum() - m1.sum()), m1.abs().sum()); VERIFY_IS_MUCH_SMALLER_THAN(abs(m1.rowwise().sum().sum() - m1.sum()), m1.abs().sum()); if (!internal::isMuchSmallerThan(abs(m1.sum() - (m1+m2).sum()), m1.abs().sum(), test_precision())) @@ -587,7 +587,7 @@ template void array(const ArrayType& m) template void comparisons(const ArrayType& m) { - using std::abs; + using numext::abs; typedef typename ArrayType::Scalar Scalar; typedef typename NumTraits::Real RealScalar; @@ -709,7 +709,7 @@ template void comparisons(const ArrayType& m) template void array_real(const ArrayType& m) { - using std::abs; + using numext::abs; using std::sqrt; typedef typename ArrayType::Scalar Scalar; typedef typename NumTraits::Real RealScalar; @@ -1251,7 +1251,8 @@ EIGEN_DECLARE_TEST(array_cwise) CALL_SUBTEST_6( array_integer(Array(internal::random(1,EIGEN_TEST_MAX_SIZE), internal::random(1,EIGEN_TEST_MAX_SIZE))) ); CALL_SUBTEST_7( signed_shift_test(ArrayXXi(internal::random(1, EIGEN_TEST_MAX_SIZE), internal::random(1, EIGEN_TEST_MAX_SIZE)))); CALL_SUBTEST_7( signed_shift_test(Array(internal::random(1, EIGEN_TEST_MAX_SIZE), internal::random(1, EIGEN_TEST_MAX_SIZE)))); - + CALL_SUBTEST_8( array(Array(internal::random(1, EIGEN_TEST_MAX_SIZE), internal::random(1, EIGEN_TEST_MAX_SIZE)))); + CALL_SUBTEST_8( array(Array(internal::random(1, EIGEN_TEST_MAX_SIZE), internal::random(1, EIGEN_TEST_MAX_SIZE)))); } for(int i = 0; i < g_repeat; i++) { CALL_SUBTEST_1( comparisons(Array()) );