mulsd - multiply scalar double (64 bit floating point)

dest = dest * source

The mulsd instruction multiplies the source value (second operand) to the destination (an XMM register). The source can be an XMM register or a 64 bit memory location. There is also vmulsd on CPUs with AVX instructions which allows using 3 XMM registers or 2 XMM registers and a memory location which can simplify coding.

        mulsd   xmm0, xmm1          ; multiply xmm0 by xmm1
                                    ; leave the rest of xmm0 as is
        mulsd   xmm0, [x]           ; multiply xmm0 by 64 bit variable x
                                    ; leave the rest of xmm0 as is
        mulsd   xmm0, [x+8*rcx]     ; multiply xmm0 by element of array x
                                    ; rcx holds the index of the element
                                    ; leave the rest of xmm0 as is
        mulsd   xmm0, [rdx]         ; multiply xmm0 by [rdx]
                                    ; rdx holds be address of a 64 bit value
                                    ; leave the rest of xmm0 as is
        vmulsd  xmm3, xmm0, xmm15   ; xmm3 = xmm0 * xmm15
                                    ; leave the rest of xmm3 as is

            ; Note: operates by copying 128 bits from xmm0 to xmm3
            ; before multiplying.  This might occasionally be useful.
            ; The rest of ymm0 is left as is
            ; using mulss would change either xmm0 or xmm15
            ; possibly requiring an additional instruction

        vmulsd  xmm3, xmm0, [x]     ; xmm3 = xmm0 * x
                                    ; leave the rest of xmm3 as is

flags: none