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
PowerPC® 
FNMADD FRT FRA FRC FRB
fnmadd。 FRT FRA FRC FRB
POWER ® ファミリー 
fnma (fnma) FRT FRA FRC FRB
fnma: FRT FRA FRC FRB
ビット
0 から 5 59
6~10 FRT (R)
11-15 FRA
16 から 20 FRB
21-25 FRC
26-30 31
31 RC
PowerPC® 
fnmadd FRT FRA FRC FRB
fnmadd。 FRT FRA FRC FRB

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 の場合に、無効な演算例外を除き、結果のクラスおよび符号に設定されます。

fnmaddfnmadd、および 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

fnmaddfnmadd、および fnma 命令のすべての構文形式は、常に浮動小数点状況および制御レジスターに影響します。 構文形式がレコード (Rc) ビットを 1 に設定する場合、命令は条件レジスター・フィールド 1 の浮動小数点例外 (FX)、浮動小数点使用可能例外 (FEX)、浮動小数点無効演算例外 (VX)、および浮動小数点オーバーフロー例外 (OX) ビットに影響します。

注: 丸めは、加算の結果が否定される前に行われます。 RNによっては、不正確な値になる場合があります。

パラメーター

項目 説明
FRT (FRT) 操作のターゲット浮動小数点レジスターを指定します。
FRA 操作のソース浮動小数点レジスターを指定します。
FRB 操作のソース浮動小数点レジスターを指定します。
FRC 操作のソース浮動小数点レジスターを指定します。

  1. 以下のコードは、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.
    
  2. 以下のコードは、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.