more MSVC fixes (asm comments...)

This commit is contained in:
Gael Guennebaud 2009-03-17 13:25:26 +00:00
parent 497d77b08c
commit 718af05517
3 changed files with 7 additions and 10 deletions

View File

@ -425,16 +425,11 @@ static void ei_cache_friendly_product(
for(int i=0; i<l2BlockRows; i+=2*PacketSize) for(int i=0; i<l2BlockRows; i+=2*PacketSize)
{ {
PacketType R0, R1, L0, L1, T0, T1; PacketType R0, R1, L0, L1, T0, T1;
asm("#begin sgemm");
// asm(".byte 0x66;");
// We perform "cross products" of vectors to avoid // We perform "cross products" of vectors to avoid
// reductions (horizontal ops) afterwards // reductions (horizontal ops) afterwards
T0 = ei_pload(&res[(j+l2j)*resStride+l2i+i]); T0 = ei_pload(&res[(j+l2j)*resStride+l2i+i]);
T1 = ei_pload(&res[(j+l2j)*resStride+l2i+i+PacketSize]); T1 = ei_pload(&res[(j+l2j)*resStride+l2i+i+PacketSize]);
// uncomment to remove res cache miss
// T0 = ei_pload(&res[k]);
// T1 = ei_pload(&res[k+PacketSize]);
R0 = ei_pload(&lb[0*PacketSize]); R0 = ei_pload(&lb[0*PacketSize]);
L0 = ei_pload(&lb[1*PacketSize]); L0 = ei_pload(&lb[1*PacketSize]);
@ -478,10 +473,6 @@ static void ei_cache_friendly_product(
ei_pstore(&res[(j+l2j)*resStride+l2i+i], T0); ei_pstore(&res[(j+l2j)*resStride+l2i+i], T0);
ei_pstore(&res[(j+l2j)*resStride+l2i+i+PacketSize], T1); ei_pstore(&res[(j+l2j)*resStride+l2i+i+PacketSize], T1);
// uncomment to remove res cache miss
// ei_pstore(&res[0], T0);
// ei_pstore(&res[4/*k+PacketSize*/], T1);
asm("#end sgemm");
} }
} }
} }

View File

@ -38,7 +38,7 @@ static EIGEN_DONT_INLINE void ei_cache_friendly_product_colmajor_times_vector(
const Scalar* lhs, int lhsStride, const Scalar* lhs, int lhsStride,
const RhsType& rhs, const RhsType& rhs,
Scalar* res) Scalar* res)
{asm("#ei_cache_friendly_product_colmajor_times_vector"); {
#ifdef _EIGEN_ACCUMULATE_PACKETS #ifdef _EIGEN_ACCUMULATE_PACKETS
#error _EIGEN_ACCUMULATE_PACKETS has already been defined #error _EIGEN_ACCUMULATE_PACKETS has already been defined
#endif #endif

View File

@ -159,6 +159,12 @@ using Eigen::ei_cos;
#define EIGEN_DEPRECATED #define EIGEN_DEPRECATED
#endif #endif
#if (defined __GNUC__)
#define EIGEN_ASM_COMMENT(X) asm("#"X)
#else
#define EIGEN_ASM_COMMENT(X)
#endif
/* EIGEN_ALIGN_128 forces data to be 16-byte aligned, EVEN if vectorization (EIGEN_VECTORIZE) is disabled, /* EIGEN_ALIGN_128 forces data to be 16-byte aligned, EVEN if vectorization (EIGEN_VECTORIZE) is disabled,
* so that vectorization doesn't affect binary compatibility. * so that vectorization doesn't affect binary compatibility.
* *