From 5acf46bd12edb79e9a83c42810654dec88227726 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Sat, 24 Apr 2010 00:57:10 +0300 Subject: [PATCH] Backed out changeset 6972c140f737874d88da0e225c7c27b4563a4518 --- Eigen/src/Core/GenericPacketMath.h | 8 ----- Eigen/src/Core/arch/AltiVec/PacketMath.h | 9 ++--- Eigen/src/Core/arch/NEON/PacketMath.h | 7 ---- Eigen/src/Core/arch/SSE/PacketMath.h | 4 --- .../Core/products/GeneralBlockPanelKernel.h | 34 +++++++++++++------ 5 files changed, 26 insertions(+), 36 deletions(-) diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h index 46fa5c186..08981f89d 100644 --- a/Eigen/src/Core/GenericPacketMath.h +++ b/Eigen/src/Core/GenericPacketMath.h @@ -169,14 +169,6 @@ template inline void ei_pstore(Scalar* to, con template inline void ei_pstoreu(Scalar* to, const Packet& from) { (*to) = from; } -/** \internal tries to do cache prefetching of \a addr */ -template inline void ei_prefetch(const Scalar* addr) -{ -#if !defined(_MSC_VER) -__builtin_prefetch(addr); -#endif -} - /** \internal \returns the first element of a packet */ template inline typename ei_unpacket_traits::type ei_pfirst(const Packet& a) { return a; } diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h index 0a7b07645..c6fc670d8 100644 --- a/Eigen/src/Core/arch/AltiVec/PacketMath.h +++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h @@ -67,8 +67,6 @@ typedef __vector unsigned char Packet16uc; #define _EIGEN_DECLARE_CONST_Packet4i(NAME,X) \ Packet4i ei_p4i_##NAME = ei_pset1(X) -#define DST_CHAN 1 -#define DST_CTRL(size, count, stride) (((size) << 24) | ((count) << 16) | (stride)) // Define global static constants: static Packet4f ei_p4f_COUNTDOWN = { 3.0, 2.0, 1.0, 0.0 }; @@ -293,8 +291,8 @@ template<> EIGEN_STRONG_INLINE void ei_pstoreu(float* to, const Packet4f edgeAlign = vec_lvsl(0, to); // permute map to extract edges edges=vec_perm(LSQ,MSQ,edgeAlign); // extract the edges align = vec_lvsr( 0, to ); // permute map to misalign data - MSQ = vec_perm(edges,(Packet16uc)from,align); // misalign the data (MSQ) - LSQ = vec_perm((Packet16uc)from,edges,align); // misalign the data (LSQ) + MSQ = vec_perm(edges,(Packet16uc)from,align); // misalign the data (MSQ) + LSQ = vec_perm((Packet16uc)from,edges,align); // misalign the data (LSQ) vec_st( LSQ, 15, (unsigned char *)to ); // Store the LSQ part first vec_st( MSQ, 0, (unsigned char *)to ); // Store the MSQ part } @@ -317,9 +315,6 @@ template<> EIGEN_STRONG_INLINE void ei_pstoreu(int* to, const Packet4i vec_st( MSQ, 0, (unsigned char *)to ); // Store the MSQ part } -template<> EIGEN_STRONG_INLINE void ei_prefetch(const float* addr) { vec_dstt(addr, DST_CTRL(2,2,32), DST_CHAN); } -template<> EIGEN_STRONG_INLINE void ei_prefetch(const int* addr) { vec_dstt(addr, DST_CTRL(2,2,32), DST_CHAN); } - template<> EIGEN_STRONG_INLINE float ei_pfirst(const Packet4f& a) { float EIGEN_ALIGN16 x[4]; vec_st(a, 0, x); return x[0]; } template<> EIGEN_STRONG_INLINE int ei_pfirst(const Packet4i& a) { int EIGEN_ALIGN16 x[4]; vec_st(a, 0, x); return x[0]; } diff --git a/Eigen/src/Core/arch/NEON/PacketMath.h b/Eigen/src/Core/arch/NEON/PacketMath.h index 96c75101c..2acb3633a 100644 --- a/Eigen/src/Core/arch/NEON/PacketMath.h +++ b/Eigen/src/Core/arch/NEON/PacketMath.h @@ -53,10 +53,6 @@ typedef int32x4_t Packet4i; #define _EIGEN_DECLARE_CONST_Packet4i(NAME,X) \ const Packet4i ei_p4i_##NAME = ei_pset1(X) -#ifndef __pld -#define __pld(x) asm volatile ( " pld [%[addr]]\n" :: [addr] "r" (x) : "cc" ); -#endif - template<> struct ei_packet_traits : ei_default_packet_traits { typedef Packet4f type; enum {size=4}; @@ -172,9 +168,6 @@ template<> EIGEN_STRONG_INLINE void ei_pstore(int* to, const Packet4i template<> EIGEN_STRONG_INLINE void ei_pstoreu(float* to, const Packet4f& from) { EIGEN_DEBUG_UNALIGNED_STORE vst1q_f32(to, from); } template<> EIGEN_STRONG_INLINE void ei_pstoreu(int* to, const Packet4i& from) { EIGEN_DEBUG_UNALIGNED_STORE vst1q_s32(to, from); } -template<> EIGEN_STRONG_INLINE void ei_prefetch(const float* addr) { __pld(addr); } -template<> EIGEN_STRONG_INLINE void ei_prefetch(const int* addr) { __pld(addr); } - // FIXME only store the 2 first elements ? template<> EIGEN_STRONG_INLINE float ei_pfirst(const Packet4f& a) { float EIGEN_ALIGN16 x[4]; vst1q_f32(x, a); return x[0]; } template<> EIGEN_STRONG_INLINE int ei_pfirst(const Packet4i& a) { int EIGEN_ALIGN16 x[4]; vst1q_s32(x, a); return x[0]; } diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/Eigen/src/Core/arch/SSE/PacketMath.h index d360081cd..77f15d982 100644 --- a/Eigen/src/Core/arch/SSE/PacketMath.h +++ b/Eigen/src/Core/arch/SSE/PacketMath.h @@ -233,10 +233,6 @@ template<> EIGEN_STRONG_INLINE void ei_pstoreu(double* to, const Packet2 template<> EIGEN_STRONG_INLINE void ei_pstoreu(float* to, const Packet4f& from) { EIGEN_DEBUG_UNALIGNED_STORE ei_pstoreu((double*)to, _mm_castps_pd(from)); } template<> EIGEN_STRONG_INLINE void ei_pstoreu(int* to, const Packet4i& from) { EIGEN_DEBUG_UNALIGNED_STORE ei_pstoreu((double*)to, _mm_castsi128_pd(from)); } -template<> EIGEN_STRONG_INLINE void ei_prefetch(const float* addr) { _mm_prefetch((const char*)(addr), _MM_HINT_T0); } -template<> EIGEN_STRONG_INLINE void ei_prefetch(const double* addr) { _mm_prefetch((const char*)(addr), _MM_HINT_T0); } -template<> EIGEN_STRONG_INLINE void ei_prefetch(const int* addr) { _mm_prefetch((const char*)(addr), _MM_HINT_T0); } - #if defined(_MSC_VER) && (_MSC_VER <= 1500) && defined(_WIN64) // The temporary variable fixes an internal compilation error. // Direct of the struct members fixed bug #62. diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h index bc697cef5..5e219e077 100644 --- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h +++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h @@ -117,7 +117,9 @@ struct ei_gebp_kernel for(int i=0; i