From 704798d1df4866be335ca013da19a44791f85a7e Mon Sep 17 00:00:00 2001 From: Pedro Caldeira Date: Wed, 24 Jun 2020 15:27:26 -0500 Subject: Add support for Bfloat16 to use vector instructions on Altivec architecture --- test/packetmath.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'test/packetmath.cpp') diff --git a/test/packetmath.cpp b/test/packetmath.cpp index 0fe29102a..c8ea3139e 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp @@ -247,6 +247,20 @@ void packetmath_boolean_mask_ops() { data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); } CHECK_CWISE2_IF(true, internal::pcmp_eq, internal::pcmp_eq); + + //Test (-0) == (0) for signed operations + for (int i = 0; i < PacketSize; ++i) { + data1[i] = Scalar(-0.0); + data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); + } + CHECK_CWISE2_IF(true, internal::pcmp_eq, internal::pcmp_eq); + + //Test NaN + for (int i = 0; i < PacketSize; ++i) { + data1[i] = std::numeric_limits::quiet_NaN(); + data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); + } + CHECK_CWISE2_IF(true, internal::pcmp_eq, internal::pcmp_eq); } // Packet16b representing bool does not support ptrue, pandnot or pcmp_eq, since the scalar path @@ -254,6 +268,22 @@ void packetmath_boolean_mask_ops() { template<> void packetmath_boolean_mask_ops::type>() {} +template +void packetmath_minus_zero_add() { + const int PacketSize = internal::unpacket_traits::size; + const int size = 2 * PacketSize; + EIGEN_ALIGN_MAX Scalar data1[size]; + EIGEN_ALIGN_MAX Scalar data2[size]; + EIGEN_ALIGN_MAX Scalar ref[size]; + + for (int i = 0; i < PacketSize; ++i) { + data1[i] = Scalar(-0.0); + data1[i + PacketSize] = Scalar(-0.0); + } + CHECK_CWISE2_IF(internal::packet_traits::HasAdd, REF_ADD, internal::padd); +} + + template void packetmath() { typedef internal::packet_traits PacketTraits; @@ -454,6 +484,7 @@ void packetmath() { packetmath_boolean_mask_ops(); packetmath_pcast_ops_runner::run(); + packetmath_minus_zero_add(); } template -- cgit v1.2.3