[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