diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-04-09 18:24:13 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-04-09 18:24:13 +0000 |
commit | 212da8ffe0d3bad19479ffa2c5b36ce4edcd97da (patch) | |
tree | 7fce7396e2fb25bb02acd167e5c40160e713e5d0 /Eigen/src/Core | |
parent | 8f957564ec3e3657a3ff023a444a71e8903af4f3 (diff) |
fix priority operator bugs in the computation
of the VectorizableBit flag, now benchmark.cpp is properly vectorized
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r-- | Eigen/src/Core/CwiseBinaryOp.h | 2 | ||||
-rw-r--r-- | Eigen/src/Core/CwiseUnaryOp.h | 2 | ||||
-rw-r--r-- | Eigen/src/Core/Product.h | 7 |
3 files changed, 6 insertions, 5 deletions
diff --git a/Eigen/src/Core/CwiseBinaryOp.h b/Eigen/src/Core/CwiseBinaryOp.h index 0ca6d3922..174b448fc 100644 --- a/Eigen/src/Core/CwiseBinaryOp.h +++ b/Eigen/src/Core/CwiseBinaryOp.h @@ -61,7 +61,7 @@ struct ei_traits<CwiseBinaryOp<BinaryOp, Lhs, Rhs> > MaxRowsAtCompileTime = Lhs::MaxRowsAtCompileTime, MaxColsAtCompileTime = Lhs::MaxColsAtCompileTime, Flags = ((Lhs::Flags | Rhs::Flags) & ~VectorizableBit) - | (ei_functor_traits<BinaryOp>::IsVectorizable && ((Lhs::Flags&RowMajorBit)==(Rhs::Flags&RowMajorBit)) + | (ei_functor_traits<BinaryOp>::IsVectorizable && ((Lhs::Flags & RowMajorBit)==(Rhs::Flags & RowMajorBit)) ? (Lhs::Flags & Rhs::Flags & VectorizableBit) : 0), CoeffReadCost = Lhs::CoeffReadCost + Rhs::CoeffReadCost + ei_functor_traits<BinaryOp>::Cost }; diff --git a/Eigen/src/Core/CwiseUnaryOp.h b/Eigen/src/Core/CwiseUnaryOp.h index 5c2ba1b07..cbe545a92 100644 --- a/Eigen/src/Core/CwiseUnaryOp.h +++ b/Eigen/src/Core/CwiseUnaryOp.h @@ -51,7 +51,7 @@ struct ei_traits<CwiseUnaryOp<UnaryOp, MatrixType> > MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime, MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime, Flags = (MatrixType::Flags & ~VectorizableBit) - | (ei_functor_traits<UnaryOp>::IsVectorizable ? MatrixType::Flags & VectorizableBit : 0), + | (ei_functor_traits<UnaryOp>::IsVectorizable ? (MatrixType::Flags & VectorizableBit) : 0), CoeffReadCost = MatrixType::CoeffReadCost + ei_functor_traits<UnaryOp>::Cost }; }; diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index cfb5d3e10..142955108 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -134,9 +134,10 @@ struct ei_traits<Product<Lhs, Rhs, EvalMode> > : (unsigned int)(LhsFlags | RhsFlags) & ~LargeBit ) | EvalBeforeAssigningBit | (ei_product_eval_mode<Lhs, Rhs>::value == (int)CacheOptimal ? EvalBeforeNestingBit : 0)) - & (~(RowMajorBit|VectorizableBit)) - | (((!Lhs::Flags&RowMajorBit) && Lhs::Flags&VectorizableBit) ? VectorizableBit - : ((Rhs::Flags&RowMajorBit && Rhs::Flags&VectorizableBit) ? (RowMajorBit|VectorizableBit) : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER)), + & (~(RowMajorBit | VectorizableBit)) + | (((!(Lhs::Flags & RowMajorBit)) && (Lhs::Flags & VectorizableBit)) ? VectorizableBit + : ((Rhs::Flags & RowMajorBit && (Rhs::Flags & VectorizableBit)) ? (RowMajorBit | VectorizableBit) + : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER)), CoeffReadCost = Lhs::ColsAtCompileTime == Dynamic ? Dynamic |