diff options
author | Gael Guennebaud <g.gael@free.fr> | 2018-12-06 15:58:06 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2018-12-06 15:58:06 +0100 |
commit | c53eececb0415834b961cb61cd466907261b4b2f (patch) | |
tree | 2fda50e7549fda68501e3a33634dfc2ccfac743a /test/packetmath.cpp | |
parent | 3fba59ea594eb26446352cb28813b38921439f23 (diff) |
Implement AVX512 vectorization of std::complex<float/double>
Diffstat (limited to 'test/packetmath.cpp')
-rw-r--r-- | test/packetmath.cpp | 17 |
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]; |