Vector (SSE, AVX and AVX10)
FMA4
FMA4, AMD's fused multiply-add of the Bulldozer family, takes four operands, a separate destination and three sources, where FMA overwrites one of its three.
An AMD extension: Intel processors do not have this instruction.
- CPUID
- FMA4
CPUID.80000001H:ECX[16] - Instructions
- 20 mnemonics
- Processors
- Bulldozer, Piledriver, Excavator, Steamroller (from the CPU data, which follows GCC)
- Linux flag
fma4
Instructions
| Mnemonic | Summary | Forms |
|---|---|---|
| VFMADDPD | Multiplies packed doubles and adds a third operand, rounding once, with a separate destination (four operands); FMA4. | 6 |
| VFMADDPS | Multiplies packed singles and adds a third operand, rounding once, with a separate destination (four operands); FMA4. | 6 |
| VFMADDSD | Multiplies the low doubles of two operands and adds a third, rounding once, into a separate destination; FMA4. | 3 |
| VFMADDSS | Multiplies the low singles of two operands and adds a third, rounding once, into a separate destination; FMA4. | 3 |
| VFMADDSUBPD | Multiplies packed doubles and subtracts the third operand in even and adds it in odd elements, rounding once; FMA4. | 6 |
| VFMADDSUBPS | Multiplies packed singles and subtracts the third operand in even and adds it in odd elements, rounding once; FMA4. | 6 |
| VFMSUBADDPD | Multiplies packed doubles and adds the third operand in even and subtracts it in odd elements, rounding once; FMA4. | 6 |
| VFMSUBADDPS | Multiplies packed singles and adds the third operand in even and subtracts it in odd elements, rounding once; FMA4. | 6 |
| VFMSUBPD | Multiplies packed doubles and subtracts a third operand, rounding once, into a separate destination; FMA4. | 6 |
| VFMSUBPS | Multiplies packed singles and subtracts a third operand, rounding once, into a separate destination; FMA4. | 6 |
| VFMSUBSD | Multiplies the low doubles of two operands and subtracts a third, rounding once; FMA4. | 3 |
| VFMSUBSS | Multiplies the low singles of two operands and subtracts a third, rounding once; FMA4. | 3 |
| VFNMADDPD | Negates the products of packed doubles and adds a third operand, rounding once; FMA4. | 6 |
| VFNMADDPS | Negates the products of packed singles and adds a third operand, rounding once; FMA4. | 6 |
| VFNMADDSD | Negates the product of the low doubles and adds a third operand, rounding once; FMA4. | 3 |
| VFNMADDSS | Negates the product of the low singles and adds a third operand, rounding once; FMA4. | 3 |
| VFNMSUBPD | Negates the products of packed doubles and subtracts a third operand, rounding once; FMA4. | 6 |
| VFNMSUBPS | Negates the products of packed singles and subtracts a third operand, rounding once; FMA4. | 6 |
| VFNMSUBSD | Negates the product of the low doubles and subtracts a third operand, rounding once; FMA4. | 3 |
| VFNMSUBSS | Negates the product of the low singles and subtracts a third operand, rounding once; FMA4. | 3 |
CPUID and processors
XED splits FMA4 into 1 ISA set. Software can use a form when the processor reports every CPUID bit of one alternative of the form's ISA set.
| ISA set | CPUID | Processors |
|---|---|---|
FMA4 | FMA4 | Bulldozer, Piledriver |
Sources
- Intel XED v2026.08.23 (commit
0bcb6237345c): forms, encodings, ISA sets, CPUID bits and chip model. - AMD64 Architecture Programmer's Manual, Volume 4: 128-Bit and 256-Bit Media Instructions (26568, rev. 3.25, November 2021), Wayback Machine copy of AMD's PDF
The tables are derived from Intel XED, Copyright Intel Corporation, licensed under the Apache License 2.0; x86-64.net converted and reformatted them. The text is our own.