mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
Fix "storage class is not first" warnings
This commit is contained in:
parent
b5d8299ee7
commit
0fac91ac22
@ -149,8 +149,8 @@ struct copy_using_evaluator_DefaultTraversal_CompleteUnrolling
|
|||||||
inner = Index % DstXprType::InnerSizeAtCompileTime
|
inner = Index % DstXprType::InnerSizeAtCompileTime
|
||||||
};
|
};
|
||||||
|
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType &dstEvaluator,
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType &dstEvaluator,
|
||||||
SrcEvaluatorType &srcEvaluator)
|
SrcEvaluatorType &srcEvaluator)
|
||||||
{
|
{
|
||||||
dstEvaluator.copyCoeffByOuterInner(outer, inner, srcEvaluator);
|
dstEvaluator.copyCoeffByOuterInner(outer, inner, srcEvaluator);
|
||||||
copy_using_evaluator_DefaultTraversal_CompleteUnrolling
|
copy_using_evaluator_DefaultTraversal_CompleteUnrolling
|
||||||
@ -162,15 +162,15 @@ struct copy_using_evaluator_DefaultTraversal_CompleteUnrolling
|
|||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
||||||
struct copy_using_evaluator_DefaultTraversal_CompleteUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
struct copy_using_evaluator_DefaultTraversal_CompleteUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType&, SrcEvaluatorType&) { }
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType&, SrcEvaluatorType&) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Index, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Index, int Stop>
|
||||||
struct copy_using_evaluator_DefaultTraversal_InnerUnrolling
|
struct copy_using_evaluator_DefaultTraversal_InnerUnrolling
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType &dstEvaluator,
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType &dstEvaluator,
|
||||||
SrcEvaluatorType &srcEvaluator,
|
SrcEvaluatorType &srcEvaluator,
|
||||||
int outer)
|
int outer)
|
||||||
{
|
{
|
||||||
dstEvaluator.copyCoeffByOuterInner(outer, Index, srcEvaluator);
|
dstEvaluator.copyCoeffByOuterInner(outer, Index, srcEvaluator);
|
||||||
copy_using_evaluator_DefaultTraversal_InnerUnrolling
|
copy_using_evaluator_DefaultTraversal_InnerUnrolling
|
||||||
@ -182,7 +182,7 @@ struct copy_using_evaluator_DefaultTraversal_InnerUnrolling
|
|||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
||||||
struct copy_using_evaluator_DefaultTraversal_InnerUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
struct copy_using_evaluator_DefaultTraversal_InnerUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType&, SrcEvaluatorType&, int) { }
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType&, SrcEvaluatorType&, int) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
/***********************
|
/***********************
|
||||||
@ -192,8 +192,8 @@ struct copy_using_evaluator_DefaultTraversal_InnerUnrolling<DstEvaluatorType, Sr
|
|||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Index, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Index, int Stop>
|
||||||
struct copy_using_evaluator_LinearTraversal_CompleteUnrolling
|
struct copy_using_evaluator_LinearTraversal_CompleteUnrolling
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType &dstEvaluator,
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType &dstEvaluator,
|
||||||
SrcEvaluatorType &srcEvaluator)
|
SrcEvaluatorType &srcEvaluator)
|
||||||
{
|
{
|
||||||
dstEvaluator.copyCoeff(Index, srcEvaluator);
|
dstEvaluator.copyCoeff(Index, srcEvaluator);
|
||||||
copy_using_evaluator_LinearTraversal_CompleteUnrolling
|
copy_using_evaluator_LinearTraversal_CompleteUnrolling
|
||||||
@ -205,7 +205,7 @@ struct copy_using_evaluator_LinearTraversal_CompleteUnrolling
|
|||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
||||||
struct copy_using_evaluator_LinearTraversal_CompleteUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
struct copy_using_evaluator_LinearTraversal_CompleteUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType&, SrcEvaluatorType&) { }
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType&, SrcEvaluatorType&) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
/**************************
|
/**************************
|
||||||
@ -224,8 +224,8 @@ struct copy_using_evaluator_innervec_CompleteUnrolling
|
|||||||
JointAlignment = copy_using_evaluator_traits<DstXprType,SrcXprType>::JointAlignment
|
JointAlignment = copy_using_evaluator_traits<DstXprType,SrcXprType>::JointAlignment
|
||||||
};
|
};
|
||||||
|
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType &dstEvaluator,
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType &dstEvaluator,
|
||||||
SrcEvaluatorType &srcEvaluator)
|
SrcEvaluatorType &srcEvaluator)
|
||||||
{
|
{
|
||||||
dstEvaluator.template copyPacketByOuterInner<Aligned, JointAlignment>(outer, inner, srcEvaluator);
|
dstEvaluator.template copyPacketByOuterInner<Aligned, JointAlignment>(outer, inner, srcEvaluator);
|
||||||
enum { NextIndex = Index + packet_traits<typename DstXprType::Scalar>::size };
|
enum { NextIndex = Index + packet_traits<typename DstXprType::Scalar>::size };
|
||||||
@ -238,15 +238,15 @@ struct copy_using_evaluator_innervec_CompleteUnrolling
|
|||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
||||||
struct copy_using_evaluator_innervec_CompleteUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
struct copy_using_evaluator_innervec_CompleteUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType&, SrcEvaluatorType&) { }
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType&, SrcEvaluatorType&) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Index, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Index, int Stop>
|
||||||
struct copy_using_evaluator_innervec_InnerUnrolling
|
struct copy_using_evaluator_innervec_InnerUnrolling
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType &dstEvaluator,
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType &dstEvaluator,
|
||||||
SrcEvaluatorType &srcEvaluator,
|
SrcEvaluatorType &srcEvaluator,
|
||||||
int outer)
|
int outer)
|
||||||
{
|
{
|
||||||
dstEvaluator.template copyPacketByOuterInner<Aligned, Aligned>(outer, Index, srcEvaluator);
|
dstEvaluator.template copyPacketByOuterInner<Aligned, Aligned>(outer, Index, srcEvaluator);
|
||||||
typedef typename DstEvaluatorType::XprType DstXprType;
|
typedef typename DstEvaluatorType::XprType DstXprType;
|
||||||
@ -260,7 +260,7 @@ struct copy_using_evaluator_innervec_InnerUnrolling
|
|||||||
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
template<typename DstEvaluatorType, typename SrcEvaluatorType, int Stop>
|
||||||
struct copy_using_evaluator_innervec_InnerUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
struct copy_using_evaluator_innervec_InnerUnrolling<DstEvaluatorType, SrcEvaluatorType, Stop, Stop>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstEvaluatorType&, SrcEvaluatorType&, int) { }
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType&, SrcEvaluatorType&, int) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
@ -301,7 +301,7 @@ struct copy_using_evaluator_impl<DstXprType, SrcXprType, DefaultTraversal, NoUnr
|
|||||||
template<typename DstXprType, typename SrcXprType>
|
template<typename DstXprType, typename SrcXprType>
|
||||||
struct copy_using_evaluator_impl<DstXprType, SrcXprType, DefaultTraversal, CompleteUnrolling>
|
struct copy_using_evaluator_impl<DstXprType, SrcXprType, DefaultTraversal, CompleteUnrolling>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstXprType &dst, const SrcXprType &src)
|
static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src)
|
||||||
{
|
{
|
||||||
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
||||||
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
||||||
@ -319,7 +319,7 @@ template<typename DstXprType, typename SrcXprType>
|
|||||||
struct copy_using_evaluator_impl<DstXprType, SrcXprType, DefaultTraversal, InnerUnrolling>
|
struct copy_using_evaluator_impl<DstXprType, SrcXprType, DefaultTraversal, InnerUnrolling>
|
||||||
{
|
{
|
||||||
typedef typename DstXprType::Index Index;
|
typedef typename DstXprType::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(DstXprType &dst, const SrcXprType &src)
|
static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src)
|
||||||
{
|
{
|
||||||
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
||||||
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
||||||
@ -330,7 +330,7 @@ struct copy_using_evaluator_impl<DstXprType, SrcXprType, DefaultTraversal, Inner
|
|||||||
const Index outerSize = dst.outerSize();
|
const Index outerSize = dst.outerSize();
|
||||||
for(Index outer = 0; outer < outerSize; ++outer)
|
for(Index outer = 0; outer < outerSize; ++outer)
|
||||||
copy_using_evaluator_DefaultTraversal_InnerUnrolling
|
copy_using_evaluator_DefaultTraversal_InnerUnrolling
|
||||||
<DstEvaluatorType, SrcEvaluatorType, 0, DstXprType::InnerSizeAtCompileTime>
|
<DstEvaluatorType, SrcEvaluatorType, 0, DstXprType::InnerSizeAtCompileTime>
|
||||||
::run(dstEvaluator, srcEvaluator, outer);
|
::run(dstEvaluator, srcEvaluator, outer);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -345,7 +345,7 @@ struct unaligned_copy_using_evaluator_impl
|
|||||||
// if IsAligned = true, then do nothing
|
// if IsAligned = true, then do nothing
|
||||||
template <typename SrcEvaluatorType, typename DstEvaluatorType>
|
template <typename SrcEvaluatorType, typename DstEvaluatorType>
|
||||||
static EIGEN_STRONG_INLINE void run(const SrcEvaluatorType&, DstEvaluatorType&,
|
static EIGEN_STRONG_INLINE void run(const SrcEvaluatorType&, DstEvaluatorType&,
|
||||||
typename SrcEvaluatorType::Index, typename SrcEvaluatorType::Index) {}
|
typename SrcEvaluatorType::Index, typename SrcEvaluatorType::Index) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
@ -356,15 +356,15 @@ struct unaligned_copy_using_evaluator_impl<false>
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
template <typename DstEvaluatorType, typename SrcEvaluatorType>
|
template <typename DstEvaluatorType, typename SrcEvaluatorType>
|
||||||
static EIGEN_DONT_INLINE void run(DstEvaluatorType &dstEvaluator,
|
static EIGEN_DONT_INLINE void run(DstEvaluatorType &dstEvaluator,
|
||||||
const SrcEvaluatorType &srcEvaluator,
|
const SrcEvaluatorType &srcEvaluator,
|
||||||
typename DstEvaluatorType::Index start,
|
typename DstEvaluatorType::Index start,
|
||||||
typename DstEvaluatorType::Index end)
|
typename DstEvaluatorType::Index end)
|
||||||
#else
|
#else
|
||||||
template <typename DstEvaluatorType, typename SrcEvaluatorType>
|
template <typename DstEvaluatorType, typename SrcEvaluatorType>
|
||||||
static EIGEN_STRONG_INLINE void run(DstEvaluatorType &dstEvaluator,
|
static EIGEN_STRONG_INLINE void run(DstEvaluatorType &dstEvaluator,
|
||||||
const SrcEvaluatorType &srcEvaluator,
|
const SrcEvaluatorType &srcEvaluator,
|
||||||
typename DstEvaluatorType::Index start,
|
typename DstEvaluatorType::Index start,
|
||||||
typename DstEvaluatorType::Index end)
|
typename DstEvaluatorType::Index end)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
for (typename DstEvaluatorType::Index index = start; index < end; ++index)
|
for (typename DstEvaluatorType::Index index = start; index < end; ++index)
|
||||||
@ -375,7 +375,7 @@ struct unaligned_copy_using_evaluator_impl<false>
|
|||||||
template<typename DstXprType, typename SrcXprType>
|
template<typename DstXprType, typename SrcXprType>
|
||||||
struct copy_using_evaluator_impl<DstXprType, SrcXprType, LinearVectorizedTraversal, NoUnrolling>
|
struct copy_using_evaluator_impl<DstXprType, SrcXprType, LinearVectorizedTraversal, NoUnrolling>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstXprType &dst, const SrcXprType &src)
|
static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src)
|
||||||
{
|
{
|
||||||
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
||||||
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
||||||
@ -410,7 +410,7 @@ template<typename DstXprType, typename SrcXprType>
|
|||||||
struct copy_using_evaluator_impl<DstXprType, SrcXprType, LinearVectorizedTraversal, CompleteUnrolling>
|
struct copy_using_evaluator_impl<DstXprType, SrcXprType, LinearVectorizedTraversal, CompleteUnrolling>
|
||||||
{
|
{
|
||||||
typedef typename DstXprType::Index Index;
|
typedef typename DstXprType::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(DstXprType &dst, const SrcXprType &src)
|
static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src)
|
||||||
{
|
{
|
||||||
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
||||||
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
||||||
@ -460,7 +460,7 @@ struct copy_using_evaluator_impl<DstXprType, SrcXprType, InnerVectorizedTraversa
|
|||||||
template<typename DstXprType, typename SrcXprType>
|
template<typename DstXprType, typename SrcXprType>
|
||||||
struct copy_using_evaluator_impl<DstXprType, SrcXprType, InnerVectorizedTraversal, CompleteUnrolling>
|
struct copy_using_evaluator_impl<DstXprType, SrcXprType, InnerVectorizedTraversal, CompleteUnrolling>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstXprType &dst, const SrcXprType &src)
|
static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src)
|
||||||
{
|
{
|
||||||
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
||||||
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
||||||
@ -478,7 +478,7 @@ template<typename DstXprType, typename SrcXprType>
|
|||||||
struct copy_using_evaluator_impl<DstXprType, SrcXprType, InnerVectorizedTraversal, InnerUnrolling>
|
struct copy_using_evaluator_impl<DstXprType, SrcXprType, InnerVectorizedTraversal, InnerUnrolling>
|
||||||
{
|
{
|
||||||
typedef typename DstXprType::Index Index;
|
typedef typename DstXprType::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(DstXprType &dst, const SrcXprType &src)
|
static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src)
|
||||||
{
|
{
|
||||||
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
||||||
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
||||||
@ -489,7 +489,7 @@ struct copy_using_evaluator_impl<DstXprType, SrcXprType, InnerVectorizedTraversa
|
|||||||
const Index outerSize = dst.outerSize();
|
const Index outerSize = dst.outerSize();
|
||||||
for(Index outer = 0; outer < outerSize; ++outer)
|
for(Index outer = 0; outer < outerSize; ++outer)
|
||||||
copy_using_evaluator_innervec_InnerUnrolling
|
copy_using_evaluator_innervec_InnerUnrolling
|
||||||
<DstEvaluatorType, SrcEvaluatorType, 0, DstXprType::InnerSizeAtCompileTime>
|
<DstEvaluatorType, SrcEvaluatorType, 0, DstXprType::InnerSizeAtCompileTime>
|
||||||
::run(dstEvaluator, srcEvaluator, outer);
|
::run(dstEvaluator, srcEvaluator, outer);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -519,7 +519,7 @@ struct copy_using_evaluator_impl<DstXprType, SrcXprType, LinearTraversal, NoUnro
|
|||||||
template<typename DstXprType, typename SrcXprType>
|
template<typename DstXprType, typename SrcXprType>
|
||||||
struct copy_using_evaluator_impl<DstXprType, SrcXprType, LinearTraversal, CompleteUnrolling>
|
struct copy_using_evaluator_impl<DstXprType, SrcXprType, LinearTraversal, CompleteUnrolling>
|
||||||
{
|
{
|
||||||
EIGEN_STRONG_INLINE static void run(DstXprType &dst, const SrcXprType &src)
|
static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src)
|
||||||
{
|
{
|
||||||
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
typedef typename evaluator<DstXprType>::type DstEvaluatorType;
|
||||||
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
typedef typename evaluator<SrcXprType>::type SrcEvaluatorType;
|
||||||
@ -616,7 +616,7 @@ struct copy_using_evaluator_impl<DstXprType, SrcXprType, AllAtOnceTraversal, NoU
|
|||||||
template<typename DstXprType, template <typename> class StorageBase, typename SrcXprType>
|
template<typename DstXprType, template <typename> class StorageBase, typename SrcXprType>
|
||||||
EIGEN_STRONG_INLINE
|
EIGEN_STRONG_INLINE
|
||||||
const DstXprType& copy_using_evaluator(const NoAlias<DstXprType, StorageBase>& dst,
|
const DstXprType& copy_using_evaluator(const NoAlias<DstXprType, StorageBase>& dst,
|
||||||
const EigenBase<SrcXprType>& src)
|
const EigenBase<SrcXprType>& src)
|
||||||
{
|
{
|
||||||
return noalias_copy_using_evaluator(dst.expression(), src.derived());
|
return noalias_copy_using_evaluator(dst.expression(), src.derived());
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ template<int UnrollingIndex, typename Lhs, typename Rhs, typename RetScalar>
|
|||||||
struct etor_product_coeff_impl<DefaultTraversal, UnrollingIndex, Lhs, Rhs, RetScalar>
|
struct etor_product_coeff_impl<DefaultTraversal, UnrollingIndex, Lhs, Rhs, RetScalar>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, RetScalar &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, RetScalar &res)
|
||||||
{
|
{
|
||||||
etor_product_coeff_impl<DefaultTraversal, UnrollingIndex-1, Lhs, Rhs, RetScalar>::run(row, col, lhs, rhs, innerDim, res);
|
etor_product_coeff_impl<DefaultTraversal, UnrollingIndex-1, Lhs, Rhs, RetScalar>::run(row, col, lhs, rhs, innerDim, res);
|
||||||
res += lhs.coeff(row, UnrollingIndex) * rhs.coeff(UnrollingIndex, col);
|
res += lhs.coeff(row, UnrollingIndex) * rhs.coeff(UnrollingIndex, col);
|
||||||
@ -220,7 +220,7 @@ template<typename Lhs, typename Rhs, typename RetScalar>
|
|||||||
struct etor_product_coeff_impl<DefaultTraversal, 0, Lhs, Rhs, RetScalar>
|
struct etor_product_coeff_impl<DefaultTraversal, 0, Lhs, Rhs, RetScalar>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, RetScalar &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, RetScalar &res)
|
||||||
{
|
{
|
||||||
res = lhs.coeff(row, 0) * rhs.coeff(0, col);
|
res = lhs.coeff(row, 0) * rhs.coeff(0, col);
|
||||||
}
|
}
|
||||||
@ -230,7 +230,7 @@ template<typename Lhs, typename Rhs, typename RetScalar>
|
|||||||
struct etor_product_coeff_impl<DefaultTraversal, Dynamic, Lhs, Rhs, RetScalar>
|
struct etor_product_coeff_impl<DefaultTraversal, Dynamic, Lhs, Rhs, RetScalar>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, RetScalar& res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, RetScalar& res)
|
||||||
{
|
{
|
||||||
eigen_assert(innerDim>0 && "you are using a non initialized matrix");
|
eigen_assert(innerDim>0 && "you are using a non initialized matrix");
|
||||||
res = lhs.coeff(row, 0) * rhs.coeff(0, col);
|
res = lhs.coeff(row, 0) * rhs.coeff(0, col);
|
||||||
@ -248,7 +248,7 @@ struct etor_product_coeff_vectorized_unroller
|
|||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
enum { PacketSize = packet_traits<typename Lhs::Scalar>::size };
|
enum { PacketSize = packet_traits<typename Lhs::Scalar>::size };
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, typename Lhs::PacketScalar &pres)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, typename Lhs::PacketScalar &pres)
|
||||||
{
|
{
|
||||||
etor_product_coeff_vectorized_unroller<UnrollingIndex-PacketSize, Lhs, Rhs, Packet>::run(row, col, lhs, rhs, innerDim, pres);
|
etor_product_coeff_vectorized_unroller<UnrollingIndex-PacketSize, Lhs, Rhs, Packet>::run(row, col, lhs, rhs, innerDim, pres);
|
||||||
pres = padd(pres, pmul( lhs.template packet<Aligned>(row, UnrollingIndex) , rhs.template packet<Aligned>(UnrollingIndex, col) ));
|
pres = padd(pres, pmul( lhs.template packet<Aligned>(row, UnrollingIndex) , rhs.template packet<Aligned>(UnrollingIndex, col) ));
|
||||||
@ -259,7 +259,7 @@ template<typename Lhs, typename Rhs, typename Packet>
|
|||||||
struct etor_product_coeff_vectorized_unroller<0, Lhs, Rhs, Packet>
|
struct etor_product_coeff_vectorized_unroller<0, Lhs, Rhs, Packet>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::PacketScalar &pres)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::PacketScalar &pres)
|
||||||
{
|
{
|
||||||
pres = pmul(lhs.template packet<Aligned>(row, 0) , rhs.template packet<Aligned>(0, col));
|
pres = pmul(lhs.template packet<Aligned>(row, 0) , rhs.template packet<Aligned>(0, col));
|
||||||
}
|
}
|
||||||
@ -271,7 +271,7 @@ struct etor_product_coeff_impl<InnerVectorizedTraversal, UnrollingIndex, Lhs, Rh
|
|||||||
typedef typename Lhs::PacketScalar Packet;
|
typedef typename Lhs::PacketScalar Packet;
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
enum { PacketSize = packet_traits<typename Lhs::Scalar>::size };
|
enum { PacketSize = packet_traits<typename Lhs::Scalar>::size };
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, RetScalar &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, RetScalar &res)
|
||||||
{
|
{
|
||||||
Packet pres;
|
Packet pres;
|
||||||
etor_product_coeff_vectorized_unroller<UnrollingIndex+1-PacketSize, Lhs, Rhs, Packet>::run(row, col, lhs, rhs, innerDim, pres);
|
etor_product_coeff_vectorized_unroller<UnrollingIndex+1-PacketSize, Lhs, Rhs, Packet>::run(row, col, lhs, rhs, innerDim, pres);
|
||||||
@ -284,7 +284,7 @@ template<typename Lhs, typename Rhs, int LhsRows = Lhs::RowsAtCompileTime, int R
|
|||||||
struct etor_product_coeff_vectorized_dyn_selector
|
struct etor_product_coeff_vectorized_dyn_selector
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
||||||
{
|
{
|
||||||
res = lhs.row(row).transpose().cwiseProduct(rhs.col(col)).sum();
|
res = lhs.row(row).transpose().cwiseProduct(rhs.col(col)).sum();
|
||||||
}
|
}
|
||||||
@ -296,7 +296,7 @@ template<typename Lhs, typename Rhs, int RhsCols>
|
|||||||
struct etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs,1,RhsCols>
|
struct etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs,1,RhsCols>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index /*row*/, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
static EIGEN_STRONG_INLINE void run(Index /*row*/, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
||||||
{
|
{
|
||||||
res = lhs.transpose().cwiseProduct(rhs.col(col)).sum();
|
res = lhs.transpose().cwiseProduct(rhs.col(col)).sum();
|
||||||
}
|
}
|
||||||
@ -306,7 +306,7 @@ template<typename Lhs, typename Rhs, int LhsRows>
|
|||||||
struct etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs,LhsRows,1>
|
struct etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs,LhsRows,1>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index /*col*/, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index /*col*/, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
||||||
{
|
{
|
||||||
res = lhs.row(row).transpose().cwiseProduct(rhs).sum();
|
res = lhs.row(row).transpose().cwiseProduct(rhs).sum();
|
||||||
}
|
}
|
||||||
@ -316,7 +316,7 @@ template<typename Lhs, typename Rhs>
|
|||||||
struct etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs,1,1>
|
struct etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs,1,1>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index /*row*/, Index /*col*/, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
EIGEN_STRONG_INLINE void run(Index /*row*/, Index /*col*/, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, typename Lhs::Scalar &res)
|
||||||
{
|
{
|
||||||
res = lhs.transpose().cwiseProduct(rhs).sum();
|
res = lhs.transpose().cwiseProduct(rhs).sum();
|
||||||
}
|
}
|
||||||
@ -326,7 +326,7 @@ template<typename Lhs, typename Rhs, typename RetScalar>
|
|||||||
struct etor_product_coeff_impl<InnerVectorizedTraversal, Dynamic, Lhs, Rhs, RetScalar>
|
struct etor_product_coeff_impl<InnerVectorizedTraversal, Dynamic, Lhs, Rhs, RetScalar>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, typename Lhs::Scalar &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, typename Lhs::Scalar &res)
|
||||||
{
|
{
|
||||||
etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs>::run(row, col, lhs, rhs, innerDim, res);
|
etor_product_coeff_vectorized_dyn_selector<Lhs,Rhs>::run(row, col, lhs, rhs, innerDim, res);
|
||||||
}
|
}
|
||||||
@ -340,7 +340,7 @@ template<int UnrollingIndex, typename Lhs, typename Rhs, typename Packet, int Lo
|
|||||||
struct etor_product_packet_impl<RowMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>
|
struct etor_product_packet_impl<RowMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet &res)
|
||||||
{
|
{
|
||||||
etor_product_packet_impl<RowMajor, UnrollingIndex-1, Lhs, Rhs, Packet, LoadMode>::run(row, col, lhs, rhs, innerDim, res);
|
etor_product_packet_impl<RowMajor, UnrollingIndex-1, Lhs, Rhs, Packet, LoadMode>::run(row, col, lhs, rhs, innerDim, res);
|
||||||
res = pmadd(pset1<Packet>(lhs.coeff(row, UnrollingIndex)), rhs.template packet<LoadMode>(UnrollingIndex, col), res);
|
res = pmadd(pset1<Packet>(lhs.coeff(row, UnrollingIndex)), rhs.template packet<LoadMode>(UnrollingIndex, col), res);
|
||||||
@ -351,7 +351,7 @@ template<int UnrollingIndex, typename Lhs, typename Rhs, typename Packet, int Lo
|
|||||||
struct etor_product_packet_impl<ColMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>
|
struct etor_product_packet_impl<ColMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet &res)
|
||||||
{
|
{
|
||||||
etor_product_packet_impl<ColMajor, UnrollingIndex-1, Lhs, Rhs, Packet, LoadMode>::run(row, col, lhs, rhs, innerDim, res);
|
etor_product_packet_impl<ColMajor, UnrollingIndex-1, Lhs, Rhs, Packet, LoadMode>::run(row, col, lhs, rhs, innerDim, res);
|
||||||
res = pmadd(lhs.template packet<LoadMode>(row, UnrollingIndex), pset1<Packet>(rhs.coeff(UnrollingIndex, col)), res);
|
res = pmadd(lhs.template packet<LoadMode>(row, UnrollingIndex), pset1<Packet>(rhs.coeff(UnrollingIndex, col)), res);
|
||||||
@ -362,7 +362,7 @@ template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
|
|||||||
struct etor_product_packet_impl<RowMajor, 0, Lhs, Rhs, Packet, LoadMode>
|
struct etor_product_packet_impl<RowMajor, 0, Lhs, Rhs, Packet, LoadMode>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, Packet &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, Packet &res)
|
||||||
{
|
{
|
||||||
res = pmul(pset1<Packet>(lhs.coeff(row, 0)),rhs.template packet<LoadMode>(0, col));
|
res = pmul(pset1<Packet>(lhs.coeff(row, 0)),rhs.template packet<LoadMode>(0, col));
|
||||||
}
|
}
|
||||||
@ -372,7 +372,7 @@ template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
|
|||||||
struct etor_product_packet_impl<ColMajor, 0, Lhs, Rhs, Packet, LoadMode>
|
struct etor_product_packet_impl<ColMajor, 0, Lhs, Rhs, Packet, LoadMode>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, Packet &res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, Packet &res)
|
||||||
{
|
{
|
||||||
res = pmul(lhs.template packet<LoadMode>(row, 0), pset1<Packet>(rhs.coeff(0, col)));
|
res = pmul(lhs.template packet<LoadMode>(row, 0), pset1<Packet>(rhs.coeff(0, col)));
|
||||||
}
|
}
|
||||||
@ -382,7 +382,7 @@ template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
|
|||||||
struct etor_product_packet_impl<RowMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>
|
struct etor_product_packet_impl<RowMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet& res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet& res)
|
||||||
{
|
{
|
||||||
eigen_assert(innerDim>0 && "you are using a non initialized matrix");
|
eigen_assert(innerDim>0 && "you are using a non initialized matrix");
|
||||||
res = pmul(pset1<Packet>(lhs.coeff(row, 0)),rhs.template packet<LoadMode>(0, col));
|
res = pmul(pset1<Packet>(lhs.coeff(row, 0)),rhs.template packet<LoadMode>(0, col));
|
||||||
@ -395,7 +395,7 @@ template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
|
|||||||
struct etor_product_packet_impl<ColMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>
|
struct etor_product_packet_impl<ColMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>
|
||||||
{
|
{
|
||||||
typedef typename Lhs::Index Index;
|
typedef typename Lhs::Index Index;
|
||||||
EIGEN_STRONG_INLINE static void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet& res)
|
static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet& res)
|
||||||
{
|
{
|
||||||
eigen_assert(innerDim>0 && "you are using a non initialized matrix");
|
eigen_assert(innerDim>0 && "you are using a non initialized matrix");
|
||||||
res = pmul(lhs.template packet<LoadMode>(row, 0), pset1<Packet>(rhs.coeff(0, col)));
|
res = pmul(lhs.template packet<LoadMode>(row, 0), pset1<Packet>(rhs.coeff(0, col)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user