diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-07-19 23:28:57 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-07-19 23:28:57 +0200 |
commit | 8b0b121c9e7eb1fce42849124478067c4e4d30c5 (patch) | |
tree | d7a47aa7bf61e60b662f62d74f31870282c9177a /Eigen/src | |
parent | 08c841eb87f6b2713b9eeca64b9dba5a37fd9cc4 (diff) |
explicitely disable vectorization for mixed coeff based products
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/Core/products/CoeffBasedProduct.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Eigen/src/Core/products/CoeffBasedProduct.h b/Eigen/src/Core/products/CoeffBasedProduct.h index ceaeda284..66976d8e2 100644 --- a/Eigen/src/Core/products/CoeffBasedProduct.h +++ b/Eigen/src/Core/products/CoeffBasedProduct.h @@ -73,6 +73,8 @@ struct ei_traits<CoeffBasedProduct<LhsNested,RhsNested,NestingFlags> > LhsRowMajor = LhsFlags & RowMajorBit, RhsRowMajor = RhsFlags & RowMajorBit, + SameType = ei_is_same_type<typename _LhsNested::Scalar,typename _RhsNested::Scalar>::ret, + CanVectorizeRhs = RhsRowMajor && (RhsFlags & PacketAccessBit) && (ColsAtCompileTime == Dynamic || ( (ColsAtCompileTime % ei_packet_traits<Scalar>::size) == 0 @@ -94,7 +96,8 @@ struct ei_traits<CoeffBasedProduct<LhsNested,RhsNested,NestingFlags> > Flags = ((unsigned int)(LhsFlags | RhsFlags) & HereditaryBits & ~RowMajorBit) | (EvalToRowMajor ? RowMajorBit : 0) | NestingFlags - | (CanVectorizeLhs || CanVectorizeRhs ? PacketAccessBit : 0), + // TODO enable vectorization for mixed types + | (SameType && (CanVectorizeLhs || CanVectorizeRhs) ? PacketAccessBit : 0), CoeffReadCost = InnerSize == Dynamic ? Dynamic : InnerSize * (NumTraits<Scalar>::MulCost + LhsCoeffReadCost + RhsCoeffReadCost) |