x86 Instruction Set Reference
HADDPS
Packed Single-FP Horizontal Add
Opcode | Mnemonic | Description |
---|---|---|
F2 0F 7C /r |
HADDPS xmm1, xmm2/m128 |
Add horizontally packed SP FP numbers from xmm2/m128 to xmm1. |
Description |
---|
Adds the single-precision floating-point values in the first and second dwords of the destination operand and stores the result in the first dword of the destination operand. Adds single-precision floating-point values in the third and fourth dword of the destination operand and stores the result in the second dword of the destination operand. Adds single-precision floating-point values in the first and second dword of the source operand and stores the result in the third dword of the destination operand. Adds single-precision floating-point values in the third and fourth dword of the source operand and stores the result in the fourth dword of the destination operand. |
Operation |
---|
xmm1[0..31] = xmm1[0..31] + xmm1[32..63]; xmm1[32..63] = xmm1[64..95] + xmm1[96..127]; xmm1[64..95] = xmm2/m128[0..31] + xmm2/m128[32..63]; xmm1[96..127] = xmm2/m128[64..95] + xmm2/m128[96..127]; |
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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Real-Address Mode Exceptions | ||||||||
---|---|---|---|---|---|---|---|---|
|
Virtual-8086 Mode Exceptions | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Instruction | Latency | Throughput | Execution Unit |
---|---|---|---|
CPUID | 0F3n | 0F3n | 0F3n |
HADDPS | 13 | 4 | FP_ADD FP_MISC |