FMA x86 ist eine Befehlssatzerweiterung für Mikroprozessoren von Intel und AMD zur Unterstützung der Fused-Multiply-Add-Technik (FMA). Von AMD erfolgte hierzu erstmals eine Umsetzung in den „Bulldozer“-CPUs. Intel setzte dies erst in den Haswell-Prozessoren ein.

Es gibt zwei nicht miteinander kompatible Ausführungen, FMA4 und FMA3:

Neue Eigenschaften

FMA erweitert die Möglichkeiten zu Vektoroperationen und kann als Erweiterung der AVX-Befehle gesehen werden.

Neue Instruktionen

CPUs mit FMA4

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

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