mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-03-07 18:27:40 +08:00
fix severe perf bug: coeff-based matrix products were not considered aligned, typically preventing vectorization.
added unit test.
This commit is contained in:
parent
47a9d2ed54
commit
fd4e366d7e
@ -98,6 +98,7 @@ struct traits<CoeffBasedProduct<LhsNested,RhsNested,NestingFlags> >
|
||||
Flags = ((unsigned int)(LhsFlags | RhsFlags) & HereditaryBits & ~RowMajorBit)
|
||||
| (EvalToRowMajor ? RowMajorBit : 0)
|
||||
| NestingFlags
|
||||
| (LhsFlags & RhsFlags & AlignedBit)
|
||||
// TODO enable vectorization for mixed types
|
||||
| (SameType && (CanVectorizeLhs || CanVectorizeRhs) ? PacketAccessBit : 0),
|
||||
|
||||
|
@ -186,6 +186,8 @@ template<typename Scalar, bool Enable = internal::packet_traits<Scalar>::Vectori
|
||||
Matrix22
|
||||
>(DefaultTraversal,CompleteUnrolling)));
|
||||
|
||||
VERIFY((test_assign(Matrix11(), Matrix11()*Matrix11(), InnerVectorizedTraversal, CompleteUnrolling)));
|
||||
|
||||
VERIFY(test_redux(VectorX(10),
|
||||
LinearVectorizedTraversal,NoUnrolling));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user