aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Rasmus Munk Larsen <rmlarsen@google.com>2017-01-24 13:37:08 -0800
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2017-01-24 13:37:08 -0800
commit7b6aaa34404e069678c6e3337e690608a4eaa99d (patch)
tree5357479bace0acf3d34391eed3ad56f3aa411273
parent5e144bbaa454eb2af7f6751376051fe16d143276 (diff)
Fix NaN propagation for AVX512.
-rw-r--r--Eigen/src/Core/arch/AVX512/PacketMath.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/Eigen/src/Core/arch/AVX512/PacketMath.h b/Eigen/src/Core/arch/AVX512/PacketMath.h
index e46a60472..12b897572 100644
--- a/Eigen/src/Core/arch/AVX512/PacketMath.h
+++ b/Eigen/src/Core/arch/AVX512/PacketMath.h
@@ -230,23 +230,27 @@ EIGEN_STRONG_INLINE Packet8d pmadd(const Packet8d& a, const Packet8d& b,
template <>
EIGEN_STRONG_INLINE Packet16f pmin<Packet16f>(const Packet16f& a,
const Packet16f& b) {
- return _mm512_min_ps(a, b);
+ // Arguments are reversed to match NaN propagation behavior of std::min.
+ return _mm512_min_ps(b, a);
}
template <>
EIGEN_STRONG_INLINE Packet8d pmin<Packet8d>(const Packet8d& a,
const Packet8d& b) {
- return _mm512_min_pd(a, b);
+ // Arguments are reversed to match NaN propagation behavior of std::min.
+ return _mm512_min_pd(b, a);
}
template <>
EIGEN_STRONG_INLINE Packet16f pmax<Packet16f>(const Packet16f& a,
const Packet16f& b) {
- return _mm512_max_ps(a, b);
+ // Arguments are reversed to match NaN propagation behavior of std::max.
+ return _mm512_max_ps(b, a);
}
template <>
EIGEN_STRONG_INLINE Packet8d pmax<Packet8d>(const Packet8d& a,
const Packet8d& b) {
- return _mm512_max_pd(a, b);
+ // Arguments are reversed to match NaN propagation behavior of std::max.
+ return _mm512_max_pd(b, a);
}
template <>