mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-21 07:19:46 +08:00
Pulled latest updates from trunk
This commit is contained in:
commit
73ef5371e4
@ -256,12 +256,13 @@ struct copy_using_evaluator_innervec_CompleteUnrolling
|
|||||||
enum {
|
enum {
|
||||||
outer = Index / DstXprType::InnerSizeAtCompileTime,
|
outer = Index / DstXprType::InnerSizeAtCompileTime,
|
||||||
inner = Index % DstXprType::InnerSizeAtCompileTime,
|
inner = Index % DstXprType::InnerSizeAtCompileTime,
|
||||||
JointAlignment = Kernel::AssignmentTraits::JointAlignment
|
JointAlignment = Kernel::AssignmentTraits::JointAlignment,
|
||||||
|
DefaultAlignment = unpacket_traits<PacketType>::alignment
|
||||||
};
|
};
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
|
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
|
||||||
{
|
{
|
||||||
kernel.template assignPacketByOuterInner<Aligned, JointAlignment, PacketType>(outer, inner);
|
kernel.template assignPacketByOuterInner<DefaultAlignment, JointAlignment, PacketType>(outer, inner);
|
||||||
enum { NextIndex = Index + unpacket_traits<PacketType>::size };
|
enum { NextIndex = Index + unpacket_traits<PacketType>::size };
|
||||||
copy_using_evaluator_innervec_CompleteUnrolling<Kernel, NextIndex, Stop>::run(kernel);
|
copy_using_evaluator_innervec_CompleteUnrolling<Kernel, NextIndex, Stop>::run(kernel);
|
||||||
}
|
}
|
||||||
@ -277,9 +278,12 @@ template<typename Kernel, int Index_, int Stop>
|
|||||||
struct copy_using_evaluator_innervec_InnerUnrolling
|
struct copy_using_evaluator_innervec_InnerUnrolling
|
||||||
{
|
{
|
||||||
typedef typename Kernel::PacketType PacketType;
|
typedef typename Kernel::PacketType PacketType;
|
||||||
|
enum {
|
||||||
|
DefaultAlignment = unpacket_traits<PacketType>::alignment
|
||||||
|
};
|
||||||
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
|
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
|
||||||
{
|
{
|
||||||
kernel.template assignPacketByOuterInner<Aligned, Aligned, PacketType>(outer, Index_);
|
kernel.template assignPacketByOuterInner<DefaultAlignment, DefaultAlignment, PacketType>(outer, Index_);
|
||||||
enum { NextIndex = Index_ + unpacket_traits<PacketType>::size };
|
enum { NextIndex = Index_ + unpacket_traits<PacketType>::size };
|
||||||
copy_using_evaluator_innervec_InnerUnrolling<Kernel, NextIndex, Stop>::run(kernel, outer);
|
copy_using_evaluator_innervec_InnerUnrolling<Kernel, NextIndex, Stop>::run(kernel, outer);
|
||||||
}
|
}
|
||||||
@ -433,6 +437,9 @@ template<typename Kernel>
|
|||||||
struct dense_assignment_loop<Kernel, InnerVectorizedTraversal, NoUnrolling>
|
struct dense_assignment_loop<Kernel, InnerVectorizedTraversal, NoUnrolling>
|
||||||
{
|
{
|
||||||
typedef typename Kernel::PacketType PacketType;
|
typedef typename Kernel::PacketType PacketType;
|
||||||
|
enum {
|
||||||
|
DefaultAlignment = unpacket_traits<PacketType>::alignment
|
||||||
|
};
|
||||||
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
|
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
|
||||||
{
|
{
|
||||||
const Index innerSize = kernel.innerSize();
|
const Index innerSize = kernel.innerSize();
|
||||||
@ -440,7 +447,7 @@ struct dense_assignment_loop<Kernel, InnerVectorizedTraversal, NoUnrolling>
|
|||||||
const Index packetSize = unpacket_traits<PacketType>::size;
|
const Index packetSize = unpacket_traits<PacketType>::size;
|
||||||
for(Index outer = 0; outer < outerSize; ++outer)
|
for(Index outer = 0; outer < outerSize; ++outer)
|
||||||
for(Index inner = 0; inner < innerSize; inner+=packetSize)
|
for(Index inner = 0; inner < innerSize; inner+=packetSize)
|
||||||
kernel.template assignPacketByOuterInner<Aligned, Aligned, PacketType>(outer, inner);
|
kernel.template assignPacketByOuterInner<DefaultAlignment, DefaultAlignment, PacketType>(outer, inner);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -850,14 +850,14 @@ struct unary_evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel>, IndexBa
|
|||||||
template<int StoreMode, typename PacketType>
|
template<int StoreMode, typename PacketType>
|
||||||
EIGEN_STRONG_INLINE
|
EIGEN_STRONG_INLINE
|
||||||
void writePacket(Index row, Index col, const PacketType& x)
|
void writePacket(Index row, Index col, const PacketType& x)
|
||||||
{
|
{
|
||||||
return m_argImpl.template writePacket<StoreMode,PacketType>(m_startRow.value() + row, m_startCol.value() + col, x);
|
return m_argImpl.template writePacket<StoreMode,PacketType>(m_startRow.value() + row, m_startCol.value() + col, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<int StoreMode, typename PacketType>
|
template<int StoreMode, typename PacketType>
|
||||||
EIGEN_STRONG_INLINE
|
EIGEN_STRONG_INLINE
|
||||||
void writePacket(Index index, const PacketType& x)
|
void writePacket(Index index, const PacketType& x)
|
||||||
{
|
{
|
||||||
return writePacket<StoreMode,PacketType>(RowsAtCompileTime == 1 ? 0 : index,
|
return writePacket<StoreMode,PacketType>(RowsAtCompileTime == 1 ? 0 : index,
|
||||||
RowsAtCompileTime == 1 ? index : 0,
|
RowsAtCompileTime == 1 ? index : 0,
|
||||||
x);
|
x);
|
||||||
|
Loading…
Reference in New Issue
Block a user