وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

MOVSHDUP

MOVSHDUP 

Usage: MOVSHDUP  dest,src                                    Modifies flags: None

Move two single-precision floating-point values from the higher 32-bit operand of each qword in 'src' to 'dest' and duplicate each 32-bit operand to the lower 32-bits of each qword.

Move Packed Single-FP High and Duplicate 


MOVSHDUP xmm1 ,xmm2/mem128           ; F3 0F 16 /r         [Pent4]


The linear address corresponds to the address of the least-significant byte of the referenced memory data. When a memory address is indicated, the 16 bytes of data at memory location mem128 are loaded and the single-precision elements in positions 1 and 3 are duplicated. When the register-register form of this operation is used, the same operation is performed but with data coming from the 128-bit source register. 


If source = mem128 load instruction: 

xmm1[31-0]     = mem128[63-32]; 

xmm1[63-32]   = mem128[63-32] 

xmm1[95-64]   = mem128[127-96]; 

xmm1[127-96] = mem128[127-96]

                    Or

Move instruction:

xmm1[31-0]     = xmm2[63-32];

xmm1[63-32]   = xmm2[63-32]; 

xmm1[95-64]   = xmm2[127-96];

xmm1[127-96] = xmm2[127-96]


EXAMPLE:

movshdup xmm2 Label