_mm_msub_ss
Visual Studio 2010 SP1 wird benötigt.
Microsoft-spezifisch
Generiert die FMA4 XMM-Anweisung vfmsubss, um eine einfach gerundete Multiplikation-Subtraktion mit einem Gleitkommawert für die niederwertigen Gleitkommawerte der Quellen auszuführen.
__m128 _mm_msub_ss (
__m128 src1,
__m128 src2,
__m128 src3
);
Parameter
[in] src1
Ein 128-Bit-Parameter, der einen 32-Bit-Gleitkommawert im unteren Doppelwort enthält.[in] src2
Ein 128-Bit-Parameter, der einen 32-Bit-Gleitkommawert im unteren Doppelwort enthält.[in] src3
Ein 128-Bit-Parameter, der einen 32-Bit-Gleitkommawert im unteren Doppelwort enthält.
Rückgabewert
Ein 128-Bit-Ergebnis r, das vier 32-Bit-Gleitkommawerte enthält.
r[0] := src1[0] * src2[0] - src3[0];
r[1] := r[2] = r[3] = 0.;
Anforderungen
Intrinsisch |
Architektur |
---|---|
_mm_msub_ss |
FMA4 |
Headerdatei <intrin.h>
Hinweise
Der nierderwertige Gleitkommawert mit einfacher Genauigkeit in src1 wird mit dem entsprechenden Wert in src2 multipliziert, der entsprechende Wert in src3 wird vom Produkt subtrahiert, und das Ergebnis wird im entsprechenden Wert im Ziel gespeichert. Die anderen Werte in src1, src2 und src3 werden ignoriert, und die drei höherwertigen Gleitkommawerte des Ergebnisses werden auf 0 (null) festgelegt.
Die Multiplikation-Subtraktion wird mit einer einzelnen abschließenden Rundung ausgeführt, als ob die Zwischenergebnisse mit unendlicher Genauigkeit berechnet wurden.
Die vfmsubss-Anweisung ist Teil der FMA4-Anweisungsfamilie. Bevor Sie diese systeminterne Funktion verwenden, müssen Sie sicherstellen, dass der Prozessor diese Anweisung unterstützt. Um die Hardwareunterstützung für diese Anweisung zu bestimmen, rufen Sie die systeminterne Funktion __cpuid mit InfoType = 0x80000001 auf, und prüfen Sie Bit 16 von CPUInfo[2] (ECX). Dieses Bit ist 1, wenn die Anweisung unterstützt wird, und andernfalls 0.
Beispiel
#include <stdio.h>
#include <intrin.h>
int main()
{
__m128 a, b, c, d;
int i;
for (i = 0; i < 4; i++) {
a.m128_f32[i] = i;
b.m128_f32[i] = 2.;
c.m128_f32[i] = 3.;
}
d = _mm_msub_ss(a, b, c);
for (i = 0; i < 4; i++) printf_s(" %.3f", d.m128_f32[i]);
printf_s("\n");
}
Siehe auch
Referenz
Weitere Ressourcen
In Visual Studio 2010 SP1 hinzugefügte systeminterne FMA4-Funktionen
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
März 2011 |
Diesen Inhalt hinzugefügt. |
SP1-Funktionsänderung. |