From ddbbd7065d4e7dc221ecdc45f36db8745e433bec Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 18 Aug 2010 09:35:55 +0200 Subject: [PATCH] * disable unalignment detection when vectorization is not enabled * revert MapBase unalignment detection --- Eigen/src/Core/MapBase.h | 2 +- test/geo_quaternion.cpp | 2 ++ test/map.cpp | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Eigen/src/Core/MapBase.h b/Eigen/src/Core/MapBase.h index f7f9ccdb7..6b1a25ce2 100644 --- a/Eigen/src/Core/MapBase.h +++ b/Eigen/src/Core/MapBase.h @@ -189,7 +189,7 @@ template class MapBase EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(ei_traits::Flags&PacketAccessBit, ei_inner_stride_at_compile_time::ret==1), PACKET_ACCESS_REQUIRES_TO_HAVE_INNER_STRIDE_FIXED_TO_1); - ei_assert(EIGEN_IMPLIES(ei_traits::Flags&AlignedBit, (size_t(m_data) % 16 == 0)) + ei_assert(EIGEN_IMPLIES(ei_traits::Flags&AlignedBit, (size_t(m_data) % (sizeof(Scalar)*ei_packet_traits::size)) == 0) && "data is not aligned"); } diff --git a/test/geo_quaternion.cpp b/test/geo_quaternion.cpp index 953ea158a..bfe15320a 100644 --- a/test/geo_quaternion.cpp +++ b/test/geo_quaternion.cpp @@ -134,7 +134,9 @@ template void mapQuaternion(void){ VERIFY_IS_APPROX(q1.coeffs(), q2.coeffs()); VERIFY_IS_APPROX(q1.coeffs(), q3.coeffs()); + #ifdef EIGEN_VECTORIZE VERIFY_RAISES_ASSERT((MQuaternionA(array3unaligned))); + #endif } void test_geo_quaternion() diff --git a/test/map.cpp b/test/map.cpp index fa4427ba3..9b0301ec0 100644 --- a/test/map.cpp +++ b/test/map.cpp @@ -45,7 +45,9 @@ template void map_class_vector(const VectorType& m) VectorType ma3 = Map(array3unaligned, size); VERIFY_IS_EQUAL(ma1, ma2); VERIFY_IS_EQUAL(ma1, ma3); + #ifdef EIGEN_VECTORIZE VERIFY_RAISES_ASSERT((Map(array3unaligned, size))) + #endif ei_aligned_delete(array1, size); ei_aligned_delete(array2, size);