beautypg.com

Intel 253666-024US User Manual

Page 726

background image

3-680 Vol. 2A

MOVSLDUP—Move Packed Single-FP Low and Duplicate

INSTRUCTION SET REFERENCE, A-M

Operation

IF (Source == m128)

THEN

(* Load instruction *)

xmm1[31:0] = m128[31:0];
xmm1[63:32] = m128[31:0];
xmm1[95:64] = m128[95:64];
xmm1[127:96] = m128[95::64];

ELSE

(* Move instruction *)

xmm1[31:0] = xmm2[31:0];
xmm1[63:32] = xmm2[31:0];
xmm1[95:64] = xmm2[95:64];
xmm1[127:96] = xmm2[95:64];

FI;

Intel C/C++ Compiler Intrinsic Equivalent

MOVSLDUP

__m128 _mm_moveldup_ps(__m128 a)

Exceptions

General protection exception if not aligned on 16-byte boundary, regardless of
segment.

Numeric Exceptions

None.

Protected Mode Exceptions

#GP(0)

For an illegal memory operand effective address in the CS, DS,

ES, FS or GS segments.

If memory operand is not aligned on a 16-byte boundary,

regardless of segment.

#SS(0)

For an illegal address in the SS segment.

#PF(fault-code)

For a page fault.

#NM

If CR0.TS[bit 3] = 1.

#UD

If CR0.EM[bit 2] = 1.
If CR4.OSFXSR[bit 9] = 0.
If CPUID.01H:ECX.SSE3[bit 0] = 0.
If the LOCK prefix is used.