12#ifndef EIGEN_ASSIGN_EVALUATOR_H
13#define EIGEN_ASSIGN_EVALUATOR_H
27template <
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),
51 InnerMaxSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime)
53 : int(Dst::MaxRowsAtCompileTime),
57 MaxSizeAtCompileTime = Dst::SizeAtCompileTime
79 StorageOrdersAgree = (int(DstIsRowMajor) == int(SrcIsRowMajor)),
80 MightVectorize =
bool(StorageOrdersAgree)
83 MayInnerVectorize = MightVectorize
84 && int(InnerSize)!=
Dynamic && int(InnerSize)%int(InnerPacketSize)==0
88 MayLinearVectorize =
bool(MightVectorize) && bool(MayLinearize) && bool(
DstHasDirectAccess)
122 MayUnrollCompletely = int(Dst::SizeAtCompileTime) !=
Dynamic
123 && int(Dst::SizeAtCompileTime) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <=
int(UnrollingLimit),
124 MayUnrollInner = int(InnerSize) !=
Dynamic
125 && int(InnerSize) * (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;
197template<
typename Kernel,
int Index,
int Stop>
205 outer =
Index / DstXprType::InnerSizeAtCompileTime,
206 inner =
Index % DstXprType::InnerSizeAtCompileTime
211 kernel.assignCoeffByOuterInner(outer, inner);
216template<
typename Kernel,
int Stop>
222template<
typename Kernel,
int Index_,
int Stop>
227 kernel.assignCoeffByOuterInner(outer, Index_);
232template<
typename Kernel,
int Stop>
242template<
typename Kernel,
int Index,
int Stop>
247 kernel.assignCoeff(
Index);
252template<
typename Kernel,
int Stop>
262template<
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);
285template<
typename Kernel,
int Stop>
291template<
typename Kernel,
int Index_,
int Stop,
int SrcAlignment,
int DstAlignment>
297 kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, Index_);
303template<
typename Kernel,
int Stop,
int SrcAlignment,
int DstAlignment>
315template<
typename Kernel,
316 int Traversal = Kernel::AssignmentTraits::Traversal,
317 int Unrolling = Kernel::AssignmentTraits::Unrolling>
325template<
typename Kernel,
int Unrolling>
330 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
332 EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT)
340template<
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);
353template<
typename Kernel>
358 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
363template<
typename Kernel>
368 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
370 const Index outerSize = kernel.outerSize();
371 for(
Index outer = 0; outer < outerSize; ++outer)
384template <
bool IsAligned = false>
388 template <
typename Kernel>
399 template <
typename Kernel>
404 template <
typename Kernel>
411 kernel.assignCoeff(
index);
415template<
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;
437 kernel.template assignPacket<dstAlignment, srcAlignment, PacketType>(
index);
443template<
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 };
464template<
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);
483template<
typename Kernel>
488 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
493template<
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);
511template<
typename Kernel>
518 kernel.assignCoeff(i);
522template<
typename Kernel>
527 typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
536template<
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
584template<
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)
617template<
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();
727template<
typename DstEvaluatorTypeT,
typename SrcEvaluatorTypeT,
typename Functor>
739 :
Base(dst, src, func, dstExpr)
748template<
typename DstXprType,
typename SrcXprType,
typename Functor>
754 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
757template<
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);
768template<
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
790template<
typename DstXprType>
794 std::fill_n(dst.data(), dst.size(), src.functor()());
798template<
typename DstXprType,
typename SrcXprType>
811template<
typename DstShape,
typename SrcShape>
struct AssignmentKind;
821template<
typename DstXprType,
typename SrcXprType,
typename Functor,
832template<
typename Dst,
typename Src>
838template<
typename Dst,
typename Src>
846template<
typename Dst,
typename Src,
typename Func>
854template<
typename Dst,
typename Src,
typename Func>
863template<
typename Dst,
template <
typename>
class StorageBase,
typename Src,
typename Func>
871template<
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);
893template<
typename Dst,
typename Src,
typename Func>
904 SrcEvaluatorType srcEvaluator(src);
907 DstEvaluatorType dstEvaluator(dst);
908 Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
913template<
typename Dst,
typename Src>
920template<
typename Dst,
typename Src,
typename Func>
931template<
typename Dst,
typename Src>
944template<
typename DstXprType,
typename SrcXprType,
typename Functor,
typename Weak>
950#ifndef EIGEN_NO_DEBUG
962template<
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:1298
#define EIGEN_NOEXCEPT
Definition: Macros.h:1428
#define EIGEN_DEBUG_VAR(x)
Definition: Macros.h:908
#define EIGEN_CONSTEXPR
Definition: Macros.h:797
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:986
#define EIGEN_DONT_INLINE
Definition: Macros.h:950
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition: Macros.h:1059
#define eigen_assert(x)
Definition: Macros.h:1047
#define EIGEN_STRONG_INLINE
Definition: Macros.h:927
#define EIGEN_SIZE_MIN_PREFER_FIXED(a, b)
Definition: Macros.h:1312
#define EIGEN_UNROLLING_LIMIT
Defines the maximal loop size to enable meta unrolling of loops.
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
you may not use this file except in compliance with the License You may obtain a copy of the License at software distributed under the License is distributed on an AS IS WITHOUT WARRANTIES OR CONDITIONS OF ANY either express or implied See the License for the specific language governing permissions and limitations under the License LLVM Exceptions to the Apache License As an if
Definition: ThirdPartyNotices.txt:289
#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 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
const SrcEvaluatorType & m_src
Definition: AssignEvaluator.h:717
EIGEN_DEVICE_FUNC const Scalar * dstDataPtr() const
Definition: AssignEvaluator.h:710
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE generic_dense_assignment_kernel(DstEvaluatorType &dst, const SrcEvaluatorType &src, const Functor &func, DstXprType &dstExpr)
Definition: AssignEvaluator.h:633
EIGEN_DEVICE_FUNC DstEvaluatorType & dstEvaluator() EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:648
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 const SrcEvaluatorType & srcEvaluator() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:649
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
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
type
Definition: core.h:575
const unsigned int LinearAccessBit
Short version: means the expression can be seen as 1D vector.
Definition: Constants.h:130
const unsigned int DirectAccessBit
Means that the underlying array of coefficients can be directly accessed as a plain strided array.
Definition: Constants.h:155
const unsigned int RowMajorBit
for a matrix, this means that the storage order is row-major.
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: Core:141
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
This value means that a positive quantity (e.g., a size) is not known at compile-time,...
Definition: Constants.h:22
FMT_CONSTEXPR auto fill_n(OutputIt out, Size count, const T &value) -> OutputIt
Definition: format.h:560
Definition: Eigen_Colamd.h:50
Definition: Constants.h:528
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
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const Functor &func)
Definition: AssignEvaluator.h:948
Definition: AssignEvaluator.h:824
Dense2Dense Kind
Definition: AssignEvaluator.h:818
Definition: AssignEvaluator.h:817
EigenBase2EigenBase Kind
Definition: AssignEvaluator.h:817
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
@ InnerRequiredAlignment
Definition: AssignEvaluator.h:72
@ LinearRequiredAlignment
Definition: AssignEvaluator.h:71
DstEvaluator::XprType Dst
Definition: AssignEvaluator.h:30
conditional< int(Traversal)==LinearVectorizedTraversal, LinearPacketType, InnerPacketType >::type PacketType
Definition: AssignEvaluator.h:114
@ SrcAlignment
Definition: AssignEvaluator.h:41
@ JointAlignment
Definition: AssignEvaluator.h:43
@ DstAlignment
Definition: AssignEvaluator.h:40
@ DstHasDirectAccess
Definition: AssignEvaluator.h:42
@ Vectorized
Definition: AssignEvaluator.h:109
@ Traversal
Definition: AssignEvaluator.h:102
@ Unrolling
Definition: AssignEvaluator.h:130
@ SrcFlags
Definition: AssignEvaluator.h:35
@ DstFlags
Definition: AssignEvaluator.h:34
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< typenametraits< T >::StorageKind >::Shape Shape
Definition: CoreEvaluators.h:74
Definition: CoreEvaluators.h:91
find_best_packet_helper< Size, typenamepacket_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