Reverted the definition of the EIGEN_ALIGN to its former meaning (i.e. a boolean)

Created a new EIGEN_ALIGN_BYTES define to encode how the data should be aligned
Fixed a few remaining alignment issues exposed when the Eigen code is compiled with avx enabled.
Created a new EIGEN_ALIGN_DEFAULT define, which is set to the minimum alignment value required for the chosen instruction set. Use this value instead of EIGEN_ALIGN32 to preserve the existing alignment on SSE/Altivec/Neon.
This commit is contained in:
Benoit Steiner
2014-02-18 18:06:44 -08:00
parent 64a85800bd
commit 7ed9441ea4
13 changed files with 61 additions and 53 deletions

View File

@@ -106,10 +106,10 @@ template<typename Scalar> void packetmath()
const int max_size = PacketSize > 4 ? PacketSize : 4;
const int size = PacketSize*max_size;
EIGEN_ALIGN32 Scalar data1[size];
EIGEN_ALIGN32 Scalar data2[size];
EIGEN_ALIGN32 Packet packets[PacketSize*2];
EIGEN_ALIGN32 Scalar ref[size];
EIGEN_ALIGN_DEFAULT Scalar data1[size];
EIGEN_ALIGN_DEFAULT Scalar data2[size];
EIGEN_ALIGN_DEFAULT Packet packets[PacketSize*2];
EIGEN_ALIGN_DEFAULT Scalar ref[size];
RealScalar refvalue = 0;
for (int i=0; i<size; ++i)
{
@@ -217,9 +217,9 @@ template<typename Scalar> void packetmath_real()
const int PacketSize = internal::packet_traits<Scalar>::size;
const int size = PacketSize*4;
EIGEN_ALIGN32 Scalar data1[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN32 Scalar data2[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN32 Scalar ref[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN_DEFAULT Scalar data1[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN_DEFAULT Scalar data2[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN_DEFAULT Scalar ref[internal::packet_traits<Scalar>::size*4];
for (int i=0; i<size; ++i)
{
@@ -262,9 +262,9 @@ template<typename Scalar> void packetmath_notcomplex()
typedef typename internal::packet_traits<Scalar>::type Packet;
const int PacketSize = internal::packet_traits<Scalar>::size;
EIGEN_ALIGN32 Scalar data1[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN32 Scalar data2[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN32 Scalar ref[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN_DEFAULT Scalar data1[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN_DEFAULT Scalar data2[internal::packet_traits<Scalar>::size*4];
EIGEN_ALIGN_DEFAULT Scalar ref[internal::packet_traits<Scalar>::size*4];
Array<Scalar,Dynamic,1>::Map(data1, internal::packet_traits<Scalar>::size*4).setRandom();
@@ -322,10 +322,10 @@ template<typename Scalar> void packetmath_complex()
const int PacketSize = internal::packet_traits<Scalar>::size;
const int size = PacketSize*4;
EIGEN_ALIGN32 Scalar data1[PacketSize*4];
EIGEN_ALIGN32 Scalar data2[PacketSize*4];
EIGEN_ALIGN32 Scalar ref[PacketSize*4];
EIGEN_ALIGN32 Scalar pval[PacketSize*4];
EIGEN_ALIGN_DEFAULT Scalar data1[PacketSize*4];
EIGEN_ALIGN_DEFAULT Scalar data2[PacketSize*4];
EIGEN_ALIGN_DEFAULT Scalar ref[PacketSize*4];
EIGEN_ALIGN_DEFAULT Scalar pval[PacketSize*4];
for (int i=0; i<size; ++i)
{