aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/dynalloc.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2014-04-18 21:14:40 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2014-04-18 21:14:40 +0200
commit2606abed535744fcaa41b923c71338a06b8ed3fa (patch)
treecafa7c6567e2982d1395e2db63b692f34cdb1e1d /test/dynalloc.cpp
parenta7d20038df1dc160e282e824052ff5bcf5ba2c9a (diff)
Fix 128bit packet size assumptions in unit tests.
Diffstat (limited to 'test/dynalloc.cpp')
-rw-r--r--test/dynalloc.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/test/dynalloc.cpp b/test/dynalloc.cpp
index 8bbda1c94..c98cc80f0 100644
--- a/test/dynalloc.cpp
+++ b/test/dynalloc.cpp
@@ -10,11 +10,13 @@
#include "main.h"
#if EIGEN_ALIGN
-#define ALIGNMENT 16
+#define ALIGNMENT EIGEN_ALIGN_BYTES
#else
#define ALIGNMENT 1
#endif
+typedef Matrix<float,8,1> Vector8f;
+
void check_handmade_aligned_malloc()
{
for(int i = 1; i < 1000; i++)
@@ -68,7 +70,7 @@ struct MyStruct
{
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
char dummychar;
- Vector4f avec;
+ Vector8f avec;
};
class MyClassA
@@ -76,15 +78,19 @@ class MyClassA
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
char dummychar;
- Vector4f avec;
+ Vector8f avec;
};
template<typename T> void check_dynaligned()
{
- T* obj = new T;
- VERIFY(T::NeedsToAlign==1);
- VERIFY(size_t(obj)%ALIGNMENT==0);
- delete obj;
+ // TODO have to be updated once we support multiple alignment values
+ if(T::SizeAtCompileTime % ALIGNMENT == 0)
+ {
+ T* obj = new T;
+ VERIFY(T::NeedsToAlign==1);
+ VERIFY(size_t(obj)%ALIGNMENT==0);
+ delete obj;
+ }
}
void test_dynalloc()
@@ -102,6 +108,7 @@ void test_dynalloc()
CALL_SUBTEST(check_dynaligned<Matrix4f>() );
CALL_SUBTEST(check_dynaligned<Vector4d>() );
CALL_SUBTEST(check_dynaligned<Vector4i>() );
+ CALL_SUBTEST(check_dynaligned<Vector8f>() );
}
// check static allocation, who knows ?