diff options
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/Core/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Eigen/src/Core/Sum.h | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/Eigen/src/Core/CMakeLists.txt b/Eigen/src/Core/CMakeLists.txt index fb745a252..761e8c3f5 100644 --- a/Eigen/src/Core/CMakeLists.txt +++ b/Eigen/src/Core/CMakeLists.txt @@ -6,4 +6,4 @@ INSTALL(FILES ) ADD_SUBDIRECTORY(util) -ADD_SUBDIRECTORY(arch)
\ No newline at end of file +ADD_SUBDIRECTORY(arch) diff --git a/Eigen/src/Core/Sum.h b/Eigen/src/Core/Sum.h index 6c7280800..3b073b95e 100644 --- a/Eigen/src/Core/Sum.h +++ b/Eigen/src/Core/Sum.h @@ -201,12 +201,11 @@ struct ei_sum_impl<Derived, LinearVectorization, NoUnrolling> const int alignedEnd = alignedStart + alignedSize; Scalar res; - if(Derived::SizeAtCompileTime>=2*packetSize && alignedSize >= 2*packetSize) + if(alignedSize) { - PacketScalar packet_res = mat.template packet<alignment>(alignedStart, alignedStart); + PacketScalar packet_res = mat.template packet<alignment>(alignedStart); for(int index = alignedStart + packetSize; index < alignedEnd; index += packetSize) packet_res = ei_padd(packet_res, mat.template packet<alignment>(index)); - res = ei_predux(packet_res); } else // too small to vectorize anything. @@ -215,7 +214,7 @@ struct ei_sum_impl<Derived, LinearVectorization, NoUnrolling> res = Scalar(0); } - for(int index = alignedEnd; index < size; index++) + for(int index = 0; index < alignedStart; index++) res += mat.coeff(index); for(int index = alignedEnd; index < size; index++) |