Fix failure on ARM with latest compilers.
diff --git a/test/packetmath.cpp b/test/packetmath.cpp index b60e1ea..bf2970c 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp
@@ -1214,6 +1214,15 @@ CHECK_CWISE2_IF(PacketTraits::HasMin, propagate_number_min, internal::pmin<PropagateNumbers>); CHECK_CWISE2_IF(PacketTraits::HasMax, propagate_number_max, internal::pmax<PropagateNumbers>); CHECK_CWISE1(numext::abs, internal::pabs); + // Vectorized versions may give a different result in the case of signed int overflow, + // which is undefined behavior (e.g. NEON). + // Also note that unsigned integers with size < sizeof(int) may be implicitly converted to a signed + // int, which can also trigger UB. + if (Eigen::NumTraits<Scalar>::IsInteger) { + for (int i = 0; i < 2 * PacketSize; ++i) { + data1[i] = data1[i] / Scalar(2); + } + } CHECK_CWISE2_IF(PacketTraits::HasAbsDiff, REF_ABS_DIFF, internal::pabsdiff); ref[0] = data1[0];