Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc > Struct Template Reference

#include <src/eigen/Eigen/src/Core/AssignEvaluator.h>

Public Types

enum  { DstFlags = DstEvaluator::Flags , SrcFlags = SrcEvaluator::Flags }
 
enum  { DstAlignment = DstEvaluator::Alignment , SrcAlignment = SrcEvaluator::Alignment , DstHasDirectAccess = (DstFlags & DirectAccessBit) == DirectAccessBit , JointAlignment = EIGEN_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 conditional< int(Traversal)==LinearVectorizedTraversal, LinearPacketType, InnerPacketType >::type PacketType
 

Private Types

enum  { InnerSize , InnerMaxSize , 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, Dst::SizeAtCompileTime >::type LinearPacketType
 
typedef find_best_packet< DstScalar, InnerSize >::type InnerPacketType
 

Detailed Description

template<typename DstEvaluator, typename SrcEvaluator, typename AssignFunc>
struct Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >

Member Typedef Documentation

◆ Dst

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
typedef DstEvaluator::XprType Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::Dst

◆ DstScalar

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
typedef Dst::Scalar Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::DstScalar

◆ InnerPacketType

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
typedef find_best_packet<DstScalar,InnerSize>::type Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::InnerPacketType
private

◆ LinearPacketType

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
typedef find_best_packet<DstScalar,Dst::SizeAtCompileTime>::type Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::LinearPacketType
private

◆ PacketType

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
typedef conditional<int(Traversal)==LinearVectorizedTraversal,LinearPacketType,InnerPacketType>::type Eigen::internal::copy_using_evaluator_traits< DstEvaluator, SrcEvaluator, AssignFunc >::PacketType

Member Enumeration Documentation

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
Enumerator
DstFlags 
SrcFlags 
33 {
34 DstFlags = DstEvaluator::Flags,
35 SrcFlags = SrcEvaluator::Flags
36 };
@ SrcFlags
Definition AssignEvaluator.h:35
@ DstFlags
Definition AssignEvaluator.h:34

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
Enumerator
DstAlignment 
SrcAlignment 
DstHasDirectAccess 
JointAlignment 
39 {
40 DstAlignment = DstEvaluator::Alignment,
41 SrcAlignment = SrcEvaluator::Alignment,
44 };
#define EIGEN_PLAIN_ENUM_MIN(a, b)
Definition Macros.h:875
const unsigned int DirectAccessBit
Definition Constants.h:150
@ DstHasDirectAccess
Definition AssignEvaluator.h:42
@ SrcAlignment
Definition AssignEvaluator.h:41
@ JointAlignment
Definition AssignEvaluator.h:43
@ DstAlignment
Definition AssignEvaluator.h:40

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
private
Enumerator
InnerSize 
InnerMaxSize 
OuterStride 
MaxSizeAtCompileTime 
47 {
48 InnerSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::SizeAtCompileTime)
49 : int(DstFlags)&RowMajorBit ? int(Dst::ColsAtCompileTime)
50 : int(Dst::RowsAtCompileTime),
51 InnerMaxSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime)
52 : int(DstFlags)&RowMajorBit ? int(Dst::MaxColsAtCompileTime)
53 : int(Dst::MaxRowsAtCompileTime),
54 OuterStride = int(outer_stride_at_compile_time<Dst>::ret),
55 MaxSizeAtCompileTime = Dst::SizeAtCompileTime
56 };
const unsigned int RowMajorBit
Definition Constants.h:61
DstEvaluator::XprType Dst
Definition AssignEvaluator.h:30
@ MaxSizeAtCompileTime
Definition AssignEvaluator.h:55
@ InnerSize
Definition AssignEvaluator.h:48
@ OuterStride
Definition AssignEvaluator.h:54
@ InnerMaxSize
Definition AssignEvaluator.h:51

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
private
Enumerator
LinearPacketSize 
InnerPacketSize 

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
Enumerator
LinearRequiredAlignment 
InnerRequiredAlignment 

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
private
Enumerator
DstIsRowMajor 
SrcIsRowMajor 
StorageOrdersAgree 
MightVectorize 
MayInnerVectorize 
MayLinearize 
MayLinearVectorize 
MaySliceVectorize 
74 {
79 && (int(DstFlags) & int(SrcFlags) & ActualPacketAccessBit)
82 && int(InnerSize)!=Dynamic && int(InnerSize)%int(InnerPacketSize)==0
83 && int(OuterStride)!=Dynamic && int(OuterStride)%int(InnerPacketSize)==0
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. */
92 /* slice vectorization can be slow, so we only want it if the slices are big, which is
93 indicated by InnerMaxSize rather than InnerSize, think of the case of a dynamic block
94 in a fixed-size matrix
95 However, with EIGEN_UNALIGNED_VECTORIZE and unrolling, slice vectorization is still worth it */
96 };
#define EIGEN_UNALIGNED_VECTORIZE
Definition Macros.h:786
const unsigned int LinearAccessBit
Definition Constants.h:125
const unsigned int ActualPacketAccessBit
Definition Constants.h:102
const int Dynamic
Definition Constants.h:21
@ MayLinearVectorize
Definition AssignEvaluator.h:86
@ MightVectorize
Definition AssignEvaluator.h:78
@ MayInnerVectorize
Definition AssignEvaluator.h:81
@ MayLinearize
Definition AssignEvaluator.h:85
@ DstIsRowMajor
Definition AssignEvaluator.h:75
@ MaySliceVectorize
Definition AssignEvaluator.h:90
@ StorageOrdersAgree
Definition AssignEvaluator.h:77
@ SrcIsRowMajor
Definition AssignEvaluator.h:76
@ PacketAccess
Definition XprHelper.h:151

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
Enumerator
Traversal 
Vectorized 
99 {
104 : int(MayLinearize) ? int(LinearTraversal)
105 : int(DefaultTraversal),
109 };
@ InnerVectorizedTraversal
Definition Constants.h:283
@ LinearVectorizedTraversal
Definition Constants.h:286
@ DefaultTraversal
Definition Constants.h:278
@ SliceVectorizedTraversal
Definition Constants.h:289
@ LinearTraversal
Definition Constants.h:280
@ Traversal
Definition AssignEvaluator.h:100
@ Vectorized
Definition AssignEvaluator.h:106

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
private
Enumerator
ActualPacketSize 
UnrollingLimit 
114 {
117 : 1,
119 MayUnrollCompletely = int(Dst::SizeAtCompileTime) != Dynamic
120 && int(Dst::SizeAtCompileTime) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <= int(UnrollingLimit),
121 MayUnrollInner = int(InnerSize) != Dynamic
122 && int(InnerSize) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <= int(UnrollingLimit)
123 };
#define EIGEN_UNROLLING_LIMIT
Definition Settings.h:24
@ UnrollingLimit
Definition AssignEvaluator.h:118
@ ActualPacketSize
Definition AssignEvaluator.h:115

◆ anonymous enum

template<typename DstEvaluator , typename SrcEvaluator , typename AssignFunc >
anonymous enum
Enumerator
Unrolling 
126 {
128 ? (
129 int(MayUnrollCompletely) ? int(CompleteUnrolling)
130 : int(MayUnrollInner) ? int(InnerUnrolling)
131 : int(NoUnrolling)
132 )
134 ? ( bool(MayUnrollCompletely) && ( EIGEN_UNALIGNED_VECTORIZE || (int(DstAlignment)>=int(LinearRequiredAlignment)))
135 ? int(CompleteUnrolling)
136 : int(NoUnrolling) )
137 : int(Traversal) == int(LinearTraversal)
138 ? ( bool(MayUnrollCompletely) ? int(CompleteUnrolling)
139 : int(NoUnrolling) )
142 ? ( bool(MayUnrollInner) ? int(InnerUnrolling)
143 : int(NoUnrolling) )
144#endif
145 : int(NoUnrolling)
146 };
if(!(yy_init))
Definition lexer.c:1190
@ InnerUnrolling
Definition Constants.h:302
@ CompleteUnrolling
Definition Constants.h:305
@ NoUnrolling
Definition Constants.h:300
@ Unrolling
Definition AssignEvaluator.h:127

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