On Sun, Feb 8, 2015 at 6:42 PM, erik quanstrom <quanstro@quanstro.net> wrote:
> On Sun, Feb 8, 2015 at 6:27 PM, erik quanstrom <quanstro@quanstro.net>
> wrote:
> > am i reading the intel docs wrong, or is 6l missing a valid instruction?
> > memmove5: doasm: notfound from=12 to=92 (47)    CMOVQNE DX,(DI)> >
> Go's liblink (which is derived from [5869]l) and cmd/6a support this
> instruction.
does it support it with exactly that register combination?
No. I just realized you want conditional move from DX to (DI).

It's an illegal combination. The intel document only lists three forms for CMOVNE:
CMOVNE r16, r/m16 // CMOVWNE
CMOVNE r32, r/m32 // CMOVLNE
CMOVNE r64, r/m64 // CMOVQNE

All of them are conditionally moving from reg/mem to a register.
(Also note the description "These instructions can move 16-bit, 32-bit or 64-bit values
from memory to a general-purpose register or from one general-purpose register to another.")