aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/ProductEvaluators.h
Commit message (Collapse)AuthorAge
* Operators += and -= do not resize!Gravatar Gael Guennebaud2016-12-02
|
* Fix a performance regression in (mat*mat)*vec for which mat*mat was ↵Gravatar Gael Guennebaud2016-11-30
| | | | evaluated multiple times.
* Fix regression in X = (X*X.transpose())/s with X rectangular by deferring ↵Gravatar Gael Guennebaud2016-10-26
| | | | resizing of the destination after the creation of the evaluator of the source expression.
* Fix ICC warningsGravatar Gael Guennebaud2016-10-25
|
* Use explicit type casting to generate packets of zeros.Gravatar Benoit Steiner2016-10-04
|
* bug #1308: fix compilation of some small products involving nullary-expressions.Gravatar Gael Guennebaud2016-09-29
|
* Add debug info.Gravatar Gael Guennebaud2016-09-26
|
* bug #1311: fix alignment logic in some cases of ↵Gravatar Gael Guennebaud2016-09-26
| | | | (scalar*small).lazyProduct(small)
* bug #1308: fix compilation of vector * rowvector::nullary.Gravatar Gael Guennebaud2016-09-25
|
* bug #1283: quick fix for products involving uncommon general block access to ↵Gravatar Gael Guennebaud2016-08-31
| | | | vectors.
* Optimize expression matching "d?=a-b*c" as "d?=a; d?=b*c;"Gravatar Gael Guennebaud2016-08-23
|
* Fix vectorization logic for coeff-based product for some corner cases.Gravatar Gael Guennebaud2016-07-31
|
* Vectorize more small product expressions by letting the general assignement ↵Gravatar Gael Guennebaud2016-07-28
| | | | logic decides on the sizes that are OK for vectorization.
* Allows the compiler to inline outer products (the change from default to ↵Gravatar Gael Guennebaud2016-07-22
| | | | | | dont-inline in changeset 737bed19c1fdb01568706bca19666531dda681a7 was not motivated)
* Re-enable some specializations for Assignment<.,Product<>>Gravatar Gael Guennebaud2016-07-05
|
* Fix template resolution.Gravatar Gael Guennebaud2016-07-04
|
* Implement scalar multiples and division by a scalar as a binary-expression ↵Gravatar Gael Guennebaud2016-06-14
| | | | | | | | | | | | with a constant expression. This slightly complexifies the type of the expressions and implies that we now have to distinguish between scalar*expr and expr*scalar to catch scalar-multiple expression (e.g., see BlasUtil.h), but this brings several advantages: - it makes it clear on each side the scalar is applied, - it clearly reflects that we are dealing with a binary-expression, - the complexity of the type is hidden through macros defined at the end of Macros.h, - distinguishing between "scalar op expr" and "expr op scalar" is important to support non commutative fields (like quaternions) - "scalar op expr" is now fully equivalent to "ConstantExpr(scalar) op expr" - scalar_multiple_op, scalar_quotient1_op and scalar_quotient2_op are not used anymore in officially supported modules (still used in Tensor)
* Disable shortcuts for res ?= prod when the scalar types do not match exactly.Gravatar Gael Guennebaud2016-06-06
|
* Relax mixing-type constraints for binary coefficient-wise operators:Gravatar Gael Guennebaud2016-06-06
| | | | | | | | | | - Replace internal::scalar_product_traits<A,B> by Eigen::ScalarBinaryOpTraits<A,B,OP> - Remove the "functor_is_product_like" helper (was pretty ugly) - Currently, OP is not used, but it is available to the user for fine grained tuning - Currently, only the following operators have been generalized: *,/,+,-,=,*=,/=,+=,-= - TODO: generalize all other binray operators (comparisons,pow,etc.) - TODO: handle "scalar op array" operators (currently only * is handled) - TODO: move the handling of the "void" scalar type to ScalarBinaryOpTraits
* bug #1181: help MSVC inlining.Gravatar Gael Guennebaud2016-05-31
|
* Fix static/inline order.Gravatar Gael Guennebaud2016-05-25
|
* bug #1207: Add and fix logical-op warningsGravatar Christoph Hertzberg2016-05-11
|
* Make use of is_same_dense helper instead of extract_data to detect ↵Gravatar Gael Guennebaud2016-04-13
| | | | input/outputs are the same.
* Fix incomplete previous patch on matrix comparision.Gravatar Gael Guennebaud2016-04-13
|
* Fix detection of same matrices when both matrices are not handled by ↵Gravatar Gael Guennebaud2016-04-13
| | | | extract_data.
* Enable the use of half-packet in coeff-based product.Gravatar Gael Guennebaud2016-04-12
| | | | For instance, Matrix4f*Vector4f is now vectorized again when using AVX.
* Removed executable bit from header filesGravatar Benoit Steiner2016-03-23
|
* Improve inliningGravatar Gael Guennebaud2016-02-08
|
* bug #1144: fix regression in x=y+A*x (aliasing), and move ↵Gravatar Gael Guennebaud2016-01-09
| | | | evaluator_traits::AssumeAliasing to evaluator_assume_aliasing.
* Fix sign-unsigned issue in enumGravatar Gael Guennebaud2015-12-09
|
* Fix Alignment in coeff-based product, and enable unaligned vectorizationGravatar Gael Guennebaud2015-12-08
|
* bug #1009, part 1/2: make sure vector expressions expose LinearAccessBit flag.Gravatar Gael Guennebaud2015-11-27
|
* Simplify cost computations based on HugeCost being smaller that unrolling limitGravatar Gael Guennebaud2015-10-28
|
* Refactoring of the cost model:Gravatar Gael Guennebaud2015-10-28
| | | | | | | | | | | - Dynamic is now an invalid value - introduce a HugeCost constant to be used for runtime-cost values or arbitrarily huge cost - add sanity checks for cost values: must be >=0 and not too large This change provides several benefits: - it fixes shortcoming is some cost computation where the Dynamic case was not properly handled. - it simplifies cost computation logic, and should avoid future similar shortcomings. - it allows to distinguish between different level of dynamic/huge/infinite cost - it should enable further simplifications in the computation of costs (save compilation time)
* Fix ambiguous instantiation issues of product_evaluator.Gravatar Gael Guennebaud2015-10-14
|
* Implement temporary-free path for "D.nolias() ?= C + A*B". (I thought it was ↵Gravatar Gael Guennebaud2015-10-09
| | | | already implemented)
* Fix nesting sub-expression in outer-productsGravatar Gael Guennebaud2015-10-08
|
* Fix propagation of AssumeAliasing for expression as: "scalar * (A*B)"Gravatar Gael Guennebaud2015-10-08
|
* Clean a bit the implementation of inverse permutationsGravatar Gael Guennebaud2015-10-08
|
* Re-enable vectorization of LinSpaced, plus some cleaningGravatar Gael Guennebaud2015-10-08
|
* Help clang to inline some functions, thus fixing some regressionsGravatar Gael Guennebaud2015-10-07
|
* Remove debuging prod() and lazyprod() function, plus some cleaning in ↵Gravatar Gael Guennebaud2015-10-07
| | | | noalias assignment
* Fix bug #1067: naming conflictGravatar Gael Guennebaud2015-09-19
|
* Since there is no reason for evaluators to be nested by reference, let's ↵Gravatar Gael Guennebaud2015-09-02
| | | | remove the evaluator<>::nestedType indirection.
* Cleaning pass on evaluators: remove the useless and error prone ↵Gravatar Gael Guennebaud2015-09-02
| | | | evaluator<>::type indirection.
* Allow to use arbitrary packet-types during evaluation.Gravatar Gael Guennebaud2015-08-07
| | | | This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
* Let unpacket_traits<> exposes the required alignment and make use of it ↵Gravatar Gael Guennebaud2015-08-07
| | | | everywhere
* First part of a big refactoring of alignment control to enable the handling ↵Gravatar Gael Guennebaud2015-08-06
| | | | | | | | | of arbitrarily aligned buffers. It includes: - AlignedBit flag is deprecated. Alignment is now specified by the evaluator through the 'Alignment' enum, e.g., evaluator<Xpr>::Alignment. Its value is in Bytes. - Add several enums to specify alignment: Aligned8, Aligned16, Aligned32, Aligned64, Aligned128. AlignedMax corresponds to EIGEN_MAX_ALIGN_BYTES. Such enums are used to define the above Alignment value, and as the 'Options' template parameter of Map<> and Ref<>. - The Aligned enum is now deprecated. It is now an alias for Aligned16. - Currently, traits<Matrix<>>, traits<Array<>>, traits<Ref<>>, traits<Map<>>, and traits<Block<>> also expose the Alignment enum.
* Fix a warning with iccGravatar Gael Guennebaud2015-06-23
|
* Fix ambiguous instanciation using clean class-level SFINAE in product_evaluatorGravatar Gael Guennebaud2015-06-19
|