Benoit Steiner
bff8cbad06
Removed executable bit from header files
2016-03-23 16:14:23 -07:00
Gael Guennebaud
a4c76f8d34
Improve inlining
2016-02-08 11:33:02 +01:00
Gael Guennebaud
d142165942
bug #667 : declare several critical functions as FORECE_INLINE to make ICC happier.
...
<g.gael@free.fr> HG: branch 'default' HG: changed Eigen/src/Core/ArrayBase.h HG: changed Eigen/src/Core/AssignEvaluator.h HG: changed
Eigen/src/Core/CoreEvaluators.h HG: changed Eigen/src/Core/CwiseUnaryOp.h HG: changed Eigen/src/Core/DenseBase.h HG: changed Eigen/src/Core/MatrixBase.h
2016-01-31 16:34:10 +01:00
Gael Guennebaud
8b9dc9f0df
bug #1144 : fix regression in x=y+A*x (aliasing), and move evaluator_traits::AssumeAliasing to evaluator_assume_aliasing.
2016-01-09 08:30:38 +01:00
Gael Guennebaud
30b5c4cd14
Remove useless "explicit", and fix inline/static order.
2015-12-11 10:59:39 +01:00
Gael Guennebaud
8531304858
Simplify cost computations based on HugeCost being smaller that unrolling limit
2015-10-28 13:39:02 +01:00
Gael Guennebaud
77ff3386b7
Refactoring of the cost model:
...
- 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)
2015-10-28 11:42:14 +01:00
Gael Guennebaud
12f50a4697
Fix assign vectorization logic with respect to fixed outer-stride
2015-10-27 11:04:19 +01:00
Gael Guennebaud
0fc8954282
Improve readibility of EIGEN_DEBUG_ASSIGN mode.
2015-10-27 10:38:49 +01:00
Gael Guennebaud
5cc7251188
Some cleaning in evaluators
2015-10-08 15:22:04 +02:00
Gael Guennebaud
aba1eda71e
Help clang to inline some functions, thus fixing some regressions
2015-10-07 15:44:12 +02:00
Gael Guennebaud
41cc1f9033
Remove debuging prod() and lazyprod() function, plus some cleaning in noalias assignment
2015-10-07 15:41:22 +02:00
Gael Guennebaud
26cde4db3c
Define Permutation*<>::Scalar to 'void', re-enable scalar type compatibility check in assignment while relaxing this test for void types.
2015-10-06 17:18:06 +02:00
Gael Guennebaud
fb51bab272
Some cleaning
2015-10-06 17:14:56 +02:00
Gael Guennebaud
92b9f0e102
Cleaning pass on evaluators: remove the useless and error prone evaluator<>::type indirection.
2015-09-02 21:38:40 +02:00
Gael Guennebaud
febcce34f1
Enable vectorization with half-packets
2015-08-07 20:05:31 +02:00
Gael Guennebaud
65bfa5fce7
Allow to use arbitrary packet-types during evaluation.
...
This is implemented by adding a PacketType template parameter to packet and writePacket members of evaluator<>.
2015-08-07 12:01:39 +02:00
Gael Guennebaud
ce57dbd937
Let unpacket_traits<> exposes the required alignment and make use of it everywhere
2015-08-07 10:44:01 +02:00
Gael Guennebaud
2afdef6a54
Generalize first_aligned to take the requested alignment as a template parameter, and add a first_default_aligned variante calling first_aligned with the requirement of the largest packet for the given scalar type.
2015-08-06 17:52:01 +02:00
Gael Guennebaud
1f5024332e
First part of a big refactoring of alignment control to enable the handling 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.
2015-08-06 15:31:07 +02:00
Christoph Hertzberg
ea87561564
bug #1039 : Redefining EIGEN_DEFAULT_DENSE_INDEX_TYPE may lead to errors
2015-07-13 16:08:25 +02:00
Gael Guennebaud
36643eec0c
Add a call_assignment_no_alias_no_transpose shortcut
2015-06-24 17:50:43 +02:00
Gael Guennebaud
972a535288
Remove aligned-on-scalar assert and fallback to non vectorized path at runtime (first_aligned already had this runtime guard)
2015-06-14 15:04:07 +02:00
Christoph Hertzberg
e8cdbedefb
bug #877 , bug #572 : Introduce a global Index typedef. Rename Sparse*::Index to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings.
2014-12-04 22:48:53 +01:00
Gael Guennebaud
ee06f78679
Introduce unified macros to identify compiler, OS, and architecture. They are all defined in util/Macros.h and prefixed with EIGEN_COMP_, EIGEN_OS_, and EIGEN_ARCH_ respectively.
2014-11-04 21:58:52 +01:00
Christoph Hertzberg
d3f52debc6
Make cuda_basic test compile again by adding lots of EIGEN_DEVICE_FUNC.
...
Although the test passes now, there might still be some missing.
2014-10-13 17:18:26 +02:00
Georg Drenkhahn
edaefeb978
Using Kernel::Index type instead of int to prevent possible implicit conversion from long to int.
2014-09-21 10:01:12 +02:00
Gael Guennebaud
0ca43f7e9a
Remove deprecated code not used by evaluators
2014-09-18 15:15:27 +02:00
Gael Guennebaud
c83e01f2d6
Favor column major storage for inner products
2014-09-14 19:38:49 +02:00
Gael Guennebaud
26db954776
Re-enable aliasing checks when using evaluators
2014-09-14 19:06:08 +02:00
Gael Guennebaud
9b729f93a1
Resizing is done by call_assignment_noalias, so no need to perform it when dealing with aliasing.
2014-07-21 11:46:47 +02:00
Gael Guennebaud
62f332fc04
Make sure we evaluate into temporaries matching evaluator storage order requirements
2014-07-19 15:19:10 +02:00
Gael Guennebaud
b868bfb84a
Make operator=(EigenBase<>) uses the new assignment mechanism and introduce a generic EigenBase to EigenBase assignment kind based on the previous evalTo mechanism.
2014-06-25 17:23:52 +02:00
Gael Guennebaud
3849cc65ee
Implement binaryop and transpose evaluators for sparse matrices
2014-06-23 10:40:03 +02:00
Gael Guennebaud
5e26b7cf9d
Extend evaluation traits debuging info
2014-03-12 18:13:18 +01:00
Gael Guennebaud
a6be1952f4
Fix a few regression when moving the flags
2014-03-12 16:18:34 +01:00
Gael Guennebaud
8dd3b716e3
Move evaluation related flags from traits to evaluator and fix evaluators of MapBase and Replicate
2014-03-12 13:34:11 +01:00
Gael Guennebaud
da6ec81282
Move CoeffReadCost mechanism to evaluators
2014-03-10 23:24:40 +01:00
Gael Guennebaud
af31b6c37a
Generalize evaluator<Inverse<>> such that there is no need to specialize it
2014-02-21 15:22:08 +01:00
Gael Guennebaud
93125e372d
Port LU module to evaluators (except image() and kernel())
2014-02-20 15:26:15 +01:00
Gael Guennebaud
2eee6eaf3c
Fix mixing scalar types with evaluators
2014-02-19 16:30:17 +01:00
Gael Guennebaud
68e8ddaf94
Fix vectorization logic wrt assignment functors
2014-02-19 13:26:07 +01:00
Gael Guennebaud
82c066b3c4
Cleaning
2014-02-18 15:44:32 +01:00
Gael Guennebaud
8cfb138e73
Finally, the simplest remains to deffer resizing at the latest
2014-02-18 13:31:44 +01:00
Gael Guennebaud
573c587e3d
New design for handling automatic transposition
2014-02-18 10:53:14 +01:00
Gael Guennebaud
d595fd31f5
Deal with automatic transposition in call_assignment, fix a few shortcomings
2014-02-17 16:11:55 +01:00
Gael Guennebaud
ee1c55f923
Add missing template keyword
2014-01-26 14:55:25 +01:00
Gael Guennebaud
5fa7262e4c
Refactor triangular assignment
2014-01-25 23:02:14 +01:00
Gael Guennebaud
34ca81b1bf
Add direct assignment of products
2013-12-02 16:37:58 +01:00
Gael Guennebaud
c6f7337032
Get rid of call_dense_swap_loop
2013-12-02 14:44:13 +01:00