MOAB
4.9.3pre
|
#include <AssignEvaluator.h>
Public Types | |
enum | { DstFlags = DstEvaluator::Flags, SrcFlags = SrcEvaluator::Flags, RequiredAlignment = unpacket_traits<PacketType>::alignment } |
enum | { DstAlignment = DstEvaluator::Alignment, SrcAlignment = SrcEvaluator::Alignment, DstHasDirectAccess = DstFlags & DirectAccessBit, JointAlignment = EIGEN_PLAIN_ENUM_MIN(DstAlignment,SrcAlignment) } |
enum | { Traversal, Vectorized } |
enum | { Unrolling } |
typedef DstEvaluator::XprType | Dst |
typedef Dst::Scalar | DstScalar |
typedef find_best_packet < DstScalar, Dst::SizeAtCompileTime >::type | PacketType |
Private Types | |
enum | { InnerSize, InnerMaxSize, OuterStride = int(outer_stride_at_compile_time<Dst>::ret), MaxSizeAtCompileTime = Dst::SizeAtCompileTime, PacketSize = unpacket_traits<PacketType>::size } |
enum | { DstIsRowMajor = DstFlags&RowMajorBit, SrcIsRowMajor = SrcFlags&RowMajorBit, StorageOrdersAgree = (int(DstIsRowMajor) == int(SrcIsRowMajor)), MightVectorize } |
enum | { UnrollingLimit = EIGEN_UNROLLING_LIMIT * (Vectorized ? int(PacketSize) : 1) } |
Definition at line 28 of file AssignEvaluator.h.
typedef DstEvaluator::XprType Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::Dst |
Definition at line 30 of file AssignEvaluator.h.
typedef Dst::Scalar Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::DstScalar |
Definition at line 31 of file AssignEvaluator.h.
typedef find_best_packet<DstScalar,Dst::SizeAtCompileTime>::type Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::PacketType |
Definition at line 33 of file AssignEvaluator.h.
anonymous enum |
Definition at line 35 of file AssignEvaluator.h.
{ DstFlags = DstEvaluator::Flags, SrcFlags = SrcEvaluator::Flags, RequiredAlignment = unpacket_traits<PacketType>::alignment };
anonymous enum |
Definition at line 42 of file AssignEvaluator.h.
{ DstAlignment = DstEvaluator::Alignment, SrcAlignment = SrcEvaluator::Alignment, DstHasDirectAccess = DstFlags & DirectAccessBit, JointAlignment = EIGEN_PLAIN_ENUM_MIN(DstAlignment,SrcAlignment) };
anonymous enum [private] |
Definition at line 50 of file AssignEvaluator.h.
{ InnerSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::SizeAtCompileTime) : int(DstFlags)&RowMajorBit ? int(Dst::ColsAtCompileTime) : int(Dst::RowsAtCompileTime), InnerMaxSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime) : int(DstFlags)&RowMajorBit ? int(Dst::MaxColsAtCompileTime) : int(Dst::MaxRowsAtCompileTime), OuterStride = int(outer_stride_at_compile_time<Dst>::ret), MaxSizeAtCompileTime = Dst::SizeAtCompileTime, PacketSize = unpacket_traits<PacketType>::size };
anonymous enum [private] |
Definition at line 62 of file AssignEvaluator.h.
{ DstIsRowMajor = DstFlags&RowMajorBit, SrcIsRowMajor = SrcFlags&RowMajorBit, StorageOrdersAgree = (int(DstIsRowMajor) == int(SrcIsRowMajor)), MightVectorize = StorageOrdersAgree && (int(DstFlags) & int(SrcFlags) & ActualPacketAccessBit) && (functor_traits<AssignFunc>::PacketAccess), MayInnerVectorize = MightVectorize && int(InnerSize)!=Dynamic && int(InnerSize)%int(PacketSize)==0 && int(OuterStride)!=Dynamic && int(OuterStride)%int(PacketSize)==0 && int(JointAlignment)>=int(RequiredAlignment), MayLinearize = StorageOrdersAgree && (int(DstFlags) & int(SrcFlags) & LinearAccessBit), MayLinearVectorize = MightVectorize && MayLinearize && DstHasDirectAccess && ((int(DstAlignment)>=int(RequiredAlignment)) || MaxSizeAtCompileTime == Dynamic), /* If the destination isn't aligned, we have to do runtime checks and we don't unroll, so it's only good for large enough sizes. */ MaySliceVectorize = MightVectorize && DstHasDirectAccess && (int(InnerMaxSize)==Dynamic || int(InnerMaxSize)>=3*PacketSize) /* slice vectorization can be slow, so we only want it if the slices are big, which is indicated by InnerMaxSize rather than InnerSize, think of the case of a dynamic block in a fixed-size matrix */ };
anonymous enum |
Definition at line 86 of file AssignEvaluator.h.
{ Traversal = int(MayInnerVectorize) ? int(InnerVectorizedTraversal) : int(MayLinearVectorize) ? int(LinearVectorizedTraversal) : int(MaySliceVectorize) ? int(SliceVectorizedTraversal) : int(MayLinearize) ? int(LinearTraversal) : int(DefaultTraversal), Vectorized = int(Traversal) == InnerVectorizedTraversal || int(Traversal) == LinearVectorizedTraversal || int(Traversal) == SliceVectorizedTraversal };
anonymous enum [private] |
Definition at line 98 of file AssignEvaluator.h.
{ UnrollingLimit = EIGEN_UNROLLING_LIMIT * (Vectorized ? int(PacketSize) : 1), MayUnrollCompletely = int(Dst::SizeAtCompileTime) != Dynamic && int(Dst::SizeAtCompileTime) * int(SrcEvaluator::CoeffReadCost) <= int(UnrollingLimit), MayUnrollInner = int(InnerSize) != Dynamic && int(InnerSize) * int(SrcEvaluator::CoeffReadCost) <= int(UnrollingLimit) };
anonymous enum |
Definition at line 107 of file AssignEvaluator.h.
{ Unrolling = (int(Traversal) == int(InnerVectorizedTraversal) || int(Traversal) == int(DefaultTraversal)) ? ( int(MayUnrollCompletely) ? int(CompleteUnrolling) : int(MayUnrollInner) ? int(InnerUnrolling) : int(NoUnrolling) ) : int(Traversal) == int(LinearVectorizedTraversal) ? ( bool(MayUnrollCompletely) && (int(DstAlignment)>=int(RequiredAlignment)) ? int(CompleteUnrolling) : int(NoUnrolling) ) : int(Traversal) == int(LinearTraversal) ? ( bool(MayUnrollCompletely) ? int(CompleteUnrolling) : int(NoUnrolling) ) : int(NoUnrolling) };