aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
authorGravatar Rasmus Munk Larsen <rmlarsen@google.com>2021-02-26 09:12:44 -0800
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2021-02-26 09:12:44 -0800
commite67672024d82ad4fb173d647842e0a8ad2448fa1 (patch)
treeb31c01fb64adaf7d3bd8ea0bafe51338b05ab689 /Eigen/src
parent5e7d4c33d637866ba4c8eef46e4826ace1bf6402 (diff)
parent51eba8c3e2567adbce53dfc9e62bddf294220fcc (diff)
Merge branch 'nan_prop' of https://gitlab.com/rmlarsen1/eigen into nan_prop
Diffstat (limited to 'Eigen/src')
-rw-r--r--Eigen/src/Core/DenseBase.h3
-rw-r--r--Eigen/src/Core/arch/AltiVec/MatrixProduct.h17
-rw-r--r--Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h2
3 files changed, 16 insertions, 6 deletions
diff --git a/Eigen/src/Core/DenseBase.h b/Eigen/src/Core/DenseBase.h
index f28c47877..20cc4821a 100644
--- a/Eigen/src/Core/DenseBase.h
+++ b/Eigen/src/Core/DenseBase.h
@@ -454,6 +454,7 @@ template<typename Derived> class DenseBase
template<int NaNPropagation>
EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff() const;
+
// By default, the fastest version with undefined NaN propagation semantics is
// used.
// TODO(rmlarsen): Replace with default template argument when we move to
@@ -465,8 +466,6 @@ template<typename Derived> class DenseBase
return maxCoeff<PropagateFast>();
}
-
-
template<typename IndexType> EIGEN_DEVICE_FUNC
typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const;
template<typename IndexType> EIGEN_DEVICE_FUNC
diff --git a/Eigen/src/Core/arch/AltiVec/MatrixProduct.h b/Eigen/src/Core/arch/AltiVec/MatrixProduct.h
index 89d81e06f..03d474a70 100644
--- a/Eigen/src/Core/arch/AltiVec/MatrixProduct.h
+++ b/Eigen/src/Core/arch/AltiVec/MatrixProduct.h
@@ -12,12 +12,21 @@
#include "MatrixProductCommon.h"
-#if __GNUC__ > 10 || __clang_major__ > 11 || \
- (__GNUC__ == 10 && (__GNUC_MINOR__ > 2 || \
- (__GNUC_MINOR__ == 2 && \
- __GNUC_PATCHLEVEL__ >= 1)))
+#if EIGEN_COMP_LLVM
+#if !defined(EIGEN_ALTIVEC_DISABLE_MMA) && !defined(EIGEN_ALTIVEC_MMA_ONLY)
+#ifdef __MMA__
+#define EIGEN_ALTIVEC_MMA_ONLY
+#else
+#define EIGEN_ALTIVEC_DISABLE_MMA
+#endif
+#endif
+#endif
+
+#ifdef __has_builtin
+#if __has_builtin(__builtin_mma_assemble_acc)
#define ALTIVEC_MMA_SUPPORT
#endif
+#endif
#if defined(ALTIVEC_MMA_SUPPORT) && !defined(EIGEN_ALTIVEC_DISABLE_MMA)
#include "MatrixProductMMA.h"
diff --git a/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h b/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h
index bfee9ee92..37db1a6f1 100644
--- a/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h
+++ b/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h
@@ -12,9 +12,11 @@
#pragma GCC target("cpu=power10")
+#ifdef __has_builtin
#if !__has_builtin(__builtin_vsx_assemble_pair)
#define __builtin_vsx_assemble_pair __builtin_mma_assemble_pair
#endif
+#endif
namespace Eigen {