[Issue 8047] important opcodes missing from core/simd.d
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Tue Nov 22 00:36:34 PST 2016
https://issues.dlang.org/show_bug.cgi?id=8047
Marco Leise <Marco.Leise at gmx.de> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|WORKSFORME |---
--- Comment #6 from Marco Leise <Marco.Leise at gmx.de> ---
(In reply to Walter Bright from comment #5)
> These have been in core.simd for a while.
While that is true for the original bug description, the hard issue is not
missing enum values themselves, but a lack of support for them, namely
returning something else than SIMD vectors as I outlined in comment #1 and #4
above. The XMM enum is still rather messy if you look at it from some distance:
There are some non-SSE opcodes in it as noted in their comment (i.e. POPCNT and
LZCNT have nothing to do with SSE). They should be handled in core.bitop
instead, IMHO.
Some non-working opcodes are rightfully commented out until this bug is
resolved (i.e. PMOVMSKB).
Other non-working opcodes are NOT commented out (i.e. MOVMSKPD from the
original description, see comment #4 for a list).
AMD's SSE4a seems to have an undecided fate with its opcodes commented out in
entirety. This may be consider a separate bug, but then again, whoever works on
this bug will probably look at them as well.
The ddoc for XMM still says: "XMM opcodes that conform to the following: opcode
xmm1,xmm2/mem and do not have side effects (i.e. do not write to memory)." This
description doesn't apply to e.g. CRC32 or PREFETCH.
DMD + core.simd still need some work to move SIMD support out of
proof-of-concept phase. Admittedly I didn't run any tests since 2015, so if any
of the above is in good shape now, shame on me. :)
--
More information about the Digitalmars-d-bugs
mailing list