fine tuning in dot() and sum(), and prepare for the sparse versions...

This commit is contained in:
Gael Guennebaud
2009-01-07 16:58:17 +00:00
parent 6b9d647fc2
commit 336f0a8486
3 changed files with 19 additions and 23 deletions

View File

@@ -42,7 +42,6 @@ public:
enum {
Vectorization = (int(Derived::Flags)&ActualPacketAccessBit)
&& (int(Derived::Flags)&LinearAccessBit)
&& (int(Derived::SizeAtCompileTime)>2*PacketSize)
? LinearVectorization
: NoVectorization
};
@@ -155,12 +154,13 @@ struct ei_sum_vec_unroller<Derived, Index, Stop, true>
template<typename Derived,
int Vectorization = ei_sum_traits<Derived>::Vectorization,
int Unrolling = ei_sum_traits<Derived>::Unrolling
int Unrolling = ei_sum_traits<Derived>::Unrolling,
int Storage = ei_traits<Derived>::Flags & SparseBit
>
struct ei_sum_impl;
template<typename Derived>
struct ei_sum_impl<Derived, NoVectorization, NoUnrolling>
struct ei_sum_impl<Derived, NoVectorization, NoUnrolling, IsDense>
{
typedef typename Derived::Scalar Scalar;
static Scalar run(const Derived& mat)
@@ -178,12 +178,12 @@ struct ei_sum_impl<Derived, NoVectorization, NoUnrolling>
};
template<typename Derived>
struct ei_sum_impl<Derived, NoVectorization, CompleteUnrolling>
struct ei_sum_impl<Derived, NoVectorization, CompleteUnrolling, IsDense>
: public ei_sum_novec_unroller<Derived, 0, Derived::SizeAtCompileTime>
{};
template<typename Derived>
struct ei_sum_impl<Derived, LinearVectorization, NoUnrolling>
struct ei_sum_impl<Derived, LinearVectorization, NoUnrolling,IsDense>
{
typedef typename Derived::Scalar Scalar;
typedef typename ei_packet_traits<Scalar>::type PacketScalar;
@@ -228,7 +228,7 @@ struct ei_sum_impl<Derived, LinearVectorization, NoUnrolling>
};
template<typename Derived>
struct ei_sum_impl<Derived, LinearVectorization, CompleteUnrolling>
struct ei_sum_impl<Derived, LinearVectorization, CompleteUnrolling, IsDense>
{
typedef typename Derived::Scalar Scalar;
static Scalar run(const Derived& mat)