From 8b0b121c9e7eb1fce42849124478067c4e4d30c5 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 19 Jul 2010 23:28:57 +0200 Subject: [PATCH] explicitely disable vectorization for mixed coeff based products --- Eigen/src/Core/products/CoeffBasedProduct.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 > LhsRowMajor = LhsFlags & RowMajorBit, RhsRowMajor = RhsFlags & RowMajorBit, + SameType = ei_is_same_type::ret, + CanVectorizeRhs = RhsRowMajor && (RhsFlags & PacketAccessBit) && (ColsAtCompileTime == Dynamic || ( (ColsAtCompileTime % ei_packet_traits::size) == 0 @@ -94,7 +96,8 @@ struct ei_traits > 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::MulCost + LhsCoeffReadCost + RhsCoeffReadCost)