Lines 80-96
struct traits<CoeffBasedProduct<LhsNeste
Link Here
|
80 |
|
80 |
|
81 |
EvalToRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1) ? 1 |
81 |
EvalToRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1) ? 1 |
82 |
: (MaxColsAtCompileTime==1&&MaxRowsAtCompileTime!=1) ? 0 |
82 |
: (MaxColsAtCompileTime==1&&MaxRowsAtCompileTime!=1) ? 0 |
83 |
: (RhsRowMajor && !CanVectorizeLhs), |
83 |
: (RhsRowMajor && !CanVectorizeLhs), |
84 |
|
84 |
|
85 |
Flags = ((unsigned int)(LhsFlags | RhsFlags) & HereditaryBits & ~RowMajorBit) |
85 |
Flags = ((unsigned int)(LhsFlags | RhsFlags) & HereditaryBits & ~RowMajorBit) |
86 |
| (EvalToRowMajor ? RowMajorBit : 0) |
86 |
| (EvalToRowMajor ? RowMajorBit : 0) |
87 |
| NestingFlags |
87 |
| NestingFlags |
88 |
| (LhsFlags & RhsFlags & AlignedBit) |
88 |
| (CanVectorizeLhs ? (LhsFlags & AlignedBit) : 0) |
|
|
89 |
| (CanVectorizeRhs ? (RhsFlags & AlignedBit) : 0) |
89 |
// TODO enable vectorization for mixed types |
90 |
// TODO enable vectorization for mixed types |
90 |
| (SameType && (CanVectorizeLhs || CanVectorizeRhs) ? PacketAccessBit : 0), |
91 |
| (SameType && (CanVectorizeLhs || CanVectorizeRhs) ? PacketAccessBit : 0), |
91 |
|
92 |
|
92 |
CoeffReadCost = InnerSize == Dynamic ? Dynamic |
93 |
CoeffReadCost = InnerSize == Dynamic ? Dynamic |
93 |
: InnerSize * (NumTraits<Scalar>::MulCost + LhsCoeffReadCost + RhsCoeffReadCost) |
94 |
: InnerSize * (NumTraits<Scalar>::MulCost + LhsCoeffReadCost + RhsCoeffReadCost) |
94 |
+ (InnerSize - 1) * NumTraits<Scalar>::AddCost, |
95 |
+ (InnerSize - 1) * NumTraits<Scalar>::AddCost, |
95 |
|
96 |
|
96 |
/* CanVectorizeInner deserves special explanation. It does not affect the product flags. It is not used outside |
97 |
/* CanVectorizeInner deserves special explanation. It does not affect the product flags. It is not used outside |