| Commit message (Collapse) | Author | Age |
... | |
|
|
|
| |
the loop peeling code of the block-panel matrix multiplication kernel.
|
|
|
|
|
|
| |
packets, where N is the number of words in each packet. This primitive will be used to complete the vectorization of the gemm_pack_lhs and gemm_pack_rhs functions.
Implemented the primitive using SSE instructions.
|
| |
|
|
|
|
|
|
|
| |
generating a shufps instruction instead of the more efficient pshufd instruction.
The trick consists in introducing a new pload1 function to be used in low level product kernels for which bug #203 does not apply.
Indeed, it turned out that using inline assembly prevents gcc of doing a good job at instructtion reordering.
|
|\ |
|
| | |
|
| | |
|
|\| |
|
| | |
|
|/
|
|
| |
std::min/max
|
|
|
|
|
| |
- remove most of the metaprogramming kung fu in MathFunctions.h (only keep functions that differs from the std)
- remove the overloads for array expression that were in the std namespace
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
default windows.h
(transplanted from 49b6e9143e1d74441924c0c313536e263e12a55c
)
|
|
|
|
|
|
|
| |
a standard math function using std:: but rather put a using std::foo before and simply call foo:
using std::max;
max(a,b);
|
|
|
|
|
|
| |
To get the links to work, I also had to document the Eigen namespace.
Unfortunately, this means that the word Eigen is linked whenever it appears
in the docs.
|
| |
|
| |
|
|
|
|
| |
acos, asin
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* pload* and pset1 are now templated on the packet type
* gemv routines are now embeded into a structure with
a consistent API with respect to gemm
* some configurations of vector * matrix and matrix * matrix works fine,
some need more work...
|
|
|
|
|
| |
* add a, Alignable trait
* update LinearVectorization assignment
|
| |
|
|
|
|
| |
* vectorize complex<double>
|
|
|
|
| |
* extend the packing routines to support conjugation
|
| |
|
| |
|
|
|
|
|
| |
- take const Packet& args like the other packet funcs
- SSE specializations: make them be actual template specializations
|
|
|
|
|
|
|
| |
replaced _mm_prefetch in GeneralBlockPanelKernel.h, with ei_prefetch() inline function.
Implemented NEON and AltiVec versions, copied SSE version over from GeneralBlockPanelKernel.h.
Also in GCC case (or rather !_MSC_VER) it's implemented using __builtin_prefetch().
NEON managed to give a small but welcome boost, 0.88GFLOPS -> 0.91GFLOPS.
|
| |
|
|
|
|
|
|
|
|
| |
inline function.
Implemented NEON and AltiVec versions, copied SSE version over from GeneralBlockPanelKernel.h.
Also in GCC case (or rather !_MSC_VER) it's implemented using __builtin_prefetch().
NEON managed to give a small but welcome boost, 0.88GFLOPS -> 0.91GFLOPS.
|
|
|
|
|
|
|
|
|
| |
Added setLinSpaced/LinSpaced functionality to DenseBase.
Improved vectorized assignment - overcomes MSVC optimization issues.
CwiseNullaryOp is now requiring functors to offer 1D and 2D operators.
Adapted existing functors to the new CwiseNullaryOp requirements.
Added ei_plset to create packages as [a, a+1, ..., a+size].
Added more nullaray unit tests.
|
|
|
|
|
|
| |
Add an internal pseudo expression allowing to optimize operators like +=, *= using
the copyCoeff stuff.
This allows to easily enforce aligned load for the destination matrix everywhere.
|
| |
|
|
|
|
| |
it never made very precise sense. but now does it still make any?
|
| |
|
|
|
|
| |
complex to be inlined)
|
| |
|
|
|
|
|
| |
(in the packet version of sin, cos, exp, lop), so let's pass them by
value. Also, improve the perf of ei_plog by reducing dependencies.
|
|
|
|
|
|
|
|
| |
Pommier. They are for float only, and they return exactly the same
result as the standard versions in about 90% of the cases. Otherwise the max error
is below 1e-7. However, for very large values (>1e3) the accuracy of sin and cos
slighlty decrease. They are about 3 or 4 times faster than 4 calls to their respective
standard versions. So, is it ok to enable them by default in their respective functors ?
|
|
|
|
| |
broken)
|
| |
|
|
|
|
| |
* add vectorization for minCoeff and maxCoeff
|
|
|
|
| |
* apply Ricard Marxer's prod() patch with fixes for the vectorized path
|
|
|
|
| |
simplify the index based functions
|
| |
|
| |
|