Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc, MaxPacketSize > Struct Template Reference

#include <AssignEvaluator.h>

Public Types

enum  { DstFlags = DstEvaluator::Flags , SrcFlags = SrcEvaluator::Flags }
 
enum  { DstAlignment = DstEvaluator::Alignment , SrcAlignment = SrcEvaluator::Alignment , DstHasDirectAccess = (DstFlags & DirectAccessBit) == DirectAccessBit , JointAlignment = plain_enum_min(DstAlignment, SrcAlignment) }
 
enum  { LinearRequiredAlignment = unpacket_traits<LinearPacketType>::alignment , InnerRequiredAlignment = unpacket_traits<InnerPacketType>::alignment }
 
enum  { Traversal , Vectorized }
 
enum  { Unrolling }
 
typedef DstEvaluator::XprType Dst
 
typedef Dst::Scalar DstScalar
 
typedef std::conditional_t< int(Traversal)==LinearVectorizedTraversal, LinearPacketType, InnerPacketTypePacketType
 

Private Types

enum  {
  InnerSize , InnerMaxSize , RestrictedInnerSize = min_size_prefer_fixed(InnerSize, MaxPacketSize) , RestrictedLinearSize = min_size_prefer_fixed(Dst::SizeAtCompileTime, MaxPacketSize) ,
  OuterStride = int(outer_stride_at_compile_time<Dst>::ret) , MaxSizeAtCompileTime = Dst::SizeAtCompileTime
}
 
enum  { LinearPacketSize = unpacket_traits<LinearPacketType>::size , InnerPacketSize = unpacket_traits<InnerPacketType>::size }
 
enum  {
  DstIsRowMajor = DstFlags & RowMajorBit , SrcIsRowMajor = SrcFlags & RowMajorBit , StorageOrdersAgree = (int(DstIsRowMajor) == int(SrcIsRowMajor)) , MightVectorize ,
  MayInnerVectorize , MayLinearize = bool(StorageOrdersAgree) && (int(DstFlags) & int(SrcFlags) & LinearAccessBit) , MayLinearVectorize , MaySliceVectorize
}
 
enum  { ActualPacketSize , UnrollingLimit = EIGEN_UNROLLING_LIMIT * ActualPacketSize }
 
typedef find_best_packet< DstScalar, RestrictedLinearSize >::type LinearPacketType
 
typedef find_best_packet< DstScalar, RestrictedInnerSize >::type InnerPacketType
 

Member Typedef Documentation

◆ Dst

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
typedef DstEvaluator::XprType Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc, MaxPacketSize >::Dst

◆ DstScalar

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
typedef Dst::Scalar Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc, MaxPacketSize >::DstScalar

◆ InnerPacketType

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
typedef find_best_packet<DstScalar, RestrictedInnerSize>::type Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc, MaxPacketSize >::InnerPacketType
private

◆ LinearPacketType

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
typedef find_best_packet<DstScalar, RestrictedLinearSize>::type Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc, MaxPacketSize >::LinearPacketType
private

◆ PacketType

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
typedef std::conditional_t<int(Traversal) == LinearVectorizedTraversal, LinearPacketType, InnerPacketType> Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc, MaxPacketSize >::PacketType

