aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/vectorization_logic.cpp
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-02-26 20:12:51 -0500
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-02-26 20:12:51 -0500
commitb1f666d007ee4dc22f48dd65f900ee3659dd1f7d (patch)
tree29c6de6cb4b2bf92a9f54b1f67c7ef5aa2773b24 /test/vectorization_logic.cpp
parent32115bff1e2b99641e09e0fe182d2d5cc11413ec (diff)
Fix Map-with-Stride and cover it by new unit tests.
Diffstat (limited to 'test/vectorization_logic.cpp')
-rw-r--r--test/vectorization_logic.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/vectorization_logic.cpp b/test/vectorization_logic.cpp
index 5d86df7b3..ae9911831 100644
--- a/test/vectorization_logic.cpp
+++ b/test/vectorization_logic.cpp
@@ -33,6 +33,14 @@ bool test_assign(const Dst&, const Src&, int traversal, int unrolling)
&& ei_assign_traits<Dst,Src>::Unrolling==unrolling;
}
+template<typename Dst, typename Src>
+bool test_assign(int traversal, int unrolling)
+{
+ ei_assign_traits<Dst,Src>::debug();
+ return ei_assign_traits<Dst,Src>::Traversal==traversal
+ && ei_assign_traits<Dst,Src>::Unrolling==unrolling;
+}
+
template<typename Xpr>
bool test_redux(const Xpr&, int traversal, int unrolling)
{
@@ -86,6 +94,15 @@ void test_vectorization_logic()
VERIFY(test_assign(MatrixXf(10,10),MatrixXf(20,20).block(10,10,2,3),
SliceVectorizedTraversal,NoUnrolling));
+ VERIFY((test_assign<
+ Map<Matrix<float,4,8>, Aligned, OuterStride<12> >,
+ Matrix<float,4,8>
+ >(InnerVectorizedTraversal,CompleteUnrolling)));
+
+ VERIFY((test_assign<
+ Map<Matrix<float,4,8>, Aligned, InnerStride<12> >,
+ Matrix<float,4,8>
+ >(DefaultTraversal,CompleteUnrolling)));
VERIFY(test_redux(VectorXf(10),
LinearVectorizedTraversal,NoUnrolling));