aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Jakub Lichman <lichman.jakub@gmail.com>2021-04-23 19:51:43 +0000
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2021-04-23 19:51:43 +0000
commit1115f5462ecaa84d3c60479f7e23a530a1a415d2 (patch)
tree0574b4c33c0af8cc716f06473c861f91d9d5d739 /test
parent3804ca0d905a0a03357db50abc7468f5f90abc98 (diff)
Tests for pcmp_lt and pcmp_le added
Diffstat (limited to 'test')
-rw-r--r--test/packetmath.cpp37
1 files changed, 37 insertions, 0 deletions
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 <typename Scalar, typename Packet>
+void packetmath_boolean_mask_ops_notcomplex() {
+ const int PacketSize = internal::unpacket_traits<Packet>::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<Scalar>();
+ data1[i + PacketSize] = internal::random<bool>() ? 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<bool>() ? 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<Scalar>::quiet_NaN();
+ data1[i + PacketSize] = internal::random<bool>() ? 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<bool, internal::packet_traits<bool>::type>() {}
+template<>
+void packetmath_boolean_mask_ops_notcomplex<bool, internal::packet_traits<bool>::type>() {}
template <typename Scalar, typename Packet>
void packetmath_minus_zero_add() {
@@ -1020,6 +1055,8 @@ void packetmath_notcomplex() {
CHECK_CWISE2_IF(PacketTraits::HasMin, propagate_nan_min, (internal::pmin<PropagateNaN>));
CHECK_CWISE2_IF(PacketTraits::HasMax, propagate_nan_max, internal::pmax<PropagateNaN>);
}
+
+ packetmath_boolean_mask_ops_notcomplex<Scalar, Packet>();
}
template <typename Scalar, typename Packet, bool ConjLhs, bool ConjRhs>