hengck23
asked on
What is the defference between movd and movss?
Dear all,
movd is to move 32-bit interger to xmm register.
movss is to to 32-bit floating float instead.
however, would:
movd xmm0, DWORD PTR[eax]
movss xmm0, DWORD PTR[eax]
be the same? Or this there a difference in speed?
Thank you.
movd is to move 32-bit interger to xmm register.
movss is to to 32-bit floating float instead.
however, would:
movd xmm0, DWORD PTR[eax]
movss xmm0, DWORD PTR[eax]
be the same? Or this there a difference in speed?
Thank you.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
no- movd moves 64 bit data not 32 bit
movss is not there in 80x86 instruction set. movs is there but it's used for moving string. i thought, i'm correct?
byte (MOVB 8 bits),
word (MOVW 16 bits),
longword (MOVL 32 bits),
quadword (MOVQ 64 bits),
octaword (MOVQ 128 bits),
single precision floating (MOVF 32 bits),
double precision floating (MOVD 64 bits),
G floating (MOVG 64 bits), or
H floating (MOVH 128 bits)
movss is not there in 80x86 instruction set. movs is there but it's used for moving string. i thought, i'm correct?
byte (MOVB 8 bits),
word (MOVW 16 bits),
longword (MOVL 32 bits),
quadword (MOVQ 64 bits),
octaword (MOVQ 128 bits),
single precision floating (MOVF 32 bits),
double precision floating (MOVD 64 bits),
G floating (MOVG 64 bits), or
H floating (MOVH 128 bits)
No comment has been added to this question in more than 21 days, so it is now classified as abandoned.
I will leave the following recommendation for this question in the Cleanup topic area:
Accept: dimitry {http:#12547124}
Any objections should be posted here in the next 4 days. After that time, the question will be closed.
mbizup
EE Cleanup Volunteer
I will leave the following recommendation for this question in the Cleanup topic area:
Accept: dimitry {http:#12547124}
Any objections should be posted here in the next 4 days. After that time, the question will be closed.
mbizup
EE Cleanup Volunteer
MOVD instruction when destination operand is XMM register:
DEST[31-0] ←SRC;
DEST[127-32] ←0000000000000000000
MOVSS instruction when source operand is memory location and destination operand is XMM register:
DEST[31-0] ←SRC;
DEST[127-32] ←0000000000000000000
However they have different C/C++ Intel Compiler Intrinsics...
Despite I think there is no speed difference, I would suggest to use movss as special SSE command.