12 #ifndef EIGEN_ASSIGN_EVALUATOR_H
13 #define EIGEN_ASSIGN_EVALUATOR_H
30 template <
typename DstEvaluator,
typename SrcEvaluator,
typename AssignFunc,
int MaxPacketSize = -1>
47 InnerSize =
int(Dst::IsVectorAtCompileTime) ?
int(Dst::SizeAtCompileTime)
121 MayUnrollCompletely =
123 int(Dst::SizeAtCompileTime) * (
int(DstEvaluator::CoeffReadCost) +
int(SrcEvaluator::CoeffReadCost)) <=
137 ? (
bool(MayUnrollCompletely) &&
150 #ifdef EIGEN_DEBUG_ASSIGN
151 static void debug() {
154 std::cerr.setf(std::ios::hex, std::ios::basefield);
155 std::cerr <<
"DstFlags"
156 <<
" = " <<
DstFlags <<
" (" << demangle_flags(
DstFlags) <<
" )" << std::endl;
157 std::cerr <<
"SrcFlags"
158 <<
" = " <<
SrcFlags <<
" (" << demangle_flags(
SrcFlags) <<
" )" << std::endl;
159 std::cerr.unsetf(std::ios::hex);
176 std::cerr <<
"Traversal"
184 std::cerr <<
"Unrolling"
186 std::cerr << std::endl;
199 template <
typename Kernel,
int Index,
int Stop>
205 enum { outer =
Index / DstXprType::InnerSizeAtCompileTime, inner =
Index % DstXprType::InnerSizeAtCompileTime };
208 kernel.assignCoeffByOuterInner(outer, inner);
213 template <
typename Kernel,
int Stop>
218 template <
typename Kernel,
int Index_,
int Stop>
221 kernel.assignCoeffByOuterInner(outer, Index_);
226 template <
typename Kernel,
int Stop>
235 template <
typename Kernel,
int Index,
int Stop>
238 kernel.assignCoeff(
Index);
243 template <
typename Kernel,
int Stop>
252 template <
typename Kernel,
int Index,
int Stop>
260 outer =
Index / DstXprType::InnerSizeAtCompileTime,
261 inner =
Index % DstXprType::InnerSizeAtCompileTime,
267 kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, inner);
273 template <
typename Kernel,
int Stop>
278 template <
typename Kernel,
int Index_,
int Stop,
int SrcAlignment,
int DstAlignment>
282 kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, Index_);
289 template <
typename Kernel,
int Stop,
int SrcAlignment,
int DstAlignment>
300 template <
typename Kernel,
int Traversal = Kernel::AssignmentTraits::Traversal,
301 int Unrolling = Kernel::AssignmentTraits::Unrolling>
309 template <
typename Kernel,
int Unrolling>
313 EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT)
321 template <
typename Kernel>
324 for (
Index outer = 0; outer < kernel.outerSize(); ++outer) {
325 for (
Index inner = 0; inner < kernel.innerSize(); ++inner) {
326 kernel.assignCoeffByOuterInner(outer, inner);
332 template <
typename Kernel>
340 template <
typename Kernel>
345 const Index outerSize = kernel.outerSize();
346 for (
Index outer = 0; outer < outerSize; ++outer)
359 template <
bool IsAligned = false>
362 template <
typename Kernel>
372 template <
typename Kernel>
375 template <
typename Kernel>
379 for (
Index index =
start; index <
end; ++index) kernel.assignCoeff(index);
383 template <
typename Kernel,
int Index,
int Stop>
393 kernel.template assignPacket<DstAlignment, SrcAlignment, PacketType>(
Index);
399 template <
typename Kernel,
int Stop>
404 template <
typename Kernel>
409 typedef typename Kernel::PacketType
PacketType;
411 requestedAlignment = Kernel::AssignmentTraits::LinearRequiredAlignment,
413 dstIsAligned =
int(Kernel::AssignmentTraits::DstAlignment) >=
int(requestedAlignment),
415 :
int(Kernel::AssignmentTraits::DstAlignment),
416 srcAlignment = Kernel::AssignmentTraits::JointAlignment
418 const Index alignedStart =
419 dstIsAligned ? 0 : internal::first_aligned<requestedAlignment>(kernel.dstDataPtr(),
size);
420 const Index alignedEnd = alignedStart + ((
size - alignedStart) / packetSize) * packetSize;
424 for (
Index index = alignedStart; index < alignedEnd; index += packetSize)
425 kernel.template assignPacket<dstAlignment, srcAlignment, PacketType>(index);
431 template <
typename Kernel>
435 typedef typename Kernel::PacketType
PacketType;
438 size = DstXprType::SizeAtCompileTime,
440 alignedSize = (
int(
size) / packetSize) * packetSize
452 template <
typename Kernel>
457 const Index innerSize = kernel.innerSize();
458 const Index outerSize = kernel.outerSize();
460 for (
Index outer = 0; outer < outerSize; ++outer)
461 for (
Index inner = 0; inner < innerSize; inner += packetSize)
462 kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, inner);
466 template <
typename Kernel>
474 template <
typename Kernel>
478 typedef typename Kernel::AssignmentTraits Traits;
479 const Index outerSize = kernel.outerSize();
480 for (
Index outer = 0; outer < outerSize; ++outer)
482 Traits::DstAlignment>::
run(kernel, outer);
490 template <
typename Kernel>
498 template <
typename Kernel>
510 template <
typename Kernel>
514 typedef typename Kernel::PacketType
PacketType;
517 requestedAlignment =
int(Kernel::AssignmentTraits::InnerRequiredAlignment),
520 dstIsAligned =
int(Kernel::AssignmentTraits::DstAlignment) >=
int(requestedAlignment),
521 dstAlignment = alignable ?
int(requestedAlignment) :
int(Kernel::AssignmentTraits::DstAlignment)
523 const Scalar* dst_ptr = kernel.dstDataPtr();
524 if ((!
bool(dstIsAligned)) && (std::uintptr_t(dst_ptr) %
sizeof(
Scalar)) > 0) {
528 const Index packetAlignedMask = packetSize - 1;
529 const Index innerSize = kernel.innerSize();
530 const Index outerSize = kernel.outerSize();
531 const Index alignedStep = alignable ? (packetSize - kernel.outerStride() % packetSize) & packetAlignedMask : 0;
533 ((!alignable) ||
bool(dstIsAligned)) ? 0 : internal::first_aligned<requestedAlignment>(dst_ptr, innerSize);
535 for (
Index outer = 0; outer < outerSize; ++outer) {
536 const Index alignedEnd = alignedStart + ((innerSize - alignedStart) & ~packetAlignedMask);
538 for (
Index inner = 0; inner < alignedStart; ++inner) kernel.assignCoeffByOuterInner(outer, inner);
541 for (
Index inner = alignedStart; inner < alignedEnd; inner += packetSize)
542 kernel.template assignPacketByOuterInner<dstAlignment, Unaligned, PacketType>(outer, inner);
545 for (
Index inner = alignedEnd; inner < innerSize; ++inner) kernel.assignCoeffByOuterInner(outer, inner);
547 alignedStart =
numext::mini((alignedStart + alignedStep) % packetSize, innerSize);
552 #if EIGEN_UNALIGNED_VECTORIZE
553 template <
typename Kernel>
557 typedef typename Kernel::PacketType
PacketType;
560 innerSize = DstXprType::InnerSizeAtCompileTime,
562 vectorizableSize = (
int(innerSize) /
int(packetSize)) *
int(packetSize),
563 size = DstXprType::SizeAtCompileTime
566 for (
Index outer = 0; outer < kernel.outerSize(); ++outer) {
584 template <
typename DstEvaluatorTypeT,
typename SrcEvaluatorTypeT,
typename Functor,
int Version = Specialized>
600 : m_dst(dst), m_src(src), m_functor(
func), m_dstExpr(dstExpr) {
601 #ifdef EIGEN_DEBUG_ASSIGN
602 AssignmentTraits::debug();
618 m_functor.assignCoeff(m_dst.coeffRef(
row,
col), m_src.coeff(
row,
col));
623 m_functor.assignCoeff(m_dst.coeffRef(index), m_src.coeff(index));
628 Index row = rowIndexByOuterInner(outer, inner);
629 Index col = colIndexByOuterInner(outer, inner);
633 template <
int StoreMode,
int LoadMode,
typename Packet>
635 m_functor.template assignPacket<StoreMode>(&m_dst.coeffRef(
row,
col),
636 m_src.template packet<LoadMode, Packet>(
row,
col));
639 template <
int StoreMode,
int LoadMode,
typename Packet>
641 m_functor.template assignPacket<StoreMode>(&m_dst.coeffRef(index), m_src.template packet<LoadMode, Packet>(index));
644 template <
int StoreMode,
int LoadMode,
typename Packet>
646 Index row = rowIndexByOuterInner(outer, inner);
647 Index col = colIndexByOuterInner(outer, inner);
648 assignPacket<StoreMode, LoadMode, Packet>(
row,
col);
652 typedef typename DstEvaluatorType::ExpressionTraits Traits;
653 return int(Traits::RowsAtCompileTime) == 1 ? 0
654 :
int(Traits::ColsAtCompileTime) == 1 ? inner
660 typedef typename DstEvaluatorType::ExpressionTraits Traits;
661 return int(Traits::ColsAtCompileTime) == 1 ? 0
662 :
int(Traits::RowsAtCompileTime) == 1 ? inner
681 template <
typename DstEvaluatorTypeT,
typename SrcEvaluatorTypeT,
typename Functor>
702 template <
typename DstXprType,
typename SrcXprType,
typename Functor>
707 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
710 template <
typename DstXprType,
typename SrcXprType,
typename T1,
typename T2>
713 Index dstRows = src.rows();
714 Index dstCols = src.cols();
715 if (((dst.rows() != dstRows) || (dst.cols() != dstCols))) dst.resize(dstRows, dstCols);
716 eigen_assert(dst.rows() == dstRows && dst.cols() == dstCols);
719 template <
typename DstXprType,
typename SrcXprType,
typename Functor>
721 const SrcXprType& src,
726 SrcEvaluatorType srcEvaluator(src);
732 DstEvaluatorType dstEvaluator(dst);
735 Kernel kernel(dstEvaluator, srcEvaluator,
func, dst.const_cast_derived());
740 template <
typename DstXprType,
typename SrcXprType>
752 template <
typename DstShape,
typename SrcShape>
753 struct AssignmentKind;
759 template <
typename,
typename>
769 template <
typename DstXprType,
typename SrcXprType,
typename Functor,
780 template <
typename Dst,
typename Src>
784 template <
typename Dst,
typename Src>
790 template <
typename Dst,
typename Src,
typename Func>
797 template <
typename Dst,
typename Src,
typename Func>
805 template <
typename Dst,
template <
typename>
class StorageBase,
typename Src,
typename Func>
807 const Src& src,
const Func&
func) {
811 template <
typename Dst,
typename Src,
typename Func>
815 NeedToTranspose = ((
int(Dst::RowsAtCompileTime) == 1 &&
int(Src::ColsAtCompileTime) == 1) ||
816 (
int(Dst::ColsAtCompileTime) == 1 &&
int(Src::RowsAtCompileTime) == 1)) &&
817 int(Dst::SizeAtCompileTime) != 1
820 typedef std::conditional_t<NeedToTranspose, Transpose<Dst>,
Dst> ActualDstTypeCleaned;
821 typedef std::conditional_t<NeedToTranspose, Transpose<Dst>,
Dst&> ActualDstType;
822 ActualDstType actualDst(dst);
832 template <
typename Dst,
typename Src,
typename Func>
842 SrcEvaluatorType srcEvaluator(src);
845 DstEvaluatorType dstEvaluator(dst);
846 Kernel kernel(dstEvaluator, srcEvaluator,
func, dst.const_cast_derived());
851 template <
typename Dst,
typename Src>
856 template <
typename Dst,
typename Src,
typename Func>
867 template <
typename Dst,
typename Src>
874 template <
typename Dst,
typename Src>
880 template <
typename DstXprType,
typename SrcXprType,
typename Functor,
typename Weak>
883 #ifndef EIGEN_NO_DEBUG
891 template <
typename DstXprType,
typename SrcPlainObject,
typename Weak>
904 template <
typename DstXprType,
typename SrcPlainObject,
typename Weak>
921 template <
typename DstXprType,
typename SrcXprType,
typename Functor,
typename Weak>
924 DstXprType& dst,
const SrcXprType& src,
926 Index dstRows = src.rows();
927 Index dstCols = src.cols();
928 if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
930 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
936 template <
typename SrcScalarType>
938 DstXprType& dst,
const SrcXprType& src,
940 Index dstRows = src.rows();
941 Index dstCols = src.cols();
942 if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
944 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
948 template <
typename SrcScalarType>
950 DstXprType& dst,
const SrcXprType& src,
952 Index dstRows = src.rows();
953 Index dstCols = src.cols();
954 if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
956 eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define EIGEN_NOEXCEPT
Definition: Macros.h:1267
#define EIGEN_DEBUG_VAR(x)
Definition: Macros.h:815
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_DONT_INLINE
Definition: Macros.h:853
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition: Macros.h:922
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_UNROLLING_LIMIT
Definition: Settings.h:23
#define EIGEN_STATIC_ASSERT_LVALUE(Derived)
Definition: StaticAssert.h:87
#define EIGEN_STATIC_ASSERT(X, MSG)
Definition: StaticAssert.h:26
#define EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0, TYPE1)
Definition: StaticAssert.h:79
#define EIGEN_CHECK_BINARY_COMPATIBILIY(BINOP, LHS, RHS)
Definition: XprHelper.h:1082
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
Generic expression of a matrix where all coefficients are defined by a functor.
Definition: CwiseNullaryOp.h:64
Pseudo expression providing an operator = assuming no aliasing.
Definition: NoAlias.h:34
EIGEN_DEVICE_FUNC ExpressionType & expression() const
Definition: NoAlias.h:61
Convenience specialization of Stride to specify only an outer stride See class Map for some examples.
Definition: Stride.h:104
Definition: AssignEvaluator.h:585
DstXprType & m_dstExpr
Definition: AssignEvaluator.h:674
EIGEN_DEVICE_FUNC const Scalar * dstDataPtr() const
Definition: AssignEvaluator.h:667
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacket(Index index)
Definition: AssignEvaluator.h:640
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:606
EIGEN_DEVICE_FUNC DstEvaluatorType & dstEvaluator() EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:613
const SrcEvaluatorType & m_src
Definition: AssignEvaluator.h:671
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE generic_dense_assignment_kernel(DstEvaluatorType &dst, const SrcEvaluatorType &src, const Functor &func, DstXprType &dstExpr)
Definition: AssignEvaluator.h:597
DstEvaluatorTypeT DstEvaluatorType
Definition: AssignEvaluator.h:591
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:609
AssignmentTraits::PacketType PacketType
Definition: AssignEvaluator.h:595
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:610
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:617
SrcEvaluatorTypeT SrcEvaluatorType
Definition: AssignEvaluator.h:592
DstEvaluatorType & m_dst
Definition: AssignEvaluator.h:670
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index outerSize() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:608
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacketByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:645
const Functor & m_functor
Definition: AssignEvaluator.h:672
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeff(Index index)
Definition: AssignEvaluator.h:622
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index outerStride() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:611
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index innerSize() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:607
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacket(Index row, Index col)
Definition: AssignEvaluator.h:634
copy_using_evaluator_traits< DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor > AssignmentTraits
Definition: AssignEvaluator.h:594
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rowIndexByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:651
EIGEN_DEVICE_FUNC const SrcEvaluatorType & srcEvaluator() const EIGEN_NOEXCEPT
Definition: AssignEvaluator.h:614
SrcEvaluatorTypeT::XprType SrcXprType
Definition: AssignEvaluator.h:588
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index colIndexByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:659
DstEvaluatorTypeT::XprType DstXprType
Definition: AssignEvaluator.h:587
DstEvaluatorType::Scalar Scalar
Definition: AssignEvaluator.h:593
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeffByOuterInner(Index outer, Index inner)
Definition: AssignEvaluator.h:627
Definition: AssignEvaluator.h:683
Base::DstXprType DstXprType
Definition: AssignEvaluator.h:689
EIGEN_DEVICE_FUNC restricted_packet_dense_assignment_kernel(DstEvaluatorTypeT &dst, const SrcEvaluatorTypeT &src, const Functor &func, DstXprType &dstExpr)
Definition: AssignEvaluator.h:693
generic_dense_assignment_kernel< DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, BuiltIn > Base
Definition: AssignEvaluator.h:685
AssignmentTraits::PacketType PacketType
Definition: AssignEvaluator.h:691
copy_using_evaluator_traits< DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, 4 > AssignmentTraits
Definition: AssignEvaluator.h:690
Base::Scalar Scalar
Definition: AssignEvaluator.h:688
static constexpr lastp1_t end
Definition: IndexedViewHelper.h:79
@ InnerVectorizedTraversal
Definition: Constants.h:284
@ LinearVectorizedTraversal
Definition: Constants.h:287
@ DefaultTraversal
Definition: Constants.h:279
@ SliceVectorizedTraversal
Definition: Constants.h:290
@ LinearTraversal
Definition: Constants.h:281
@ AllAtOnceTraversal
Definition: Constants.h:294
@ InnerUnrolling
Definition: Constants.h:303
@ CompleteUnrolling
Definition: Constants.h:306
@ NoUnrolling
Definition: Constants.h:301
const unsigned int LinearAccessBit
Definition: Constants.h:133
const unsigned int DirectAccessBit
Definition: Constants.h:159
const unsigned int RowMajorBit
Definition: Constants.h:70
Eigen::DenseIndex ret
Definition: level1_cplx_impl.h:43
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_restricted_packet_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:833
constexpr int plain_enum_min(A a, B b)
Definition: Meta.h:649
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize_if_allowed(DstXprType &dst, const SrcXprType &src, const Functor &)
Definition: AssignEvaluator.h:703
constexpr int min_size_prefer_fixed(A a, B b)
Definition: Meta.h:683
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_assignment(Dst &dst, const Src &src)
Definition: AssignEvaluator.h:781
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void call_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:812
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void call_dense_assignment_loop(DstXprType &dst, const SrcXprType &src, const Functor &func)
Definition: AssignEvaluator.h:720
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void call_assignment_no_alias_no_transpose(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:857
EIGEN_DEVICE_FUNC void check_for_aliasing(const Dst &dst, const Src &src)
Definition: Transpose.h:416
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
Definition: MathFunctions.h:920
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
const unsigned int ActualPacketAccessBit
Definition: Constants.h:110
auto run(Kernel kernel, Args &&... args) -> decltype(kernel(args...))
Definition: gpu_test_helper.h:414
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const int Dynamic
Definition: Constants.h:25
Definition: Eigen_Colamd.h:49
void start(const unsigned &i)
(Re-)start i-th timer
Definition: oomph_utilities.cc:243
string name
Definition: plotDoE.py:33
CwiseBinaryOp< internal::scalar_sum_op< double, double >, const CpyMatrixXd, const CpyMatrixXd > XprType
Definition: nestbyvalue.cpp:15
Definition: Constants.h:540
Dense2Dense Kind
Definition: AssignEvaluator.h:765
Definition: AssignEvaluator.h:760
EigenBase2EigenBase Kind
Definition: AssignEvaluator.h:761
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const Functor &)
Definition: AssignEvaluator.h:898
typename DstXprType::Scalar Scalar
Definition: AssignEvaluator.h:894
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const Functor &)
Definition: AssignEvaluator.h:911
typename DstXprType::Scalar Scalar
Definition: AssignEvaluator.h:907
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const Functor &func)
Definition: AssignEvaluator.h:882
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:949
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:937
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:923
Definition: AssignEvaluator.h:773
Definition: AssignEvaluator.h:756
Definition: AssignEvaluator.h:757
Definition: ForwardDeclarations.h:221
Template functor for scalar/packet assignment with addition.
Definition: AssignmentFunctors.h:52
Template functor for scalar/packet assignment.
Definition: AssignmentFunctors.h:25
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &)
Definition: AssignEvaluator.h:215
Definition: AssignEvaluator.h:200
DstEvaluatorType::XprType DstXprType
Definition: AssignEvaluator.h:203
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:207
Kernel::DstEvaluatorType DstEvaluatorType
Definition: AssignEvaluator.h:202
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &, Index)
Definition: AssignEvaluator.h:228
Definition: AssignEvaluator.h:219
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
Definition: AssignEvaluator.h:220
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &)
Definition: AssignEvaluator.h:245
Definition: AssignEvaluator.h:236
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:237
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &)
Definition: AssignEvaluator.h:275
Definition: AssignEvaluator.h:253
Kernel::PacketType PacketType
Definition: AssignEvaluator.h:257
Kernel::DstEvaluatorType DstEvaluatorType
Definition: AssignEvaluator.h:255
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:266
DstEvaluatorType::XprType DstXprType
Definition: AssignEvaluator.h:256
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &, Index)
Definition: AssignEvaluator.h:291
Definition: AssignEvaluator.h:279
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
Definition: AssignEvaluator.h:281
Kernel::PacketType PacketType
Definition: AssignEvaluator.h:280
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &)
Definition: AssignEvaluator.h:401
Definition: AssignEvaluator.h:384
Kernel::DstEvaluatorType DstEvaluatorType
Definition: AssignEvaluator.h:386
Kernel::PacketType PacketType
Definition: AssignEvaluator.h:388
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:392
DstEvaluatorType::XprType DstXprType
Definition: AssignEvaluator.h:387
Definition: AssignEvaluator.h:31
@ Unrolling
Definition: AssignEvaluator.h:132
find_best_packet< DstScalar, RestrictedLinearSize >::type LinearPacketType
Definition: AssignEvaluator.h:60
find_best_packet< DstScalar, RestrictedInnerSize >::type InnerPacketType
Definition: AssignEvaluator.h:61
std::conditional_t< int(Traversal)==LinearVectorizedTraversal, LinearPacketType, InnerPacketType > PacketType
Definition: AssignEvaluator.h:113
@ SrcAlignment
Definition: AssignEvaluator.h:40
@ JointAlignment
Definition: AssignEvaluator.h:42
@ DstAlignment
Definition: AssignEvaluator.h:39
@ DstHasDirectAccess
Definition: AssignEvaluator.h:41
@ SrcFlags
Definition: AssignEvaluator.h:35
@ DstFlags
Definition: AssignEvaluator.h:35
DstEvaluator::XprType Dst
Definition: AssignEvaluator.h:32
@ InnerRequiredAlignment
Definition: AssignEvaluator.h:71
@ LinearRequiredAlignment
Definition: AssignEvaluator.h:70
@ InnerPacketSize
Definition: AssignEvaluator.h:65
@ LinearPacketSize
Definition: AssignEvaluator.h:64
@ Vectorized
Definition: AssignEvaluator.h:109
@ Traversal
Definition: AssignEvaluator.h:101
@ InnerSize
Definition: AssignEvaluator.h:47
@ MaxSizeAtCompileTime
Definition: AssignEvaluator.h:56
@ InnerMaxSize
Definition: AssignEvaluator.h:50
@ RestrictedLinearSize
Definition: AssignEvaluator.h:54
@ RestrictedInnerSize
Definition: AssignEvaluator.h:53
@ MightVectorize
Definition: AssignEvaluator.h:79
@ MayLinearVectorize
Definition: AssignEvaluator.h:85
@ MayLinearize
Definition: AssignEvaluator.h:84
@ MayInnerVectorize
Definition: AssignEvaluator.h:81
@ SrcIsRowMajor
Definition: AssignEvaluator.h:77
@ MaySliceVectorize
Definition: AssignEvaluator.h:90
@ DstIsRowMajor
Definition: AssignEvaluator.h:76
@ StorageOrdersAgree
Definition: AssignEvaluator.h:78
Dst::Scalar DstScalar
Definition: AssignEvaluator.h:33
@ ActualPacketSize
Definition: AssignEvaluator.h:117
@ UnrollingLimit
Definition: AssignEvaluator.h:120
static EIGEN_DEVICE_FUNC void EIGEN_STRONG_INLINE EIGEN_CONSTEXPR run(Kernel &)
Definition: AssignEvaluator.h:311
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:334
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:342
static EIGEN_DEVICE_FUNC void EIGEN_STRONG_INLINE run(Kernel &kernel)
Definition: AssignEvaluator.h:323
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:468
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Kernel &kernel)
Definition: AssignEvaluator.h:476
Kernel::PacketType PacketType
Definition: AssignEvaluator.h:454
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &kernel)
Definition: AssignEvaluator.h:456
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &kernel)
Definition: AssignEvaluator.h:500
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &kernel)
Definition: AssignEvaluator.h:492
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &kernel)
Definition: AssignEvaluator.h:433
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &kernel)
Definition: AssignEvaluator.h:406
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &kernel)
Definition: AssignEvaluator.h:512
Definition: AssignEvaluator.h:302
Definition: CoreEvaluators.h:98
storage_kind_to_shape< typename traits< T >::StorageKind >::Shape Shape
Definition: CoreEvaluators.h:90
Definition: CoreEvaluators.h:104
find_best_packet_helper< Size, typename packet_traits< T >::type >::type type
Definition: XprHelper.h:290
Definition: XprHelper.h:205
Definition: DenseCoeffsBase.h:556
Definition: GenericPacketMath.h:108
Definition: XprHelper.h:389
Definition: NullaryFunctors.h:21
Definition: NullaryFunctors.h:40
Template functor for scalar/packet assignment with subtraction.
Definition: AssignmentFunctors.h:73
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &kernel, Index start, Index end)
Definition: AssignEvaluator.h:376
Definition: AssignEvaluator.h:360
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR void run(Kernel &, Index, Index)
Definition: AssignEvaluator.h:363
Definition: GenericPacketMath.h:134
@ size
Definition: GenericPacketMath.h:139
Definition: NonLinearOptimization.cpp:97
Definition: benchGeometry.cpp:21
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317