From 1f523e73042074fcaea6d9991bc2bb6e4f96a1ab Mon Sep 17 00:00:00 2001 From: Alexey Frunze Date: Wed, 18 Jul 2018 12:27:50 -0700 Subject: Add MIPS changes missing from previous merge. --- Eigen/Core | 4 ++++ Eigen/src/Core/util/ConfigureVectorization.h | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/Eigen/Core b/Eigen/Core index 23676311f..f336d407b 100644 --- a/Eigen/Core +++ b/Eigen/Core @@ -183,6 +183,10 @@ using std::ptrdiff_t; #include "src/Core/arch/ZVector/PacketMath.h" #include "src/Core/arch/ZVector/MathFunctions.h" #include "src/Core/arch/ZVector/Complex.h" +#elif defined EIGEN_VECTORIZE_MSA + #include "src/Core/arch/MSA/PacketMath.h" + #include "src/Core/arch/MSA/MathFunctions.h" + #include "src/Core/arch/MSA/Complex.h" #endif // Half float support diff --git a/Eigen/src/Core/util/ConfigureVectorization.h b/Eigen/src/Core/util/ConfigureVectorization.h index 653e979b1..f30503b33 100644 --- a/Eigen/src/Core/util/ConfigureVectorization.h +++ b/Eigen/src/Core/util/ConfigureVectorization.h @@ -339,6 +339,21 @@ #define EIGEN_VECTORIZE_ZVECTOR #include + #elif defined __mips_msa + + // Limit MSA optimizations to little-endian CPUs for now. + // TODO: Perhaps, eventually support MSA optimizations on big-endian CPUs? + #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + #if defined(__LP64__) + #define EIGEN_MIPS_64 + #else + #define EIGEN_MIPS_32 + #endif + #define EIGEN_VECTORIZE + #define EIGEN_VECTORIZE_MSA + #include + #endif + #endif #endif @@ -404,6 +419,8 @@ inline static const char *SimdInstructionSetsInUse(void) { return "ARM NEON"; #elif defined(EIGEN_VECTORIZE_ZVECTOR) return "S390X ZVECTOR"; +#elif defined(EIGEN_VECTORIZE_MSA) + return "MIPS MSA"; #else return "None"; #endif -- cgit v1.2.3