optiization: make hybrid small/large outer products use the unrolled path

This commit is contained in:
Gael Guennebaud 2010-02-04 17:17:57 +01:00
parent d0b4ef81f0
commit b44240180f
2 changed files with 2 additions and 7 deletions

View File

@ -93,6 +93,8 @@ template<> struct ei_product_type_selector<Small,1, Small>
template<> struct ei_product_type_selector<1, Small,Small> { enum { ret = UnrolledProduct }; };
template<> struct ei_product_type_selector<Small,Small,Small> { enum { ret = UnrolledProduct }; };
template<> struct ei_product_type_selector<Small, Small, 1> { enum { ret = UnrolledProduct }; };
template<> struct ei_product_type_selector<Small, Large, 1> { enum { ret = UnrolledProduct }; };
template<> struct ei_product_type_selector<Large, Small, 1> { enum { ret = UnrolledProduct }; };
template<> struct ei_product_type_selector<1, Large,Small> { enum { ret = GemvProduct }; };
template<> struct ei_product_type_selector<1, Large,Large> { enum { ret = GemvProduct }; };
template<> struct ei_product_type_selector<1, Small,Large> { enum { ret = GemvProduct }; };

View File

@ -47,13 +47,6 @@ struct ei_traits<ProductBase<Derived,_Lhs,_Rhs> > //: ei_traits<typename ei_clea
};
};
// enforce evaluation before nesting
template<typename Derived, typename Lhs, typename Rhs,int N,typename EvalType>
struct ei_nested<ProductBase<Derived,Lhs,Rhs>, N, EvalType>
{
typedef EvalType type;
};
#define EIGEN_PRODUCT_PUBLIC_INTERFACE(Derived) \
typedef ProductBase<Derived, Lhs, Rhs > Base; \
EIGEN_DENSE_PUBLIC_INTERFACE(Derived) \