With the current NASM version 2.10rc4-20110411 compiled on Apr 11 2011 I get an error assembling the command
vmovss xmm0, dword [eax]
or
vmovss dword [eax], xmm0
with the message
error: invalid combination of opcode and operands
This applies to 32 and 64 bit code.
When I omit the "dword", it compiles.
The corresponding commands
movss xmm0, dword [eax]
and
movss dword [eax], xmm0
do not face this problem.
yup, it falls into our 'cleanup' Katmai instruction templates task, i seem
to have a patch floating arournd, will take a look. Thanks for report.
For the similar commands movsd there is a similar quirk; 2 of 8 combinations fail:
vmovsd xmm0, qword [eax]
vmovsd qword [eax], xmm0
vmovsd xmm0, [eax]
vmovsd [eax], xmm0
movsd xmm0, qword [eax] <<< error
movsd qword [eax], xmm0 <<< error
movsd xmm0, [eax]
movsd [eax], xmm0
...and one must keep in mind that movsd is an overloaded command.
What about "movsd dword [edi], dword [esi]"? Is something like this allowed at all?