12 #ifndef EIGEN_ASSIGN_EVALUATOR_H
13 #define EIGEN_ASSIGN_EVALUATOR_H
27 template <
typename DstEvaluator,
typename SrcEvaluator,
typename AssignFunc,
int MaxPacketSize = -1>
30 typedef typename DstEvaluator::XprType
Dst;
48 InnerSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::SizeAtCompileTime)
50 : int(
Dst::RowsAtCompileTime),
53 : int(
Dst::MaxRowsAtCompileTime),
122 MayUnrollCompletely = int(Dst::SizeAtCompileTime) !=
Dynamic
123 && int(Dst::SizeAtCompileTime) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <=
int(
UnrollingLimit),
151 #ifdef EIGEN_DEBUG_ASSIGN
154 std::cerr <<
"DstXpr: " <<
typeid(
typename DstEvaluator::XprType).name() << std::endl;
155 std::cerr <<
"SrcXpr: " <<
typeid(
typename SrcEvaluator::XprType).name() << std::endl;
156 std::cerr.setf(std::ios::hex, std::ios::basefield);
157 std::cerr <<
"DstFlags" <<
" = " <<
DstFlags <<
" (" << demangle_flags(
DstFlags) <<
" )" << std::endl;
158 std::cerr <<
"SrcFlags" <<
" = " <<
SrcFlags <<
" (" << demangle_flags(
SrcFlags) <<
" )" << std::endl;
159 std::cerr.unsetf(std::ios::hex);
176 std::cerr <<
"Traversal" <<
" = " <<
Traversal <<
" (" << demangle_traversal(
Traversal) <<
")" << std::endl;
183 std::cerr <<
"Unrolling" <<
" = " <<
Unrolling <<
" (" << demangle_unrolling(
Unrolling) <<
")" << std::endl;
184 std::cerr << std::endl;
197 template<
typename Kernel,
int Index,
int Stop>
205 outer =
Index / DstXprType::InnerSizeAtCompileTime,
206 inner =
Index % DstXprType::InnerSizeAtCompileTime
211 kernel.assignCoeffByOuterInner(outer, inner);
216 template<
typename Kernel,
int Stop>
222 template<
typename Kernel,
int Index_,
int Stop>
227 kernel.assignCoeffByOuterInner(outer, Index_);
232 template<
typename Kernel,
int Stop>
242 template<
typename Kernel,
int Index,
int Stop>
247 kernel.assignCoeff(
Index);
252 template<
typename Kernel,
int Stop>
262 template<
typename Kernel,
int Index,
int Stop>
271 outer =
Index / DstXprType::InnerSizeAtCompileTime,
272 inner =
Index % DstXprType::InnerSizeAtCompileTime,
279 kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, inner);
285 template<
typename Kernel,
int Stop>
291 template<
typename Kernel,
int Index_,
int Stop,
int SrcAlignment,
int DstAlignment>
297 kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, Index_);
303 template<
typename Kernel,
int Stop,
int SrcAlignment,
int DstAlignment>
315 template<
typename Kernel,
316 int Traversal = Kernel::AssignmentTraits::Traversal,
317 int Unrolling = Kernel::AssignmentTraits::Unrolling>
325 template<
typename Kernel,
int Unrolling>
330 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
332 EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT)
340 template<
typename Kernel>
345 for(
Index outer = 0; outer < kernel.outerSize(); ++outer) {
346 for(
Index inner = 0; inner < kernel.innerSize(); ++inner) {
347 kernel.assignCoeffByOuterInner(outer, inner);
353 template<
typename Kernel>
358 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
363 template<
typename Kernel>
368 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
370 const Index outerSize = kernel.outerSize();
371 for(
Index outer = 0; outer < outerSize; ++outer)
384 template <
bool IsAligned = false>
388 template <
typename Kernel>
399 template <
typename Kernel>
404 template <
typename Kernel>
410 for (
Index index = start; index <
end; ++index)
411 kernel.assignCoeff(index);
415 template<
typename Kernel>
421 typedef typename Kernel::Scalar Scalar;
422 typedef typename Kernel::PacketType
PacketType;
424 requestedAlignment = Kernel::AssignmentTraits::LinearRequiredAlignment,
426 dstIsAligned = int(Kernel::AssignmentTraits::DstAlignment)>=int(requestedAlignment),
428 : int(Kernel::AssignmentTraits::DstAlignment),
429 srcAlignment = Kernel::AssignmentTraits::JointAlignment
431 const Index alignedStart = dstIsAligned ? 0 : internal::first_aligned<requestedAlignment>(kernel.dstDataPtr(),
size);
432 const Index alignedEnd = alignedStart + ((
size-alignedStart)/packetSize)*packetSize;
436 for(
Index index = alignedStart; index < alignedEnd; index += packetSize)
437 kernel.template assignPacket<dstAlignment, srcAlignment, PacketType>(index);
443 template<
typename Kernel>
448 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
449 typedef typename Kernel::PacketType
PacketType;
451 enum {
size = DstXprType::SizeAtCompileTime,
453 alignedSize = (int(
size)/packetSize)*packetSize };
464 template<
typename Kernel>
474 const Index innerSize = kernel.innerSize();
475 const Index outerSize = kernel.outerSize();
477 for(
Index outer = 0; outer < outerSize; ++outer)
478 for(
Index inner = 0; inner < innerSize; inner+=packetSize)
479 kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, inner);
483 template<
typename Kernel>
488 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
493 template<
typename Kernel>
498 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
499 typedef typename Kernel::AssignmentTraits Traits;
500 const Index outerSize = kernel.outerSize();
501 for(
Index outer = 0; outer < outerSize; ++outer)
503 Traits::SrcAlignment, Traits::DstAlignment>::run(kernel, outer);
511 template<
typename Kernel>
518 kernel.assignCoeff(i);
522 template<
typename Kernel>
527 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
536 template<
typename Kernel>
541 typedef typename Kernel::Scalar Scalar;
542 typedef typename Kernel::PacketType
PacketType;
545 requestedAlignment = int(Kernel::AssignmentTraits::InnerRequiredAlignment),
547 dstIsAligned =
int(Kernel::AssignmentTraits::DstAlignment)>=int(requestedAlignment),
548 dstAlignment = alignable ? int(requestedAlignment)
549 : int(Kernel::AssignmentTraits::DstAlignment)
551 const Scalar *dst_ptr = kernel.dstDataPtr();
552 if((!
bool(dstIsAligned)) && (
UIntPtr(dst_ptr) %
sizeof(Scalar))>0)
557 const Index packetAlignedMask = packetSize - 1;
558 const Index innerSize = kernel.innerSize();
559 const Index outerSize = kernel.outerSize();
560 const Index alignedStep = alignable ? (packetSize - kernel.outerStride() % packetSize) & packetAlignedMask : 0;
561 Index alignedStart = ((!alignable) ||
bool(dstIsAligned)) ? 0 : internal::first_aligned<requestedAlignment>(dst_ptr, innerSize);
563 for(
Index outer = 0; outer < outerSize; ++outer)
565 const Index alignedEnd = alignedStart + ((innerSize-alignedStart) & ~packetAlignedMask);
567 for(
Index inner = 0; inner<alignedStart ; ++inner)
568 kernel.assignCoeffByOuterInner(outer, inner);
571 for(
Index inner = alignedStart; inner<alignedEnd; inner+=packetSize)
572 kernel.template assignPacketByOuterInner<dstAlignment, Unaligned, PacketType>(outer, inner);
575 for(
Index inner = alignedEnd; inner<innerSize ; ++inner)
576 kernel.assignCoeffByOuterInner(outer, inner);
578 alignedStart =
numext::mini((alignedStart+alignedStep)%packetSize, innerSize);
583 #if EIGEN_UNALIGNED_VECTORIZE
584 template<
typename Kernel>
589 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
590 typedef typename Kernel::PacketType
PacketType;
592 enum { innerSize = DstXprType::InnerSizeAtCompileTime,
594 vectorizableSize = (int(innerSize) / int(packetSize)) *
int(packetSize),
595 size = DstXprType::SizeAtCompileTime };
597 for(
Index outer = 0; outer < kernel.outerSize(); ++outer)
617 template<
typename DstEvaluatorTypeT,
typename SrcEvaluatorTypeT,
typename Functor,
int Version = Specialized>
627 typedef typename DstEvaluatorType::Scalar
Scalar;
634 : m_dst(dst), m_src(src), m_functor(func), m_dstExpr(dstExpr)
636 #ifdef EIGEN_DEBUG_ASSIGN
637 AssignmentTraits::debug();
654 m_functor.assignCoeff(m_dst.coeffRef(
row,
col), m_src.coeff(
row,
col));
660 m_functor.assignCoeff(m_dst.coeffRef(index), m_src.coeff(index));
666 Index row = rowIndexByOuterInner(outer, inner);
667 Index col = colIndexByOuterInner(outer, inner);
672 template<
int StoreMode,
int LoadMode,
typename PacketType>
675 m_functor.template assignPacket<StoreMode>(&m_dst.coeffRef(
row,
col), m_src.template packet<LoadMode,PacketType>(
row,
col));
678 template<
int StoreMode,
int LoadMode,
typename PacketType>
681 m_functor.template assignPacket<StoreMode>(&m_dst.coeffRef(index), m_src.template packet<LoadMode,PacketType>(index));
684 template<
int StoreMode,
int LoadMode,
typename PacketType>
687 Index row = rowIndexByOuterInner(outer, inner);
688 Index col = colIndexByOuterInner(outer, inner);
689 assignPacket<StoreMode,LoadMode,PacketType>(
row,
col);
694 typedef typename DstEvaluatorType::ExpressionTraits Traits;
695 return int(Traits::RowsAtCompileTime) == 1 ? 0
696 : int(Traits::ColsAtCompileTime) == 1 ? inner
703 typedef typename DstEvaluatorType::ExpressionTraits Traits;
704 return int(Traits::ColsAtCompileTime) == 1 ? 0
705 : int(Traits::RowsAtCompileTime) == 1 ? inner
712 return m_dstExpr.data();
727 template<
typename DstEvaluatorTypeT,
typename SrcEvaluatorTypeT,
typename Functor>
739 :
Base(dst, src, func, dstExpr)
748 template<
typename DstXprType,
typename SrcXprType,
typename Functor>
754 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
757 template<
typename DstXprType,
typename SrcXprType,
typename T1,
typename T2>
761 Index dstRows = src.rows();
762 Index dstCols = src.cols();
763 if(((dst.rows()!=dstRows) || (dst.cols()!=dstCols)))
764 dst.resize(dstRows, dstCols);
765 eigen_assert(dst.rows() == dstRows && dst.cols() == dstCols);
768 template<
typename DstXprType,
typename SrcXprType,
typename Functor>
774 SrcEvaluatorType srcEvaluator(src);
780 DstEvaluatorType dstEvaluator(dst);
783 Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
789 #ifndef EIGEN_GPU_COMPILE_PHASE
790 template<
typename DstXprType>
794 std::fill_n(dst.data(), dst.size(), src.functor()());
798 template<
typename DstXprType,
typename SrcXprType>
811 template<
typename DstShape,
typename SrcShape>
struct AssignmentKind;
821 template<
typename DstXprType,
typename SrcXprType,
typename Functor,
832 template<
typename Dst,
typename Src>
838 template<
typename Dst,
typename Src>
846 template<
typename Dst,
typename Src,
typename Func>
854 template<
typename Dst,
typename Src,
typename Func>
863 template<
typename Dst,
template <
typename>
class StorageBase,
typename Src,
typename Func>
871 template<
typename Dst,
typename Src,
typename Func>
876 NeedToTranspose = ( (int(Dst::RowsAtCompileTime) == 1 && int(Src::ColsAtCompileTime) == 1)
877 || (
int(Dst::ColsAtCompileTime) == 1 && int(Src::RowsAtCompileTime) == 1)
878 ) && int(Dst::SizeAtCompileTime) != 1
883 ActualDstType actualDst(dst);
893 template<
typename Dst,
typename Src,
typename Func>
904 SrcEvaluatorType srcEvaluator(src);
907 DstEvaluatorType dstEvaluator(dst);
908 Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
913 template<
typename Dst,
typename Src>
920 template<
typename Dst,
typename Src,
typename Func>
931 template<
typename Dst,
typename Src>
944 template<
typename DstXprType,
typename SrcXprType,
typename Functor,
typename Weak>
950 #ifndef EIGEN_NO_DEBUG
962 template<
typename DstXprType,
typename SrcXprType,
typename Functor,
typename Weak>
968 Index dstRows = src.rows();
969 Index dstCols = src.cols();
970 if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
971 dst.resize(dstRows, dstCols);
973 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
979 template<
typename SrcScalarType>
983 Index dstRows = src.rows();
984 Index dstCols = src.cols();
985 if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
986 dst.resize(dstRows, dstCols);
988 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
992 template<
typename SrcScalarType>
996 Index dstRows = src.rows();
997 Index dstCols = src.cols();
998 if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
999 dst.resize(dstRows, dstCols);
1001 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ColXpr col(Index i)
This is the const version of col().
Definition: BlockMethods.h:1097
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE RowXpr row(Index i)
This is the const version of row(). */.
Definition: BlockMethods.h:1118
#define EIGEN_PLAIN_ENUM_MIN(a, b)
Definition: Macros.h:1288
#define EIGEN_NOEXCEPT
Definition: Macros.h:1418
#define EIGEN_DEBUG_VAR(x)
Definition: Macros.h:898
#define EIGEN_CONSTEXPR
Definition: Macros.h:787
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:976
#define EIGEN_DONT_INLINE
Definition: Macros.h:940
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition: Macros.h:1049
#define eigen_assert(x)
Definition: Macros.h:1037
#define EIGEN_STRONG_INLINE
Definition: Macros.h:917
#define EIGEN_SIZE_MIN_PREFER_FIXED(a, b)
Definition: Macros.h:1302
#define EIGEN_UNROLLING_LIMIT
Definition: Settings.h:24
#define EIGEN_STATIC_ASSERT_LVALUE(Derived)
Definition: StaticAssert.h:202
#define EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0, TYPE1)
Definition: StaticAssert.h:192
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition: StaticAssert.h:127
#define EIGEN_CHECK_BINARY_COMPATIBILIY(BINOP, LHS, RHS)
Definition: XprHelper.h:850
Generic expression of a matrix where all coefficients are defined by a functor.
Definition: CwiseNullaryOp.h:61
Pseudo expression providing an operator = assuming no aliasing.
Definition: NoAlias.h:32
EIGEN_DEVICE_FUNC ExpressionType & expression() const
Definition: NoAlias.h:64
Convenience specialization of Stride to specify only an outer stride See class Map for some examples.
Definition: Stride.h:107
Definition: AssignEvaluator.h:619
DstXprType & m_dstExpr
Definition: AssignEvaluator.h:720
EIGEN_DEVICE_FUNC const Scalar * dstDataPtr() const
Definition: AssignEvaluator.h:710
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacket(Index index)
Definition: AssignEvaluator.h:679
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:641
EIGEN_DEVICE_FUNC DstEvaluatorType & dstEvaluator() EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:648
const SrcEvaluatorType & m_src
Definition: AssignEvaluator.h:717
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE generic_dense_assignment_kernel(DstEvaluatorType &dst, const SrcEvaluatorType &src, const Functor &func, DstXprType &dstExpr)
Definition: AssignEvaluator.h:633
DstEvaluatorTypeT DstEvaluatorType
Definition: AssignEvaluator.h:625
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:644
AssignmentTraits::PacketType PacketType
Definition: AssignEvaluator.h:629
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:645
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeff(Index row, Index col)
Assign src(row,col) to dst(row,col) through the assignment functor.
Definition: AssignEvaluator.h:652
SrcEvaluatorTypeT SrcEvaluatorType
Definition: AssignEvaluator.h:626
DstEvaluatorType & m_dst
Definition: AssignEvaluator.h:716
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index outerSize() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:643
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacketByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:685
const Functor & m_functor
Definition: AssignEvaluator.h:718
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeff(Index index)
Definition: AssignEvaluator.h:658
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index outerStride() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:646
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index innerSize() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:642
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacket(Index row, Index col)
Definition: AssignEvaluator.h:673
copy_using_evaluator_traits< DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor > AssignmentTraits
Definition: AssignEvaluator.h:628
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rowIndexByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:692
EIGEN_DEVICE_FUNC const SrcEvaluatorType & srcEvaluator() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:649
SrcEvaluatorTypeT::XprType SrcXprType
Definition: AssignEvaluator.h:622
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index colIndexByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:701
DstEvaluatorTypeT::XprType DstXprType
Definition: AssignEvaluator.h:621
DstEvaluatorType::Scalar Scalar
Definition: AssignEvaluator.h:627
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeffByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:664
Definition: AssignEvaluator.h:729
Base::DstXprType DstXprType
Definition: AssignEvaluator.h:734
EIGEN_DEVICE_FUNC restricted_packet_dense_assignment_kernel(DstEvaluatorTypeT &dst, const SrcEvaluatorTypeT &src, const Functor &func, DstXprType &dstExpr)
Definition: AssignEvaluator.h:738
generic_dense_assignment_kernel< DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, BuiltIn > Base
Definition: AssignEvaluator.h:731
AssignmentTraits::PacketType PacketType
Definition: AssignEvaluator.h:736
copy_using_evaluator_traits< DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, 4 > AssignmentTraits
Definition: AssignEvaluator.h:735
Base::Scalar Scalar
Definition: AssignEvaluator.h:733
const unsigned int LinearAccessBit
Definition: Constants.h:130
const unsigned int DirectAccessBit
Definition: Constants.h:155
const unsigned int RowMajorBit
Definition: Constants.h:66
std::size_t UIntPtr
Definition: Meta.h:92
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_restricted_packet_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:895
void check_for_aliasing(const Dst &dst, const Src &src)
Definition: Transpose.h:452
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize_if_allowed(DstXprType &dst, const SrcXprType &src, const Functor &)
Definition: AssignEvaluator.h:750
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:873
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_assignment(Dst &dst, const Src &src)
Definition: AssignEvaluator.h:834
EIGEN_CONSTEXPR Index size(const T &x)
Definition: Meta.h:479
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_dense_assignment_loop(DstXprType &dst, const SrcXprType &src, const Functor &func)
Definition: AssignEvaluator.h:769
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_assignment_no_alias_no_transpose(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:922
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
Definition: MathFunctions.h:1083
static EIGEN_DEPRECATED const end_t end
Definition: IndexedViewHelper.h:181
Namespace containing all symbols from the Eigen library.
Definition: LDLT.h:16
const unsigned int ActualPacketAccessBit
Definition: Constants.h:107
@ InnerVectorizedTraversal
Definition: Constants.h:282
@ LinearVectorizedTraversal
Definition: Constants.h:285
@ DefaultTraversal
Definition: Constants.h:277
@ SliceVectorizedTraversal
Definition: Constants.h:288
@ LinearTraversal
Definition: Constants.h:279
@ AllAtOnceTraversal
Definition: Constants.h:292
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
@ InnerUnrolling
Definition: Constants.h:301
@ CompleteUnrolling
Definition: Constants.h:304
@ NoUnrolling
Definition: Constants.h:299
const int Dynamic
Definition: Constants.h:22
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
Flags
Special flags for archives.
Definition: cereal.hpp:185
Definition: document.h:416
Definition: Constants.h:528
Dense2Dense Kind
Definition: AssignEvaluator.h:818
Definition: AssignEvaluator.h:817
EigenBase2EigenBase Kind
Definition: AssignEvaluator.h:817
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const Functor &func)
Definition: AssignEvaluator.h:948
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op< typename DstXprType::Scalar, SrcScalarType > &)
Definition: AssignEvaluator.h:994
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op< typename DstXprType::Scalar, SrcScalarType > &)
Definition: AssignEvaluator.h:981
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op< typename DstXprType::Scalar, typename SrcXprType::Scalar > &)
Definition: AssignEvaluator.h:966
Definition: AssignEvaluator.h:824
Definition: AssignEvaluator.h:814
Definition: AssignEvaluator.h:815
Definition: ForwardDeclarations.h:151
Definition: AssignmentFunctors.h:46
Definition: AssignmentFunctors.h:21
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &)
Definition: AssignEvaluator.h:219
Definition: AssignEvaluator.h:199
DstEvaluatorType::XprType DstXprType
Definition: AssignEvaluator.h:202
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:209
Kernel::DstEvaluatorType DstEvaluatorType
Definition: AssignEvaluator.h:201
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &, Index)
Definition: AssignEvaluator.h:235
Definition: AssignEvaluator.h:224
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
Definition: AssignEvaluator.h:225
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &)
Definition: AssignEvaluator.h:255
Definition: AssignEvaluator.h:244
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:245
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &)
Definition: AssignEvaluator.h:288
Definition: AssignEvaluator.h:264
Kernel::PacketType PacketType
Definition: AssignEvaluator.h:268
Kernel::DstEvaluatorType DstEvaluatorType
Definition: AssignEvaluator.h:266
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:277
DstEvaluatorType::XprType DstXprType
Definition: AssignEvaluator.h:267
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &, Index)
Definition: AssignEvaluator.h:306
Definition: AssignEvaluator.h:293
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
Definition: AssignEvaluator.h:295
Kernel::PacketType PacketType
Definition: AssignEvaluator.h:294
Definition: AssignEvaluator.h:29
@ ActualPacketSize
Definition: AssignEvaluator.h:118
@ UnrollingLimit
Definition: AssignEvaluator.h:121
@ InnerPacketSize
Definition: AssignEvaluator.h:66
@ LinearPacketSize
Definition: AssignEvaluator.h:65
@ InnerRequiredAlignment
Definition: AssignEvaluator.h:72
@ LinearRequiredAlignment
Definition: AssignEvaluator.h:71
@ InnerSize
Definition: AssignEvaluator.h:48
@ MaxSizeAtCompileTime
Definition: AssignEvaluator.h:57
@ InnerMaxSize
Definition: AssignEvaluator.h:51
@ RestrictedLinearSize
Definition: AssignEvaluator.h:55
@ RestrictedInnerSize
Definition: AssignEvaluator.h:54
conditional< int(Traversal)==LinearVectorizedTraversal, LinearPacketType, InnerPacketType >::type PacketType
Definition: AssignEvaluator.h:114
@ Vectorized
Definition: AssignEvaluator.h:109
@ Traversal
Definition: AssignEvaluator.h:102
@ SrcAlignment
Definition: AssignEvaluator.h:41
@ JointAlignment
Definition: AssignEvaluator.h:43
@ DstAlignment
Definition: AssignEvaluator.h:40
@ DstHasDirectAccess
Definition: AssignEvaluator.h:42
@ Unrolling
Definition: AssignEvaluator.h:130
find_best_packet< DstScalar, RestrictedInnerSize >::type InnerPacketType
Definition: AssignEvaluator.h:62
DstEvaluator::XprType Dst
Definition: AssignEvaluator.h:30
@ SrcFlags
Definition: AssignEvaluator.h:35
@ DstFlags
Definition: AssignEvaluator.h:34
@ MightVectorize
Definition: AssignEvaluator.h:80
@ MayLinearVectorize
Definition: AssignEvaluator.h:88
@ MayLinearize
Definition: AssignEvaluator.h:87
@ MayInnerVectorize
Definition: AssignEvaluator.h:83
@ SrcIsRowMajor
Definition: AssignEvaluator.h:78
@ MaySliceVectorize
Definition: AssignEvaluator.h:92
@ DstIsRowMajor
Definition: AssignEvaluator.h:77
@ StorageOrdersAgree
Definition: AssignEvaluator.h:79
find_best_packet< DstScalar, RestrictedLinearSize >::type LinearPacketType
Definition: AssignEvaluator.h:61
Dst::Scalar DstScalar
Definition: AssignEvaluator.h:31
static EIGEN_DEVICE_FUNC void EIGEN_STRONG_INLINE run(Kernel &)
Definition: AssignEvaluator.h:328
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:356
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:366
static EIGEN_DEVICE_FUNC void EIGEN_STRONG_INLINE run(Kernel &kernel)
Definition: AssignEvaluator.h:343
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:486
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:496
Kernel::PacketType PacketType
Definition: AssignEvaluator.h:467
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:472
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:525
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:514
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:446
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:418
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:539
Definition: AssignEvaluator.h:318
Definition: CoreEvaluators.h:84
storage_kind_to_shape< typename traits< T >::StorageKind >::Shape Shape
Definition: CoreEvaluators.h:74
Definition: CoreEvaluators.h:91
find_best_packet_helper< Size, typename packet_traits< T >::type >::type type
Definition: XprHelper.h:208
Definition: XprHelper.h:176
Definition: DenseCoeffsBase.h:671
Definition: GenericPacketMath.h:107
Definition: XprHelper.h:295
Definition: NullaryFunctors.h:18
Definition: AssignmentFunctors.h:67
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel, Index start, Index end)
Definition: AssignEvaluator.h:405
Definition: AssignEvaluator.h:386
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &, Index, Index)
Definition: AssignEvaluator.h:389
Definition: GenericPacketMath.h:133
@ size
Definition: GenericPacketMath.h:138
#define const
Definition: zconf.h:233