diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-07-11 16:01:48 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-07-11 16:01:48 +0200 |
commit | 8e3c4283f52a14b64ce346dcdd9115871a481ab6 (patch) | |
tree | eee920aabfc4d73d0eb0a4149fd2edd1d13d4384 /Eigen/src/Core/products/GeneralMatrixVector.h | |
parent | ff96c94043d575e4d0dd477c1ed2487e33f79627 (diff) |
make colmaj * vector uses pointers only
Diffstat (limited to 'Eigen/src/Core/products/GeneralMatrixVector.h')
-rw-r--r-- | Eigen/src/Core/products/GeneralMatrixVector.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/Eigen/src/Core/products/GeneralMatrixVector.h b/Eigen/src/Core/products/GeneralMatrixVector.h index e0d71be7e..d772834a2 100644 --- a/Eigen/src/Core/products/GeneralMatrixVector.h +++ b/Eigen/src/Core/products/GeneralMatrixVector.h @@ -53,15 +53,13 @@ typedef typename ei_meta_if<Vectorizable,_LhsPacket,LhsScalar>::ret LhsPacket; typedef typename ei_meta_if<Vectorizable,_RhsPacket,RhsScalar>::ret RhsPacket; typedef typename ei_meta_if<Vectorizable,_ResPacket,ResScalar>::ret ResPacket; -template<typename RhsType> EIGEN_DONT_INLINE static void run( Index rows, Index cols, const LhsScalar* lhs, Index lhsStride, - const RhsType&/*const RhsScalar**/ rhs, Index rhsIncr, + const RhsScalar* rhs, Index rhsIncr, ResScalar* res, Index resIncr, ResScalar alpha) { - EIGEN_UNUSED_VARIABLE(rhsIncr); ei_internal_assert(resIncr==1); #ifdef _EIGEN_ACCUMULATE_PACKETS #error _EIGEN_ACCUMULATE_PACKETS has already been defined @@ -147,8 +145,10 @@ EIGEN_DONT_INLINE static void run( Index columnBound = ((cols-skipColumns)/columnsAtOnce)*columnsAtOnce + skipColumns; for (Index i=skipColumns; i<columnBound; i+=columnsAtOnce) { - RhsPacket ptmp0 = ei_pset1<RhsPacket>(alpha*rhs[i]), ptmp1 = ei_pset1<RhsPacket>(alpha*rhs[i+offset1]), - ptmp2 = ei_pset1<RhsPacket>(alpha*rhs[i+2]), ptmp3 = ei_pset1<RhsPacket>(alpha*rhs[i+offset3]); + RhsPacket ptmp0 = ei_pset1<RhsPacket>(alpha*rhs[i*rhsIncr]), + ptmp1 = ei_pset1<RhsPacket>(alpha*rhs[(i+offset1)*rhsIncr]), + ptmp2 = ei_pset1<RhsPacket>(alpha*rhs[(i+2)*rhsIncr]), + ptmp3 = ei_pset1<RhsPacket>(alpha*rhs[(i+offset3)*rhsIncr]); // this helps a lot generating better binary code const LhsScalar *lhs0 = lhs + i*lhsStride, *lhs1 = lhs + (i+offset1)*lhsStride, @@ -239,7 +239,7 @@ EIGEN_DONT_INLINE static void run( { for (Index i=start; i<end; ++i) { - RhsPacket ptmp0 = ei_pset1<RhsPacket>(alpha*rhs[i]); + RhsPacket ptmp0 = ei_pset1<RhsPacket>(alpha*rhs[i*rhsIncr]); const LhsScalar* lhs0 = lhs + i*lhsStride; if (Vectorizable) |