From 91716f03a782992137f2e833f5fbd8fff6000ea6 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Fri, 21 Sep 2018 14:32:24 +0200 Subject: [PATCH] Fix vectorization logic unit test for AVX512 --- test/vectorization_logic.cpp | 37 +++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/test/vectorization_logic.cpp b/test/vectorization_logic.cpp index 2d0a8ceb6..8efee92a1 100644 --- a/test/vectorization_logic.cpp +++ b/test/vectorization_logic.cpp @@ -37,6 +37,7 @@ using internal::demangle_unrolling; template bool test_assign(const Dst&, const Src&, int traversal, int unrolling) { + EIGEN_PREDICATE_SAME_MATRIX_SIZE(Dst,Src); typedef internal::copy_using_evaluator_traits,internal::evaluator, internal::assign_op > traits; bool res = traits::Traversal==traversal; if(unrolling==InnerUnrolling+CompleteUnrolling) @@ -61,6 +62,7 @@ bool test_assign(const Dst&, const Src&, int traversal, int unrolling) template bool test_assign(int traversal, int unrolling) { + EIGEN_PREDICATE_SAME_MATRIX_SIZE(Dst,Src); typedef internal::copy_using_evaluator_traits,internal::evaluator, internal::assign_op > traits; bool res = traits::Traversal==traversal && traits::Unrolling==unrolling; if(!res) @@ -117,26 +119,26 @@ struct vectorization_logic typedef Matrix VectorX; typedef Matrix MatrixXX; typedef Matrix Matrix11; - typedef Matrix Matrix22; + typedef Matrix Matrix22; typedef Matrix Matrix44; typedef Matrix Matrix44u; typedef Matrix Matrix44c; typedef Matrix Matrix44r; typedef Matrix Matrix1; typedef Matrix Matrix1u; // this type is made such that it can only be vectorized when viewed as a linear 1D vector typedef Matrix Matrix3; #if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT @@ -202,7 +204,7 @@ struct vectorization_logic VERIFY(test_assign(Matrix11(), Matrix11()+Matrix11(),InnerVectorizedTraversal,CompleteUnrolling)); - VERIFY(test_assign(Matrix11(),Matrix().template block(2,3)+Matrix().template block(8,4), + VERIFY(test_assign(Matrix11(),Matrix().template block(2,3)+Matrix().template block(3,2), (EIGEN_UNALIGNED_VECTORIZE) ? InnerVectorizedTraversal : DefaultTraversal, CompleteUnrolling|InnerUnrolling)); VERIFY(test_assign(Vector1(),Matrix11()*Vector1(), @@ -294,19 +296,19 @@ struct vectorization_logic_half // typedef Matrix Matrix44r; typedef Matrix Matrix1; typedef Matrix Matrix1u; // this type is made such that it can only be vectorized when viewed as a linear 1D vector typedef Matrix Matrix3; #if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT @@ -359,7 +361,8 @@ struct vectorization_logic_half NoUnrolling)); VERIFY(test_assign(Matrix11(),Matrix().template block(2,3)+Matrix().template block(8,4), - EIGEN_UNALIGNED_VECTORIZE ? InnerVectorizedTraversal : DefaultTraversal,PacketSize>4?InnerUnrolling:CompleteUnrolling)); + EIGEN_UNALIGNED_VECTORIZE ? InnerVectorizedTraversal : DefaultTraversal,InnerUnrolling+CompleteUnrolling)); + VERIFY(test_assign(Vector1(),Matrix11()*Vector1(), InnerVectorizedTraversal,CompleteUnrolling)); @@ -391,10 +394,10 @@ struct vectorization_logic_half VERIFY((test_assign< Map, AlignedMax, InnerStride<3*PacketSize> >, Matrix - >(DefaultTraversal,CompleteUnrolling))); + >(DefaultTraversal,PacketSize>4?InnerUnrolling:CompleteUnrolling))); VERIFY((test_assign(Matrix57(), Matrix()*Matrix(), - InnerVectorizedTraversal, InnerUnrolling|CompleteUnrolling))); + InnerVectorizedTraversal, InnerUnrolling+CompleteUnrolling))); #endif } };