3-440 Vol. 2A HADDPS—Packed Single-FP Horizontal Add
INSTRUCTION SET REFERENCE, A-M
In 64-bit mode, use of the REX.R prefix permits this instruction to access additional
registers (XMM8-XMM15).
Operation
xmm1[31:0] = xmm1[31:0] + xmm1[63:32];
xmm1[63:32] = xmm1[95:64] + xmm1[127:96];
xmm1[95:64] = xmm2/m128[31:0] + xmm2/m128[63:32];
xmm1[127:96] = xmm2/m128[95:64] + xmm2/m128[127:96];
Intel C/C++ Compiler Intrinsic Equivalent
HADDPS __m128 _mm_hadd_ps(__m128 a, __m128 b)
Exceptions
When the source operand is a memory operand, the operand must be aligned on a
16-byte boundary or a general-protection exception (#GP) will be generated.
Numeric Exceptions
Overflow, Underflow, Invalid, Precision, Denormal.
Protected Mode Exceptions
#GP(0) For an illegal memory operand effective address in the CS, DS,
ES, FS or GS segments.
If a 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.
#XM For an unmasked Streaming SIMD Extensions numeric excep-
tion (CR4.OSXMMEXCPT[bit 10] = 1).
#UD If CR0.EM[bit 2] = 1.
For an unmasked Streaming SIMD Extensions numeric excep-
tion (CR4.OSXMMEXCPT[bit 10] = 0).
If CR4.OSFXSR[bit 9] = 0.
If CPUID.01H:ECX.SSE3[bit 0] = 0.
If the LOCK prefix is used.