MOVNTDQ
Usage: MOVNTDQ dest,src Modifies flags: None
Moves the double quadword in the 'src' to the 'dest' using a non-temporal hint to prevent caching of the data during the write to memory.
Move Double Quadword Non Temporal
MOVNTDQ m128,xmm ; 66 0F E7 /r [WILLAMETTE,SSE2]
MOVNTDQ moves the double quadword from the XMM source register to the destination memory location, using a non-temporal hint. This store instruction minimizes cache pollution.
The 'src' operand is an XMM register, which is assumed to contain integer data (packed bytes, words, doublewords,or quadwords). The 'dest' operand is a 128-bit memory location.
EXAMPLE:
movntdq Label xmm2
MOVMSKPS
Usage: MOVMSKPS dest,src Modifies flags: None
Extracts the sign bits from the packed single-precision floating-point values in the 'src' formats them into a 4-bit mask, and stores the mask in the 'dest'.
Extract Packed Single-Precision FP Sign Mask
MOVMSKPS reg32,xmm ; 0F 50 /r [KATMAI,SSE]
MOVMSKPS inserts a 4-bit mask in r32, formed of the most significant bits of each single-precision FP number of the source operand.
The 'src' is an XMM register, and the 'dest' operand is a general-purpose register. The mask is stored in the 4 low-order bits of the destination operand.
EXAMPLE:
movmskps eax xmm2
MOVMSKPD
Usage: MOVMSKPD dest,src Modifies flags: None
Extracts the sign bits from the packed double-precision floating-point values in the 'src' formats them into a 2-bit mask, and stores the mask in the 'dest'.
Extract Packed Double-Precision FP Sign Mask
MOVMSKPD reg32,xmm ; 66 0F 50 /r [WILLAMETTE,SSE2]
MOVMSKPD inserts a 2-bit mask in r32, formed of the most significant bits of each double-precision FP number of the source operand.
The 'src' operand is an XMM register, and the 'dest' operand is a general-purpose register. The mask is stored in the 2 low-order bits of the 'dest' operand.
EXAMPLE:
movmskpd eax xmm2
MOVLPS
Usage: MOVLPS dest,src Modifies flags: None
Moves two packed single-precision floating-point values from the 'src' and the 'dest' operand.
Move Low Packed Single-Precision FP
MOVLPS xmm,m64 ; OF 12 /r [KATMAI,SSE]
MOVLPS m64,xmm ; OF 13 /r [KATMAI,SSE]
MOVLPS moves two packed single-precision FP values between the source and destination operands. One of the operands is a 64-bit memory location, the other is the low quadword of an XMM register.
The operation of this instruction is:
mem(0-63) := xmm(0-63);
or
xmm(0-63) := mem(0-63);
xmm(64-127) remains unchanged.
The 'src' and 'dest' operands can be an XMM register or a 64-bit memory location. This instruction allows two single-precision floating-point values to be moved to and from the low quadword of an XMM register and memory. It cannot be used for register to register or memory to memory moves. When the 'dest' operand is an XMM register, the high quadword of the register remains unchanged.
EXAMPLE:
movlps xmm1 Label
MOVLPD
Usage: MOVLPD dest,src Modifies flags: None
Moves a double-precision floating-point value from the source operand to the 'dest'.
Move Low Packed Double-Precision FP
MOVLPD xmm,m64 ; 66 OF 12 /r [WILLAMETTE,SSE2]
MOVLPD m64,xmm ; 66 OF 13 /r [WILLAMETTE,SSE2]
MOVLPD moves a double-precision FP value between the source and destination operands. One of the operands is a 64-bit memory location, the other is the low quadword of an XMM register.
The operation of this instruction is:
mem(0-63) := xmm(0-63);
or
xmm(0-63) := mem(0-63);
xmm(64-127) remains unchanged.
The 'src' and 'dest' operands can be an XMM register or a 64-bit memory location. This instruction allows a double-precision floating-point value to be moved to and from the low quadword of an XMM register and memory. It cannot be used for register to register or memory to memory moves. When the 'dest' operand is an XMM register, the high quadword of the register remains unchanged.
EXAMPLE:
movlpd xmm1 Label
MOVLHPS
Usage: MOVLHPS dest,src Modifies flags: None
Moves two packed single-precision floating-point values from the low quadword of the 'src' to the high quadword of the 'dest'. The low quadword of the destination operand is left unchanged.
Move Packed Single-Precision FP Low to High
MOVLHPS xmm1,xmm2 ; OF 16 /r [KATMAI,SSE]
MOVLHPS moves the two packed single-precision FP values from the low quadword of the source register xmm2 to the high quadword of the destination register, xmm2. The low quadword of xmm1 is left unchanged.
The operation of this instruction is:
dst[0-63] remains unchanged;
dst[64-127] := src[0-63].
EXAMPLE:
movlhps xmm1 xmm2
MOVHPS
Usage: MOVHPS dest,src Modifies flags: None
Moves two packed single-precision floating-point values from the 'src' to the 'dest' operand.
Move High Packed Single-Precision FP
MOVHPS xmm,m64 ; 0F 16 /r [KATMAI,SSE]
MOVHPS m64,xmm ; 0F 17 /r [KATMAI,SSE]
MOVHPS moves two packed single-precision FP values between the source and destination operands. One of the operands is a 64-bit memory location, the other is the high quadword of an XMM register.
The operation of this instruction is:
mem[0-63] := xmm[64-127];
or
xmm[0-63] remains unchanged;
xmm[64-127] := mem[0-63].
The src' and 'dest' operands can be an XMM register or a 64-bit memory location. This instruction allows two single-precision floating-point values to be moved to and from the high quadword of an XMM register and memory. It cannot be used for register to register or memory to memory moves. When the 'dest' operand is an XMM register, the low quadword of the register remains unchanged.
EXAMPLE:
movhps xmm1 Label
MOVHPD
Usage: MOVHPD dest,src Modifies flags: None
Moves a double-precision floating-point value from the 'src' (second operand) to the 'dest' (first operand). The 'src' and 'dest' operands can be an XMM register or a 64-bit memory location.
Move High Packed Double-Precision FP
MOVHPD xmm,m64 ; 66 OF 16 /r [WILLAMETTE,SSE2]
MOVHPD m64,xmm ; 66 OF 17 /r [WILLAMETTE,SSE2]
MOVHPD moves a double-precision FP value between the source and destination operands. One of the operands is a 64-bit memory location, the other is the high quadword of an XMM register.
The operation of this instruction is:
mem[0-63] := xmm[64-127];
or
xmm[0-63] remains unchanged;
xmm[64-127] := mem[0-63].
This instruction allows a double-precision floating-point value to be moved to and from the low quadword of an XMM register and memory. It cannot be used for register to register or memory to memory moves. When the 'dest' operand is an XMM register, the high quadword of the register remains unchanged.
EXAMPLE:
movhpd xmm1 Label
MOVHLPS
Usage: MOVHLPS dest,src Modifies flags: None
Moves two packed single-precision floating-point values from the low quadword of the 'src' to the high quadword of the 'dest'. The low quadword of the 'dest' operand is left unchanged.
Move Packed Single-Precision FP High to Low
MOVHLPS xmm1,xmm2 ; OF 12 /r [KATMAI,SSE]
MOVHLPS moves the two packed single-precision FP values from the high quadword of the source register xmm2 to the low quadword of the destination register, xmm2. The upper quadword of xmm1 is left unchanged.
The operation of this instruction is:
dst[0-63] := src[64-127],
dst[64-127] remains unchanged.
EXAMPLE:
movhlps xmm1 xmm2
MOVDQU
Usage: MOVDQU dest,src Modifies flags: None
Moves a double quadword from the 'src' to the 'dest' operand. This instruction can be used to load an XMM register from a 128-bit memory location, to store the contents of an XMM register into a 128-bit memory location, or to move data between two XMM registers.
Move Unaligned Double Quadword
MOVDQU xmm1,xmm2/m128 ; F3 OF 6F /r [WILLAMETTE,SSE2]
MOVDQU xmm1/m128,xmm2 ; F3 OF 7F /r [WILLAMETTE,SSE2]
MOVDQU moves a double quadword from the source operand to the destination operand. When the source or destination operand is a memory location, the memory may be unaligned.
When the 'src' or 'dest' is a memory operand, it may be unaligned on a 16-byte boundary without causing a general-protection exception (#GP) to be generated.
To move a double quadword to or from known aligned memory locations, use the MOVDQA instruction.
EXAMPLE:
movdqu Label xmm1