aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Antonio Sanchez <cantonios@google.com>2021-03-10 16:04:02 -0800
committerGravatar Antonio Sanchez <cantonios@google.com>2021-03-10 16:05:01 -0800
commitd098c4d64c6e2e595b5bb26a6fb111fe979c3364 (patch)
tree4ddbfa8a3d9dec33f7075a386fdc8213fcde1958
parent543e34ab9dee6004337b7ad912417eb91bf4a0b9 (diff)
Disable EIGEN_OPTIMIZATION_BARRIER for PPC clang.
Doesn't seem to correctly select the register type, and most types lead to compiler crashes.
-rw-r--r--Eigen/src/Core/util/Macros.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h
index e3a5379bb..00f3690d1 100644
--- a/Eigen/src/Core/util/Macros.h
+++ b/Eigen/src/Core/util/Macros.h
@@ -1117,7 +1117,10 @@ namespace Eigen {
// Note that this is restricted to plain types - this will not work
// directly for std::complex<T>, Eigen::half, Eigen::bfloat16. For these,
// you will need to apply to the underlying POD type.
- #if EIGEN_ARCH_PPC
+ #if EIGEN_ARCH_PPC && EIGEN_COMP_GNUC_STRICT
+ // This seems to be broken on clang. Packet4f is loaded into a single
+ // register rather than a vector, zeroing out some entries. Integer
+ // types also generate a compile error.
// General, Altivec, VSX.
#define EIGEN_OPTIMIZATION_BARRIER(X) __asm__ ("" : "+r,v,wa" (X));
#elif EIGEN_ARCH_ARM_OR_ARM64