mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 11:49:02 +08:00
Relax aligned-on-scalar assert as in the 3.2 branch
This commit is contained in:
parent
84d103bee8
commit
91b64a9c65
@ -124,6 +124,7 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma
|
|||||||
: Base(cast_to_pointer_type(dataPtr)), m_stride(stride)
|
: Base(cast_to_pointer_type(dataPtr)), m_stride(stride)
|
||||||
{
|
{
|
||||||
PlainObjectType::Base::_check_template_params();
|
PlainObjectType::Base::_check_template_params();
|
||||||
|
checkPointer(dataPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Constructor in the dynamic-size vector case.
|
/** Constructor in the dynamic-size vector case.
|
||||||
@ -137,6 +138,7 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma
|
|||||||
: Base(cast_to_pointer_type(dataPtr), size), m_stride(stride)
|
: Base(cast_to_pointer_type(dataPtr), size), m_stride(stride)
|
||||||
{
|
{
|
||||||
PlainObjectType::Base::_check_template_params();
|
PlainObjectType::Base::_check_template_params();
|
||||||
|
checkPointer(dataPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Constructor in the dynamic-size matrix case.
|
/** Constructor in the dynamic-size matrix case.
|
||||||
@ -151,11 +153,24 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma
|
|||||||
: Base(cast_to_pointer_type(dataPtr), rows, cols), m_stride(stride)
|
: Base(cast_to_pointer_type(dataPtr), rows, cols), m_stride(stride)
|
||||||
{
|
{
|
||||||
PlainObjectType::Base::_check_template_params();
|
PlainObjectType::Base::_check_template_params();
|
||||||
|
checkPointer(dataPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map)
|
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map)
|
||||||
|
|
||||||
protected:
|
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;
|
StrideType m_stride;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -160,8 +160,6 @@ template<typename Derived> class MapBase<Derived, ReadOnlyAccessors>
|
|||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
void checkSanity() const
|
void checkSanity() const
|
||||||
{
|
{
|
||||||
eigen_assert(EIGEN_IMPLIES(internal::packet_traits<Scalar>::AlignedOnScalar, (size_t(m_data) % sizeof(Scalar)) == 0)
|
|
||||||
&& "input pointer is not aligned on scalar boundary, e.g., use \"EIGEN_ALIGN8 T ptr[N];\" for double or complex<float>");
|
|
||||||
eigen_assert(EIGEN_IMPLIES(internal::traits<Derived>::IsAligned, (size_t(m_data) % EIGEN_ALIGN_BYTES) == 0) && "data is not aligned");
|
eigen_assert(EIGEN_IMPLIES(internal::traits<Derived>::IsAligned, (size_t(m_data) % EIGEN_ALIGN_BYTES) == 0) && "data is not aligned");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user