diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-04-09 12:31:55 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-04-09 12:31:55 +0000 |
commit | 1985fb0551837fd5017858d6d7e82fd110294cfa (patch) | |
tree | c111f53b27d6ef2d3ee9128c774bd4b34e0488ae /Eigen/Core | |
parent | 4920f2011e8acd0e44c0c6646843d5ca5d79b68c (diff) |
Added initial experimental support for explicit vectorization.
Currently only the following platform/operations are supported:
- SSE2 compatible architecture
- compiler compatible with intel's SSE2 intrinsics
- float, double and int data types
- fixed size matrices with a storage major dimension multiple of 4 (or 2 for double)
- scalar-matrix product, component wise: +,-,*,min,max
- matrix-matrix product only if the left matrix is vectorizable and column major
or the right matrix is vectorizable and row major, e.g.:
a.transpose() * b is not vectorized with the default column major storage.
To use it you must define EIGEN_VECTORIZE and EIGEN_INTEL_PLATFORM.
Diffstat (limited to 'Eigen/Core')
-rw-r--r-- | Eigen/Core | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Eigen/Core b/Eigen/Core index 22a2ed6f2..dc28951f0 100644 --- a/Eigen/Core +++ b/Eigen/Core @@ -4,17 +4,26 @@ #include <cstdlib> #include <cmath> #include <complex> -#ifndef EIGEN_USE_CUSTOM_ASSERT #include <cassert> -#endif #include <iostream> +#ifdef EIGEN_VECTORIZE +#ifdef EIGEN_INTEL_PLATFORM +#include <emmintrin.h> +#include <xmmintrin.h> +#else +#undef EIGEN_VECTORIZE +#endif +#endif + namespace Eigen { #include "src/Core/Util.h" #include "src/Core/ForwardDeclarations.h" #include "src/Core/NumTraits.h" #include "src/Core/MathFunctions.h" +#include "src/Core/PacketMath.h" +#include "src/Core/Functors.h" #include "src/Core/MatrixBase.h" #include "src/Core/Coeffs.h" #include "src/Core/OperatorEquals.h" @@ -42,7 +51,6 @@ namespace Eigen { #include "src/Core/IO.h" #include "src/Core/Swap.h" #include "src/Core/CommaInitializer.h" -#include "src/Core/Functors.h" } // namespace Eigen |