diff --git a/Eigen/src/Core/products/SelfadjointMatrixMatrix.h b/Eigen/src/Core/products/SelfadjointMatrixMatrix.h index d12710dbf..0fbdd024c 100644 --- a/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +++ b/Eigen/src/Core/products/SelfadjointMatrixMatrix.h @@ -26,10 +26,9 @@ #define EIGEN_SELFADJOINT_MATRIX_MATRIX_H // pack a selfadjoint block diagonal for use with the gebp_kernel -template +template struct ei_symm_pack_lhs { - enum { PacketSize = ei_packet_traits::size }; template inline void pack(Scalar* blockA, const ei_const_blas_data_mapper& lhs, Index cols, Index i, Index& count) { @@ -59,16 +58,16 @@ struct ei_symm_pack_lhs { ei_const_blas_data_mapper lhs(_lhs,lhsStride); Index count = 0; - Index peeled_mc = (rows/mr)*mr; - for(Index i=0; i(blockA, lhs, cols, i, count); + pack(blockA, lhs, cols, i, count); } - if(rows-peeled_mc>=PacketSize) + if(rows-peeled_mc>=Pack2) { - pack(blockA, lhs, cols, peeled_mc, count); - peeled_mc += PacketSize; + pack(blockA, lhs, cols, peeled_mc, count); + peeled_mc += Pack2; } // do the same with mr==1 @@ -269,9 +268,9 @@ struct ei_product_selfadjoint_matrix gebp_kernel; - ei_symm_pack_lhs pack_lhs; + ei_symm_pack_lhs pack_lhs; ei_gemm_pack_rhs pack_rhs; - ei_gemm_pack_lhs pack_lhs_transposed; + ei_gemm_pack_lhs pack_lhs_transposed; for(Index k2=0; k2() + ei_gemm_pack_lhs() (blockA, &lhs(i2, k2), lhsStride, actual_kc, actual_mc); gebp_kernel(res+i2, resStride, blockA, blockB, actual_mc, actual_kc, cols, alpha); diff --git a/Eigen/src/Core/products/TriangularMatrixMatrix.h b/Eigen/src/Core/products/TriangularMatrixMatrix.h index b76a67acf..0f90b5683 100644 --- a/Eigen/src/Core/products/TriangularMatrixMatrix.h +++ b/Eigen/src/Core/products/TriangularMatrixMatrix.h @@ -120,7 +120,6 @@ struct ei_product_triangular_matrix_matrix triangularBuffer; @@ -196,7 +195,7 @@ struct ei_product_triangular_matrix_matrix() + ei_gemm_pack_lhs() (blockA, &lhs(i2, actual_k2), lhsStride, actual_kc, actual_mc); gebp_kernel(res+i2, resStride, blockA, blockB, actual_mc, actual_kc, cols, alpha);