Remove aligned-on-scalar assert and fallback to non vectorized path at runtime (first_aligned already had this runtime guard)

This commit is contained in:
Gael Guennebaud
2015-06-14 15:04:07 +02:00
parent e5b490b654
commit 972a535288
3 changed files with 35 additions and 19 deletions

View File

@@ -124,7 +124,6 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma
: Base(cast_to_pointer_type(dataPtr)), m_stride(stride)
{
PlainObjectType::Base::_check_template_params();
checkPointer(dataPtr);
}
/** Constructor in the dynamic-size vector case.
@@ -138,7 +137,6 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma
: Base(cast_to_pointer_type(dataPtr), size), m_stride(stride)
{
PlainObjectType::Base::_check_template_params();
checkPointer(dataPtr);
}
/** Constructor in the dynamic-size matrix case.
@@ -153,24 +151,11 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma
: Base(cast_to_pointer_type(dataPtr), rows, cols), m_stride(stride)
{
PlainObjectType::Base::_check_template_params();
checkPointer(dataPtr);
}
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map)
protected:
static void checkPointer(const Scalar* dataPtr)
{
enum {
MightTryToAlignOnScalar = internal::packet_traits<Scalar>::AlignedOnScalar
&& bool(internal::traits<Map>::Flags&PacketAccessBit)
&& internal::is_lvalue<Map>::value
};
eigen_assert(EIGEN_IMPLIES(bool(MightTryToAlignOnScalar), (size_t(dataPtr) % sizeof(Scalar)) == 0)
&& "input pointer is not aligned on scalar boundary, e.g., use \"EIGEN_ALIGN8 T ptr[N];\" for double or complex<float>");
}
StrideType m_stride;
};