aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/packetmath.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2018-12-06 15:58:06 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2018-12-06 15:58:06 +0100
commitc53eececb0415834b961cb61cd466907261b4b2f (patch)
tree2fda50e7549fda68501e3a33634dfc2ccfac743a /test/packetmath.cpp
parent3fba59ea594eb26446352cb28813b38921439f23 (diff)
Implement AVX512 vectorization of std::complex<float/double>
Diffstat (limited to 'test/packetmath.cpp')
-rw-r--r--test/packetmath.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/test/packetmath.cpp b/test/packetmath.cpp
index 144083f1b..60c9dbc36 100644
--- a/test/packetmath.cpp
+++ b/test/packetmath.cpp
@@ -314,15 +314,18 @@ template<typename Scalar,typename Packet> void packetmath()
ref[0] *= data1[i];
VERIFY(internal::isApprox(ref[0], internal::predux_mul(internal::pload<Packet>(data1))) && "internal::predux_mul");
- for (int j=0; j<PacketSize; ++j)
+ if (PacketTraits::HasReduxp)
{
- ref[j] = Scalar(0);
- for (int i=0; i<PacketSize; ++i)
- ref[j] += data1[i+j*PacketSize];
- packets[j] = internal::pload<Packet>(data1+j*PacketSize);
+ for (int j=0; j<PacketSize; ++j)
+ {
+ ref[j] = Scalar(0);
+ for (int i=0; i<PacketSize; ++i)
+ ref[j] += data1[i+j*PacketSize];
+ packets[j] = internal::pload<Packet>(data1+j*PacketSize);
+ }
+ internal::pstore(data2, internal::preduxp(packets));
+ VERIFY(areApproxAbs(ref, data2, PacketSize, refvalue) && "internal::preduxp");
}
- internal::pstore(data2, internal::preduxp(packets));
- VERIFY(areApproxAbs(ref, data2, PacketSize, refvalue) && "internal::preduxp");
for (int i=0; i<PacketSize; ++i)
ref[i] = data1[PacketSize-i-1];