Fix packetmath tests on M* macs.

libeigen/eigen!2120
This commit is contained in:
Antonio Sánchez
2026-02-08 18:07:24 +00:00
committed by Rasmus Munk Larsen
parent 752911927f
commit 4d05fcf8da
4 changed files with 52 additions and 15 deletions

View File

@@ -86,6 +86,13 @@ inline T REF_ABS_DIFF(const T& a, const T& b) {
return a > b ? a - b : b - a;
}
// MacOS apple-clang has an issue with pcmp_eq for half when inlined,
// resulting in an ICE, but only in this specific test.
template <typename Packet>
EIGEN_DONT_INLINE Packet REF_PCMP_EQ(const Packet& a, const Packet& b) {
return internal::pcmp_eq(a, b);
}
// Specializations for bool.
template <>
inline bool REF_ADD(const bool& a, const bool& b) {
@@ -361,21 +368,21 @@ void packetmath_boolean_mask_ops() {
data1[i + PacketSize] = internal::random<bool>() ? data1[i] : Scalar(0);
}
CHECK_CWISE2_MASK(internal::pcmp_eq, internal::pcmp_eq);
CHECK_CWISE2_MASK(REF_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<bool>() ? data1[i] : Scalar(0);
}
CHECK_CWISE2_MASK(internal::pcmp_eq, internal::pcmp_eq);
CHECK_CWISE2_MASK(REF_PCMP_EQ, internal::pcmp_eq);
// 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_MASK(internal::pcmp_eq, internal::pcmp_eq);
CHECK_CWISE2_MASK(REF_PCMP_EQ, internal::pcmp_eq);
}
template <typename Scalar, typename Packet>