dest = source
The movq instruction moves the source value (second operand) to the destination. The purpose of this instruction is to move a data between memory, general purpose registers and floating point registers. Thus the destination must be one of those categories and the source must be a different category with one exception: movq can be used to move a value from one floating point register to another. The 64 bits are moved without conversion.
movq rax, xmm0 ; move xmm0 to rax movq [x], xmm0 ; move xmm0 to 64 bit variable x movq xmm0, [y] ; move 64 bit variable y to xmm0 ; places 0 in second half of xmm0 movq xmm2, xmm1 ; move xmm1 to xmm2 ; places 0 in second half of xmm2 movq [x], rax ; move rax to 64 bit variable x