Member Enumeration Documentation

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
Enumerator
DstFlags 
SrcFlags 
35 { DstFlags = DstEvaluator::Flags, SrcFlags = SrcEvaluator::Flags };
@ SrcFlags
Definition: AssignEvaluator.h:35
@ DstFlags
Definition: AssignEvaluator.h:35

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
Enumerator
DstAlignment 
SrcAlignment 
DstHasDirectAccess 
JointAlignment 
38  {
39  DstAlignment = DstEvaluator::Alignment,
40  SrcAlignment = SrcEvaluator::Alignment,
43  };
const unsigned int DirectAccessBit
Definition: Constants.h:159
constexpr int plain_enum_min(A a, B b)
Definition: Meta.h:649
@ SrcAlignment
Definition: AssignEvaluator.h:40
@ JointAlignment
Definition: AssignEvaluator.h:42
@ DstAlignment
Definition: AssignEvaluator.h:39
@ DstHasDirectAccess
Definition: AssignEvaluator.h:41

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
private
Enumerator
InnerSize 
InnerMaxSize 
RestrictedInnerSize 
RestrictedLinearSize 
OuterStride 
MaxSizeAtCompileTime 
46  {
47  InnerSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::SizeAtCompileTime)
48  : int(DstFlags) & RowMajorBit ? int(Dst::ColsAtCompileTime)
49  : int(Dst::RowsAtCompileTime),
50  InnerMaxSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime)
51  : int(DstFlags) & RowMajorBit ? int(Dst::MaxColsAtCompileTime)
52  : int(Dst::MaxRowsAtCompileTime),
54  RestrictedLinearSize = min_size_prefer_fixed(Dst::SizeAtCompileTime, MaxPacketSize),
55  OuterStride = int(outer_stride_at_compile_time<Dst>::ret),
56  MaxSizeAtCompileTime = Dst::SizeAtCompileTime
57  };
const unsigned int RowMajorBit
Definition: Constants.h:70
return int(ret)+1
Eigen::DenseIndex ret
Definition: level1_cplx_impl.h:43
constexpr int min_size_prefer_fixed(A a, B b)
Definition: Meta.h:683
DstEvaluator::XprType Dst
Definition: AssignEvaluator.h:32
@ InnerSize
Definition: AssignEvaluator.h:47
@ MaxSizeAtCompileTime
Definition: AssignEvaluator.h:56
@ InnerMaxSize
Definition: AssignEvaluator.h:50
@ OuterStride
Definition: AssignEvaluator.h:55
@ RestrictedLinearSize
Definition: AssignEvaluator.h:54
@ RestrictedInnerSize
Definition: AssignEvaluator.h:53

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
private
Enumerator
LinearPacketSize 
InnerPacketSize 

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
Enumerator
LinearRequiredAlignment 
InnerRequiredAlignment 

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
private
Enumerator
DstIsRowMajor 
SrcIsRowMajor 
StorageOrdersAgree 
MightVectorize 
MayInnerVectorize 
MayLinearize 
MayLinearVectorize 
MaySliceVectorize 
75  {
88  /* If the destination isn't aligned, we have to do runtime checks and we don't unroll,
89  so it's only good for large enough sizes. */
91  (int(InnerMaxSize) == Dynamic ||
93  /* slice vectorization can be slow, so we only want it if the slices are big, which is
94  indicated by InnerMaxSize rather than InnerSize, think of the case of a dynamic block
95  in a fixed-size matrix
96  However, with EIGEN_UNALIGNED_VECTORIZE and unrolling, slice vectorization is still worth it */
97  };
#define EIGEN_UNALIGNED_VECTORIZE
Definition: ConfigureVectorization.h:173
const unsigned int LinearAccessBit
Definition: Constants.h:133
const unsigned int ActualPacketAccessBit
Definition: Constants.h:110
const int Dynamic
Definition: Constants.h:25
@ 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
@ PacketAccess
Definition: XprHelper.h:206

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
Enumerator
Traversal 
Vectorized 
100  {
101  Traversal = int(Dst::SizeAtCompileTime) == 0
102  ? int(AllAtOnceTraversal) // If compile-size is zero, traversing will fail at compile-time.
111  };
@ 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
@ Vectorized
Definition: AssignEvaluator.h:109
@ Traversal
Definition: AssignEvaluator.h:101

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
private
Enumerator
ActualPacketSize 
UnrollingLimit 
116  {
119  : 1,
121  MayUnrollCompletely =
122  int(Dst::SizeAtCompileTime) != Dynamic &&
123  int(Dst::SizeAtCompileTime) * (int(DstEvaluator::CoeffReadCost) + int(SrcEvaluator::CoeffReadCost)) <=
124  int(UnrollingLimit),
125  MayUnrollInner =
126  int(InnerSize) != Dynamic &&
127  int(InnerSize) * (int(DstEvaluator::CoeffReadCost) + int(SrcEvaluator::CoeffReadCost)) <= int(UnrollingLimit)
128  };
#define EIGEN_UNROLLING_LIMIT
Definition: Settings.h:23
@ ActualPacketSize
Definition: AssignEvaluator.h:117
@ UnrollingLimit
Definition: AssignEvaluator.h:120

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc , int MaxPacketSize = -1>
anonymous enum
Enumerator
Unrolling 
131  {
133  ? (int(MayUnrollCompletely) ? int(CompleteUnrolling)
134  : int(MayUnrollInner) ? int(InnerUnrolling)
135  : int(NoUnrolling))
137  ? (bool(MayUnrollCompletely) &&
140  : int(NoUnrolling))
142  ? (bool(MayUnrollCompletely) ? int(CompleteUnrolling) : int(NoUnrolling))
145  ? (bool(MayUnrollInner) ? int(InnerUnrolling) : int(NoUnrolling))
146 #endif
147  : int(NoUnrolling)
148  };
@ InnerUnrolling
Definition: Constants.h:303
@ CompleteUnrolling
Definition: Constants.h:306
@ NoUnrolling
Definition: Constants.h:301
if(UPLO(*uplo)==INVALID) info
Definition: level3_impl.h:428
@ Unrolling
Definition: AssignEvaluator.h:132

The documentation for this struct was generated from the following file: