Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Angaben ohne ausreichenden Beleg könnten demnächst entfernt werden. Bitte hilf Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst.
Zen-Prozessoren (Q1/2017) haben zwar eine funktionierende Implementierung von FMA4, allerdings wird in der CPUID nicht angezeigt, dass die Instruktion zur Verfügung steht. Die Implementierung vom FMA4 bei Zen ist demnach inoffiziell und ab der Zen2-Mikroarchitektur (Q3/2019) schließlich nicht mehr vorhanden
Mnemonic
Operanden
Operation
VFMADDPDx
xmm, xmm, xmm/m128, xmm/m128
a = b∙c + d
VFMADDPDy
ymm, ymm, ymm/m256, ymm/m256
VFMADDPSx
xmm, xmm, xmm/m128, xmm/m128
VFMADDPSy
ymm, ymm, ymm/m256, ymm/m256
VFMADDSD
xmm, xmm, xmm/m64, xmm/m64
VFMADDSS
xmm, xmm, xmm/m32, xmm/m32
CPUs mit FMA3
Intel
Alle Intel-Core-i-Prozessoren ab der Haswell-Mikroarchitektur (4. Generation Core i-Prozessoren)
AMD
Piledriver-basierte Prozessoren (2. Generation FX CPUs, Trinity und Richland APUs), Q2/2012
Alle Ryzen- und Epyc-Prozessoren (ab der 1. Zen-Microarchitektur) Q1/2017
Mnemonic
Operanden
Operation
VFMADD132PDy
ymm, ymm, ymm/m256
a = a∙c + b
VFMADD132PSy
VFMADD132PDx
xmm, xmm, xmm/m128
VFMADD132PSx
VFMADD132SD
xmm, xmm, xmm/m64
VFMADD132SS
xmm, xmm, xmm/m32
VFMADD213PDy
ymm, ymm, ymm/m256
a = b∙a + c
VFMADD213PSy
VFMADD213PDx
xmm, xmm, xmm/m128
VFMADD213PSx
VFMADD213SD
xmm, xmm, xmm/m64
VFMADD213SS
xmm, xmm, xmm/m32
VFMADD231PDy
ymm, ymm, ymm/m256
a = b∙c + a
VFMADD231PSy
VFMADD231PDx
xmm, xmm, xmm/m128
VFMADD231PSx
VFMADD231SD
xmm, xmm, xmm/m64
VFMADD231SS
xmm, xmm, xmm/m32
Anwendung
Nützlich für gleitkommaintensive Berechnung, vor allem im Multimedia-, wissenschaftlichen oder Finanzberechnungen. Ganzzahloperationen sollen später folgen.
Erhöht Parallelität und Durchsatz von Gleitkomma-SIMD-Berechnungen
Verringert die Registerlast durch nicht destruktive Vier-Operanden-Form (im Fall von FMA4)
Erhöht die Präzision gegenüber der Realisierung als zwei verkettete Multiplikations- und Additionsvorgänge. So kann es dazu kommen, dass wenn der Compiler automatisch eine Verkettung von Multiplikation und Addition durch eine FMA-Operation realisiert, dass man ein anderes, nämlich präziseres, Rechenergebnis bekommt.