mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 03:39:01 +08:00
bug #779: allow non aligned buffers for buffers smaller than the requested alignment.
This commit is contained in:
parent
e8e1d504d6
commit
5b2d287878
@ -165,7 +165,8 @@ template<typename Derived> class MapBase<Derived, ReadOnlyAccessors>
|
|||||||
void checkSanity() const
|
void checkSanity() const
|
||||||
{
|
{
|
||||||
#if EIGEN_MAX_ALIGN_BYTES>0
|
#if EIGEN_MAX_ALIGN_BYTES>0
|
||||||
eigen_assert(((size_t(m_data) % EIGEN_PLAIN_ENUM_MAX(1,internal::traits<Derived>::Alignment)) == 0) && "data is not aligned");
|
eigen_assert(( ((size_t(m_data) % EIGEN_PLAIN_ENUM_MAX(1,internal::traits<Derived>::Alignment)) == 0)
|
||||||
|
|| (cols() * rows() * innerStride() * sizeof(Scalar)) < internal::traits<Derived>::Alignment ) && "data is not aligned");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ void check_handmade_aligned_malloc()
|
|||||||
|
|
||||||
void check_aligned_malloc()
|
void check_aligned_malloc()
|
||||||
{
|
{
|
||||||
for(int i = 1; i < 1000; i++)
|
for(int i = ALIGNMENT; i < 1000; i++)
|
||||||
{
|
{
|
||||||
char *p = (char*)internal::aligned_malloc(i);
|
char *p = (char*)internal::aligned_malloc(i);
|
||||||
VERIFY(size_t(p)%ALIGNMENT==0);
|
VERIFY(size_t(p)%ALIGNMENT==0);
|
||||||
@ -43,7 +43,7 @@ void check_aligned_malloc()
|
|||||||
|
|
||||||
void check_aligned_new()
|
void check_aligned_new()
|
||||||
{
|
{
|
||||||
for(int i = 1; i < 1000; i++)
|
for(int i = ALIGNMENT; i < 1000; i++)
|
||||||
{
|
{
|
||||||
float *p = internal::aligned_new<float>(i);
|
float *p = internal::aligned_new<float>(i);
|
||||||
VERIFY(size_t(p)%ALIGNMENT==0);
|
VERIFY(size_t(p)%ALIGNMENT==0);
|
||||||
@ -55,7 +55,7 @@ void check_aligned_new()
|
|||||||
|
|
||||||
void check_aligned_stack_alloc()
|
void check_aligned_stack_alloc()
|
||||||
{
|
{
|
||||||
for(int i = 1; i < 400; i++)
|
for(int i = ALIGNMENT; i < 400; i++)
|
||||||
{
|
{
|
||||||
ei_declare_aligned_stack_constructed_variable(float,p,i,0);
|
ei_declare_aligned_stack_constructed_variable(float,p,i,0);
|
||||||
VERIFY(size_t(p)%ALIGNMENT==0);
|
VERIFY(size_t(p)%ALIGNMENT==0);
|
||||||
|
@ -40,7 +40,7 @@ template<typename VectorType> void map_class_vector(const VectorType& m)
|
|||||||
VERIFY_IS_EQUAL(ma1, ma3);
|
VERIFY_IS_EQUAL(ma1, ma3);
|
||||||
VERIFY_IS_EQUAL(ma1, ma4);
|
VERIFY_IS_EQUAL(ma1, ma4);
|
||||||
#ifdef EIGEN_VECTORIZE
|
#ifdef EIGEN_VECTORIZE
|
||||||
if(internal::packet_traits<Scalar>::Vectorizable)
|
if(internal::packet_traits<Scalar>::Vectorizable && size>=AlignedMax)
|
||||||
VERIFY_RAISES_ASSERT((Map<VectorType,AlignedMax>(array3unaligned, size)))
|
VERIFY_RAISES_ASSERT((Map<VectorType,AlignedMax>(array3unaligned, size)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user