aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/arch/AltiVec/PacketMath.h
diff options
context:
space:
mode:
authorGravatar Konstantinos Margaritis <markos@freevec.org>2014-09-21 11:24:30 +0000
committerGravatar Konstantinos Margaritis <markos@freevec.org>2014-09-21 11:24:30 +0000
commit974fe38ca38fb812f3ce4be105cf2ff69f40aef1 (patch)
tree8c21d7e7255dee31fdfda76ce95c71c82af7dfd6 /Eigen/src/Core/arch/AltiVec/PacketMath.h
parentc0205ca4af402eadcf1a21bc0949afa4c9d9712a (diff)
prefetch are noops on VSX
Diffstat (limited to 'Eigen/src/Core/arch/AltiVec/PacketMath.h')
-rwxr-xr-xEigen/src/Core/arch/AltiVec/PacketMath.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h
index 3555c521d..1274f72dd 100755
--- a/Eigen/src/Core/arch/AltiVec/PacketMath.h
+++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h
@@ -28,7 +28,7 @@ namespace internal {
// NOTE Altivec has 32 registers, but Eigen only accepts a value of 8 or 16
#ifndef EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS
-#define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 16
+#define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 32
#endif
typedef __vector float Packet4f;
@@ -482,8 +482,16 @@ template<> EIGEN_STRONG_INLINE void pstoreu<float>(float* to, const Packet4f&
}
#endif
-template<> EIGEN_STRONG_INLINE void prefetch<float>(const float* addr) { vec_dstt(addr, DST_CTRL(2,2,32), DST_CHAN); }
-template<> EIGEN_STRONG_INLINE void prefetch<int>(const int* addr) { vec_dstt(addr, DST_CTRL(2,2,32), DST_CHAN); }
+template<> EIGEN_STRONG_INLINE void prefetch<float>(const float* addr) {
+#ifndef __VSX__
+ vec_dstt(addr, DST_CTRL(2,2,32), DST_CHAN);
+#endif
+}
+template<> EIGEN_STRONG_INLINE void prefetch<int>(const int* addr) {
+#ifndef __VSX__
+ vec_dstt(addr, DST_CTRL(2,2,32), DST_CHAN);
+#endif
+}
template<> EIGEN_STRONG_INLINE float pfirst<Packet4f>(const Packet4f& a) { float EIGEN_ALIGN16 x[4]; vec_st(a, 0, x); return x[0]; }
template<> EIGEN_STRONG_INLINE int pfirst<Packet4i>(const Packet4i& a) { int EIGEN_ALIGN16 x[4]; vec_st(a, 0, x); return x[0]; }