fnmsub-oder fnms-Anweisung (Floating Negative Multiply-Subtract)
Zweck
Multipliziert zwei Gleitkommaoperanden, subtrahiert einen Gleitkommaoperanden vom Ergebnis und platziert das negative Ergebnis in einem Gleitkommaregister.
Syntax
| Bit | Wert |
|---|---|
| 0-5 | 63 |
| 6 bis 10 | FRT |
| 11-15 | FRA |
| 16-20 | FRB |
| 21-25 | FRC |
| 26-30 | 30 |
| 31 | RC |
| Bit | Wert |
|---|---|
| 0-5 | 59 |
| 6 bis 10 | FRT |
| 11-15 | FRA |
| 16-20 | FRB |
| 21-25 | FRC |
| 26-30 | |
| 30 | RC |
Beschreibung
Die Anweisungen Fnms und Fnmsub multiplizieren den 64-Bit-Gleitkommaoperanden mit doppelter Genauigkeit im Gleitkommaregister (FPR) FRA mit dem 64-Bit-Gleitkommaoperanden mit doppelter Genauigkeit in FPR FRC, subtrahieren den 64-Bit-Gleitkommaoperanden mit doppelter Genauigkeit in FPR FRB vom Ergebnis der Multiplikation und platzieren das negierte Ergebnis im Ziel-FPR FRT.
Die Anweisung fnmsubs multipliziert den 32-Bit-Gleitkommaoperanden mit einfacher Genauigkeit in FPR FRA mit dem 32-Bit-Gleitkommaoperanden mit einfacher Genauigkeit in FPR FRC, subtrahiert den 32-Bit-Gleitkommaoperanden mit einfacher Genauigkeit in FPR FRB vom Ergebnis der Multiplikation und platziert das negierte Ergebnis im Ziel-FPR FRT.
Das Subtraktionsergebnis wird unter Steuerung des Gleitkomma-Rundungssteuerfelds RN des Gleitkomma-Status-und Steuerregisters gerundet.
Anmerkung: Wenn ein Operand eine denormalisierte Zahl ist, wird er vor Beginn der Operation prenormalisiert.
Die Anweisungen Fnms und Fnmsub sind identisch mit den Anweisungen Fmsub und FMS (Floating Multiply-Subtract Single) mit dem endgültigen Ergebnis negiert, aber mit den folgenden Ausnahmen:
- Ruhende NaNs (QNaNs) werden ohne Auswirkung auf ihr Vorzeichenbit weitergegeben.
- QNaNs , die als Ergebnis einer inaktivierten Ausnahmebedingung wegen ungültiger Operation generiert wurden, haben ein "Vorzeichen" von null.
- Die Signalisierung von NaNs (SNaNs), die als Ergebnis einer inaktivierten Ausnahme des Typs 'Ungültige Operation' in QNaNs konvertiert werden, hat keine Auswirkung auf das Vorzeichenbit.
Das Gleitkomma-Ergebnis-Markierungsfeld des Gleitkomma-Status-und Steuerregisters wird auf die Klasse und das Vorzeichen des Ergebnisses gesetzt, mit Ausnahme von Ausnahmebedingungen für ungültige Operationen, wenn das Gleitkomma-Ausnahmebedingung für ungültige Operationen 1 ist.
Die Anweisungen Fnmsub, fnmsubsund Fnms haben jeweils zwei Syntaxformate. Jede Syntaxform hat unterschiedliche Auswirkungen auf Bedingungsregisterfeld 1.
| Element | Beschreibung | ||
|---|---|---|---|
| Syntax Formular | Gleitkommastatus und Steuerregister | Schriftstück Bit (Rc) | Bedingung Feld 1 registrieren |
| Fnmsub | C, FL, FG, FE, FU, FR, FI, OX, UX, XX, VXSNAN, VXISI, VXIMZ | 0 | Keine |
| fnmsub | C, FL, FG, FE, FU, FR, FI, OX, UX, XX, VXSNAN, VXISI, VXIMZ | 1 | FX, FEX, VX, OX |
| fnmsubs | C, FL, FG, FE, FU, FR, FI, OX, UX, XX, VXSNAN, VXISI, VXIMZ | 0 | Keine |
| fnmsubs | C, FL, FG, FE, FU, FR, FI, OX, UX, XX, VXSNAN, VXISI, VXIMZ | 1 | FX, FEX, VX, OX |
| Fnms | C, FL, FG, FE, FU, FR, FI, OX, UX, XX, VXSNAN, VXISI, VXIMZ | 0 | Keine |
| fnms. | C, FL, FG, FE, FU, FR, FI, OX, UX, XX, VXSNAN, VXISI, VXIMZ | 1 | FX, FEX, VX, OX |
Alle Syntaxformen der Anweisungen Fnmsub, fnmsubsund Fnms wirken sich immer auf den Gleitkommastatus und das Steuerregister aus. Wenn das Syntaxformat das Satzbit (Rc) auf 1 setzt, wirkt sich die Anweisung auf die Gleitkommaausnahmebedingung (FX), die FEX (Floating-Point Enabled Exception), die VX (Floating-Point Invalid Operation Exception) und die OX-Bit (Floating-Point Overflow Exception) im Bedingungsregisterfeld 1 aus.
Anmerkung: Gerundet wird, bevor das Ergebnis der Addition negiert wird. Je nach RNkann ein ungenauer Wert auftreten.
Parameter
| Element | Beschreibung |
|---|---|
| FRT | Gibt das Zielgleitkommaregister für die Operation an |
| FRA | Gibt das erste Quellengleitkommaregister für die Operation an |
| FRB | Gibt das zweite Quellengleitkommaregister für die Operation an. |
| FRC | Gibt das dritte Quellengleitkommaregister für die Operation an. |
Beispiele
- Der folgende Code multipliziert den Inhalt von FPR 4 und FPR 5, subtrahiert den Inhalt von FPR 7 vom Ergebnis, speichert das negierte Ergebnis in FPR 6 und legt das Gleitkomma-Status-und Steuerregister sowie das Bedingungsregisterfeld 1 fest, um das Ergebnis der Operation widerzuspiegeln.
# Assume FPR 4 contains 0xC053 4000 0000 0000. # Assume FPR 5 contains 0x400C 0000 0000 0000. # Assume FPR 7 contains 0x3DE2 6AB4 B33c 110A. # Assume FPSCR = 0. fnmsub 6,4,5,7 # FPR 6 now contains 0x4070 D800 0000 0935. # FPSCR now contains 0x8202 4000. - Der folgende Code multipliziert den Inhalt von FPR 4 und FPR 5, subtrahiert den Inhalt von FPR 7 vom Ergebnis, speichert das negierte Ergebnis in FPR 6 und legt das Gleitkomma-Status-und Steuerregister sowie das Bedingungsregisterfeld 1 fest, um das Ergebnis der Operation widerzuspiegeln.
# Assume FPR 4 contains 0xC053 4000 0000 0000. # Assume FPR 5 contains 0x400C 0000 0000 0000. # Assume FPR 7 contains 0x3DE2 6AB4 B33c 110A. # Assume FPSCR = 0 and CR = 0. fnmsub. 6,4,5,7 # FPR 6 now contains 0x4070 D800 0000 0935. # FPSCR now contains 0x8202 4000. # CR now contains 0x0800 0000.