diff options
author | 2014-07-09 16:01:24 +0200 | |
---|---|---|
committer | 2014-07-09 16:01:24 +0200 | |
commit | 62f948c56a782689947e4bbdcaab2b5cb0247ac5 (patch) | |
tree | f4ca956b2d54cb2fef24e44b384f8674e6ba18b5 /test | |
parent | da1e3563060f1d2cb817834fb39285baddbcadaa (diff) |
Generalize unit testing of pscatter
Diffstat (limited to 'test')
-rw-r--r-- | test/packetmath.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/test/packetmath.cpp b/test/packetmath.cpp index a51d31dbd..e5dc473c2 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp @@ -408,14 +408,17 @@ template<typename Scalar> void packetmath_scatter_gather() { for (int i=0; i<PacketSize; ++i) { data1[i] = internal::random<Scalar>()/RealScalar(PacketSize); } - EIGEN_ALIGN_DEFAULT Scalar buffer[PacketSize*11]; - memset(buffer, 0, 11*sizeof(Packet)); + + int stride = internal::random<int>(1,20); + + EIGEN_ALIGN_DEFAULT Scalar buffer[PacketSize*20]; + memset(buffer, 0, 20*sizeof(Packet)); Packet packet = internal::pload<Packet>(data1); - internal::pscatter<Scalar, Packet>(buffer, packet, 11); + internal::pscatter<Scalar, Packet>(buffer, packet, stride); - for (int i = 0; i < PacketSize*11; ++i) { - if ((i%11) == 0) { - VERIFY(isApproxAbs(buffer[i], data1[i/11], refvalue) && "pscatter"); + for (int i = 0; i < PacketSize*20; ++i) { + if ((i%stride) == 0 && i<stride*PacketSize) { + VERIFY(isApproxAbs(buffer[i], data1[i/stride], refvalue) && "pscatter"); } else { VERIFY(isApproxAbs(buffer[i], Scalar(0), refvalue) && "pscatter"); } |