aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/arch
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-03-04 18:59:56 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-03-04 18:59:56 +0100
commit7e2683dc39e809df05ec3dcbd2e42ca61a7a4601 (patch)
tree57f3ef13c13daf7dbd83dcf5fbf07c683933c11b /Eigen/src/Core/arch
parentcefd9b888868bca6b23d67c0e6c69c49582508c3 (diff)
parent0964810fba3236f0ecc22bd35bd356c2d671c889 (diff)
merge
Diffstat (limited to 'Eigen/src/Core/arch')
-rw-r--r--Eigen/src/Core/arch/Default/Settings.h13
-rw-r--r--Eigen/src/Core/arch/NEON/PacketMath.h6
2 files changed, 19 insertions, 0 deletions
diff --git a/Eigen/src/Core/arch/Default/Settings.h b/Eigen/src/Core/arch/Default/Settings.h
index 1e7cebdba..1ab2877b6 100644
--- a/Eigen/src/Core/arch/Default/Settings.h
+++ b/Eigen/src/Core/arch/Default/Settings.h
@@ -62,4 +62,17 @@
#define EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH 8
#endif
+
+/** Defines the default number of registers available for that architecture.
+ * Currently it must be 8 or 16. Other values will fail.
+ */
+#ifndef EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS
+#if (defined __i386__)
+#define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 8
+#else
+#define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 16
+#endif
+
+#endif
+
#endif // EIGEN_DEFAULT_SETTINGS_H
diff --git a/Eigen/src/Core/arch/NEON/PacketMath.h b/Eigen/src/Core/arch/NEON/PacketMath.h
index f71b92a75..2acb3633a 100644
--- a/Eigen/src/Core/arch/NEON/PacketMath.h
+++ b/Eigen/src/Core/arch/NEON/PacketMath.h
@@ -35,6 +35,12 @@
#define EIGEN_TUNE_FOR_CPU_CACHE_SIZE 4*96*96
#endif
+// FIXME NEON has 16 quad registers, but since the current register allocator
+// is so bad, it is much better to reduce it to 8
+#ifndef EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS
+#define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 8
+#endif
+
typedef float32x4_t Packet4f;
typedef int32x4_t Packet4i;