| Commit message (Collapse) | Author | Age |
| |
|
|\
| |
| |
| | |
Add support for inverse hyperbolic functions. Fix cost of division.
|
| | |
|
| |\
| |/
|/| |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
of sin/cos and call it instead of falling back to std::sin/std::cos.
This makes both the small and huge argument cases faster because:
- for small inputs this removes the last pselect
- for large inputs only the reduction part follows a scalar path,
the rest use the same SIMD path as the small-argument case.
|
| |\ |
|
| | |
| | |
| | |
| | | |
Fix cost of division.
|
| | | |
|
| |/
|/|
| |
| | |
when available. This also fix a compilation issue with gcc-4.7.
|
|/ |
|
| |
|
|\ |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The reinterpret_casts used in ptranspose(PacketBlock<Packet8cf,4>&)
ptranspose(PacketBlock<Packet8cf,8>&) don't appear to be working
correctly. They're used to convert the kernel parameters to
PacketBlock<Packet8d,T>& so that the complex number versions of
ptranspose can be written using the existing double implementations.
Unfortunately, they don't seem to work and are responsible for 9 unit
test failures in the AVX512 build of tensorflow master. This commit
fixes the issue by manually initialising PacketBlock<Packet8d,T>
variables with the contents of the kernel parameter before calling
the double version of ptranspose, and then copying the resulting
values back into the kernel parameter before returning.
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* Add packet up "pones". Write pnot(a) as pxor(pones(a), a).
* Collapsed revision
* Simplify a bit.
* Undo useless diffs.
* Fix typo.
|
| | | | |
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Collapsed revision
* Add packet up "pones". Write pnot(a) as pxor(pones(a), a).
* Collapsed revision
* Simplify a bit.
* Undo useless diffs.
* Fix typo.
|
| | | |
|
| | | |
|
|/ / |
|
|\| |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
This new version achieve same speed for SSE/AVX, and is slightly faster with FMA. Guarantees are as follows:
- no FMA: 1ULP up to 3pi, 2ULP up to sin(25966) and cos(18838), fallback to std::sin/cos for larger inputs
- FMA: 1ULP up to sin(117435.992) and cos(71476.0625), fallback to std::sin/cos for larger inputs
|
|/ |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit c53eececb0415834b961cb61cd466907261b4b2f
introduced AVX512 support for complex numbers but required
avx512dq to build. Commit 1d683ae2f5a340a6e2681c8cd0782f4db6b807ea
fixed some but not, it would seem all,
of the hard avx512dq dependencies. Build failures are still evident on
Eigen and TensorFlow when compiling with just avx512f and no avx512dq
using gcc 7.3. Looking at the code there does indeed seem to be a problem.
Commit c53eececb0415834b961cb61cd466907261b4b2f
calls avx512dq intrinsics directly, e.g, _mm512_extractf32x8_ps
and _mm512_and_ps. This commit fixes the issue by replacing the direct
intrinsic calls with the various wrapper functions that are safe to use on
avx512f only builds.
|
| |
|
| |
|
| |
|
|
|
|
| |
handle INF input.
|
|
|
|
| |
sin/cos on large entries is quite useless because it's inaccurate)
|
| |
|
|
|
|
| |
See https://stackoverflow.com/questions/7411515/
|
|
|
|
|
|
|
| |
changeset 101ea26f5e18919972b321b5f7e3ef4e07be3fd6
.
This solves a performance regression with clang and 3x3 matrix products.
|
|
|
|
|
|
| |
kernels.
With a 6pX4 kernel (not committed yet), this provides a +20% speedup.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
x86/64 target
|
|
|
|
| |
register spilling.
|