linmath: use correct 32-byte alignment when compiling Eigen with AVX

This commit is contained in:
rdb 2016-12-28 19:18:21 +01:00
parent 8c6a2a57cb
commit 94641c83a0
2 changed files with 8 additions and 1 deletions

View File

@ -336,21 +336,26 @@
#define ALIGN_4BYTE #define ALIGN_4BYTE
#define ALIGN_8BYTE #define ALIGN_8BYTE
#define ALIGN_16BYTE #define ALIGN_16BYTE
#define ALIGN_32BYTE
#define ALIGN_64BYTE #define ALIGN_64BYTE
#elif defined(_MSC_VER) #elif defined(_MSC_VER)
#define ALIGN_4BYTE __declspec(align(4)) #define ALIGN_4BYTE __declspec(align(4))
#define ALIGN_8BYTE __declspec(align(8)) #define ALIGN_8BYTE __declspec(align(8))
#define ALIGN_16BYTE __declspec(align(16)) #define ALIGN_16BYTE __declspec(align(16))
#define ALIGN_32BYTE __declspec(align(32))
#define ALIGN_64BYTE __declspec(align(64)) #define ALIGN_64BYTE __declspec(align(64))
#elif defined(__GNUC__) #elif defined(__GNUC__)
#define ALIGN_4BYTE __attribute__ ((aligned (4))) #define ALIGN_4BYTE __attribute__ ((aligned (4)))
#define ALIGN_8BYTE __attribute__ ((aligned (8))) #define ALIGN_8BYTE __attribute__ ((aligned (8)))
#define ALIGN_16BYTE __attribute__ ((aligned (16))) #define ALIGN_16BYTE __attribute__ ((aligned (16)))
#define ALIGN_32BYTE __attribute__ ((aligned (32)))
#define ALIGN_64BYTE __attribute__ ((aligned (64))) #define ALIGN_64BYTE __attribute__ ((aligned (64)))
#else #else
#define ALIGN_4BYTE #define ALIGN_4BYTE
#define ALIGN_8BYTE #define ALIGN_8BYTE
#define ALIGN_16BYTE #define ALIGN_16BYTE
#define ALIGN_32BYTE
#define ALIGN_64BYTE
#endif #endif
// Do we need to implement memory-alignment enforcement within the // Do we need to implement memory-alignment enforcement within the

View File

@ -61,7 +61,9 @@ private:
#endif // HAVE_EIGEN #endif // HAVE_EIGEN
// This is as good a place as any to define this alignment macro. // This is as good a place as any to define this alignment macro.
#ifdef LINMATH_ALIGN #if defined(LINMATH_ALIGN) && defined(HAVE_EIGEN) && defined(__AVX__)
#define ALIGN_LINMATH ALIGN_32BYTE
#elif defined(LINMATH_ALIGN)
#define ALIGN_LINMATH ALIGN_16BYTE #define ALIGN_LINMATH ALIGN_16BYTE
#else #else
#define ALIGN_LINMATH #define ALIGN_LINMATH