As part of the SSE specification, 8 new registers were defined: XMM0-XMM7. Each of these registers can hold 128 bits of information. That typically means 4 32-bit floating point or integer operands.
Here is a table of the instructions:
| Mnemonic | Opcode | Short Description | Description |
|---|---|---|---|
| Arithmetic Instructions | |||
| addps xmm1, xmm2/mem128 | 0x0F 0x58 | Add Packed Single-Precision Floating-Point | Treats the xmm1 and xmm2/mem128 as 4-packed single precision floating point numbers, adds them and writes the result back into xmm1 |
| addss xmm1, xmm2/mem32 | 0xF3 0x0F 0x58 | Add Scalar Single-Precision Floating-Point | Adds the lower 32 bits of xmm1 to the lower 32 bits of xmm2 (or the value of the memory location) according to 32-bit single precision floating point rules and puts the result into the lower 32-bits of xmm1 |
| subps xmm1, xmm2/mem128 | 0x0F 0x5C | Subtract Packed Single-Precision Floating-Point | Treats the xmm1 and xmm2/mem128 as 4-packed single precision floating point numbers, subtracts xmm2/mem128 from xmm1 and writes the result back into xmm1 |
| subss xmm1, xmm2/mem32 | 0xF3 0x0F 0x5C | Subtract Scalar Single-Precision Floating-Point | Subtracts the lower 32 bits of xmm2 (or the value of the memory location) from the lower 32 bits of xmm1 according to 32-bit single precision floating point rules and puts the result into the lower 32-bits of xmm1 |