From 1115f5462ecaa84d3c60479f7e23a530a1a415d2 Mon Sep 17 00:00:00 2001 From: Jakub Lichman Date: Fri, 23 Apr 2021 19:51:43 +0000 Subject: Tests for pcmp_lt and pcmp_le added --- test/packetmath.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'test') diff --git a/test/packetmath.cpp b/test/packetmath.cpp index 67d329a67..79e91c819 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp @@ -279,10 +279,45 @@ void packetmath_boolean_mask_ops() { CHECK_CWISE2_IF(true, internal::pcmp_eq, internal::pcmp_eq); } +template +void packetmath_boolean_mask_ops_notcomplex() { + 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] = internal::random(); + data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); + } + + CHECK_CWISE2_IF(true, internal::pcmp_le, internal::pcmp_le); + CHECK_CWISE2_IF(true, internal::pcmp_lt, internal::pcmp_lt); + + //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_le, internal::pcmp_le); + CHECK_CWISE2_IF(true, internal::pcmp_lt, internal::pcmp_lt); + + //Test NaN + for (int i = 0; i < PacketSize; ++i) { + data1[i] = NumTraits::quiet_NaN(); + data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); + } + CHECK_CWISE2_IF(true, internal::pcmp_le, internal::pcmp_le); + CHECK_CWISE2_IF(true, internal::pcmp_lt, internal::pcmp_lt); +} + // Packet16b representing bool does not support ptrue, pandnot or pcmp_eq, since the scalar path // (for some compilers) compute the bitwise and with 0x1 of the results to keep the value in [0,1]. template<> void packetmath_boolean_mask_ops::type>() {} +template<> +void packetmath_boolean_mask_ops_notcomplex::type>() {} template void packetmath_minus_zero_add() { @@ -1020,6 +1055,8 @@ void packetmath_notcomplex() { CHECK_CWISE2_IF(PacketTraits::HasMin, propagate_nan_min, (internal::pmin)); CHECK_CWISE2_IF(PacketTraits::HasMax, propagate_nan_max, internal::pmax); } + + packetmath_boolean_mask_ops_notcomplex(); } template -- cgit v1.2.3