Open p0nce opened 4 years ago
Also DMD: use core.simd instead of emulation when available.
Blocked by #59
Each version of DMD bring regressions when SIMD vectors are actually used. It's a maintenance burden.
D_SIMD finally enabled in intel-intrinsics v1.9, when DMD 2.099+ is used. Let's see what happens next.
8 hours later I was asked to remove it. 4 bugs are kinda blockers for D_SIMD to happen (well, more will be found as translation progress, but also perf will augment).
4 more issues fixed by core. https://forum.dlang.org/post/t42vs6$1nk3$1@digitalmars.com
Enable core.simd and D_SIMD usage in DMD now! It seems like the best time to do it. (mmm, not really)
DMD debug builds now surprisingly useful since, they are at a 5% difference with LDC builds but build faster. Could become both faster to build and more efficient with a bit of effort on intel-intrinsics.
Another final attemps at making D_SIMD used by default. Phew.
It triggered only one regression, some Linux only bugs, and it seems like this is it? D_SIMD finally activated. (but not for AVX, only SSE)
Some critical instructions:
Besides, DMD output is wrong vs LDC on a complete plugin such as Lens.
Critical for Lens:
Are we still in the DMD test suite? latest DMD fails in GH Actions => yes we are
Enabling core.simd:
Instead of the slow replacements. But does it support float2, int2? (EDIT: no, but we can work around it)
_mm_movehl_ps
generates MOVHLPS with__simd
(and not MOVLPS)_mm_movelh_ps
generates MOVLHPS with__simd
(and not MOVHPS)