fnmadd 命令または fnma (負の浮動乗算-加算) 命令
目的
2 つの浮動小数点オペランドを乗算し、結果を 1 つの浮動小数点オペランドに加算し、結果の負の値を浮動小数点レジスターに入れます。
構文
| ビット | VALUE |
|---|---|
| 0 から 5 | 63 |
| 6~10 | FRT (R) |
| 11-15 | FRA |
| 16 から 20 | FRB |
| 21-25 | FRC |
| 26-30 | 31 |
| 31 | RC |
| ビット | 値 |
|---|---|
| 0 から 5 | 59 |
| 6~10 | FRT (R) |
| 11-15 | FRA |
| 16 から 20 | FRB |
| 21-25 | FRC |
| 26-30 | 31 |
| 31 | RC |
description
fnmadd および fnma 命令は、浮動小数点レジスター (FPR) FRA 内の 64 ビット倍精度浮動小数点オペランドに、FPR FRC内の 64,bit、倍精度浮動小数点オペランドを乗算し、FPR FRB 内の 64 ビット倍精度浮動小数点オペランドを加算します。
fnmadd 命令は、FPR FRA の 32 ビットの単精度浮動小数点オペランドに FPR FRCの 32 ビットの単精度浮動小数点オペランドを乗算し、FPR FRB の 32 ビットの単精度浮動小数点オペランドに乗算の結果を加算します。
加算の結果は、浮動小数点状況および制御レジスターの浮動小数点丸め制御フィールド RN の制御の下で丸められます。
注: オペランドが非正規化された数値の場合、そのオペランドは、操作が開始される前に非正規化されます。
fnmadd および fnma 命令は、最終結果が否定された fmadd および fma (Floating Multiply-Add Single) 命令と同じですが、以下の例外があります。
- 静止 NaNs (QNaNs) は、「符号」ビットに影響を与えずに伝搬します。
- 無効化された無効演算例外の結果として生成される QNaNs の「符号」ビットは 0 です。
- 無効演算例外の結果として QNaNs に変換されるシグナリング NaNs (SNaNs) は、「符号」ビットには影響しません。
浮動小数点状況および制御レジスターの浮動小数点結果フラグ・フィールドは、浮動小数点無効演算例外使用可能ビットが 1 の場合に、無効な演算例外を除き、結果のクラスおよび符号に設定されます。
fnmadd、 fnmadd、および fnma 命令には、それぞれ 2 つの構文形式があります。 各シンタックス・フォームは、条件レジスター・フィールド 1 に対して異なる影響を与えます。
| 項目 | 説明 | ||
|---|---|---|---|
| 構文 Form | 浮動小数点状況および 制御レジスター | レコード ビット (RC) | 条件 レジスター・フィールド 1 |
| FNMADD | C、FL、FG、FE、FU、FR、FI、OX、UX、XX、VXSNAN、VXISI、VXIMZ | 0 | なし |
| fnmadd。 | C、FL、FG、FE、FU、FR、FI、OX、UX、XX、VXSNAN、VXISI、VXIMZ | 1 | FX、FEX、VX、OX |
| fnmadd | C、FL、FG、FE、FU、FR、FI、OX、UX、XX、VXSNAN、VXISI、VXIMZ | 0 | なし |
| fnmadd。 | C、FL、FG、FE、FU、FR、FI、OX、UX、XX、VXSNAN、VXISI、VXIMZ | 1 | FX、FEX、VX、OX |
| fnma (fnma) | C、FL、FG、FE、FU、FR、FI、OX、UX、XX、VXSNAN、VXISI、VXIMZ | 0 | なし |
| fnma: | C、FL、FG、FE、FU、FR、FI、OX、UX、XX、VXSNAN、VXISI、VXIMZ | 1 | FX、FEX、VX、OX |
fnmadd、 fnmadd、および fnma 命令のすべての構文形式は、常に浮動小数点状況および制御レジスターに影響します。 構文形式がレコード (Rc) ビットを 1 に設定する場合、命令は条件レジスター・フィールド 1 の浮動小数点例外 (FX)、浮動小数点使用可能例外 (FEX)、浮動小数点無効演算例外 (VX)、および浮動小数点オーバーフロー例外 (OX) ビットに影響します。
注: 丸めは、加算の結果が否定される前に行われます。 RNによっては、不正確な値になる場合があります。
パラメーター
| 項目 | 説明 |
|---|---|
| FRT (FRT) | 操作のターゲット浮動小数点レジスターを指定します。 |
| FRA | 操作のソース浮動小数点レジスターを指定します。 |
| FRB | 操作のソース浮動小数点レジスターを指定します。 |
| FRC | 操作のソース浮動小数点レジスターを指定します。 |
例
- 以下のコードは、FPR 4 と FPR 5 の内容を乗算し、結果を FPR 7 の内容に加算し、否定された結果を FPR 6 に保管し、浮動小数点状況と制御レジスターを演算の結果を反映するように設定します。
# 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. fnmadd 6,4,5,7 # FPR 6 now contains 0x4070 D7FF FFFF F6CB. # FPSCR now contains 0x8206 4000. - 以下のコードは、FPR 4 と FPR 5 の内容を乗算し、結果を FPR 7 の内容に加算し、否定された結果を FPR 6 に保管し、演算の結果を反映するために浮動小数点状況および制御レジスターと条件レジスターのフィールド 1 を設定します。
# 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. fnmadd. 6,4,5,7 # FPR 6 now contains 0x4070 D7FF FFFF F6CB. # FPSCR now contains 0x8206 4000. # CR now contains 0x0800 0000.