diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-06-15 00:01:16 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-06-15 00:01:16 +0200 |
commit | 101ea26f5e18919972b321b5f7e3ef4e07be3fd6 (patch) | |
tree | d1eee8dfdbfdeccd8ddf6f21cee869f14fca12f3 | |
parent | 76236cdea402e7236249ab19bd5d8d6ceac1346d (diff) |
Include the cost of stores in unrolling (also fix infinite unrolling with expression costing 0 like Constant)
-rw-r--r-- | Eigen/src/Core/AssignEvaluator.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Eigen/src/Core/AssignEvaluator.h b/Eigen/src/Core/AssignEvaluator.h index f966724cc..1df717bac 100644 --- a/Eigen/src/Core/AssignEvaluator.h +++ b/Eigen/src/Core/AssignEvaluator.h @@ -116,9 +116,9 @@ private: : 1, UnrollingLimit = EIGEN_UNROLLING_LIMIT * ActualPacketSize, MayUnrollCompletely = int(Dst::SizeAtCompileTime) != Dynamic - && int(Dst::SizeAtCompileTime) * int(SrcEvaluator::CoeffReadCost) <= int(UnrollingLimit), + && int(Dst::SizeAtCompileTime) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <= int(UnrollingLimit), MayUnrollInner = int(InnerSize) != Dynamic - && int(InnerSize) * int(SrcEvaluator::CoeffReadCost) <= int(UnrollingLimit) + && int(InnerSize) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <= int(UnrollingLimit) }; public: |