Microsoft DirectX 8.0 (Visual Basic)

rcp

ソース スカラーの逆数を計算する。

rcp   vDest, vSrc0

レジスタ

vDest
処理の結果を保持するデスティネーション レジスタ。
vSrc0
入力引数を指定するソース レジスタ。

処理

次のコードは、rcp 命令によって実行される処理とデスティネーションへの結果の書き込みを示している。

    SetDestReg();
    SetSrcReg(0);

    if( m_Source[0].w == 1.0f )
    {
        // 正確に 1.0 でなければならない。
        m_TmpReg.x = m_TmpReg.y = m_TmpReg.z = m_TmpReg.w = 1.0f;
    }
    else if( m_Source[0].w == 0 )
    {
        m_TmpReg.x = m_TmpReg.y = m_TmpReg.z = m_TmpReg.w = PLUS_INFINITY();
    }
    else
    {
        m_TmpReg.x = m_TmpReg.y = m_TmpReg.z = m_TmpReg.w = 1.0f/m_Source[0].w;
    }

    WriteResult();

注意

ソースに添字がない場合は、x 要素が使われる。入力が 1.0 の場合は、出力も 1.0 にならなければならない。

(1.0, 2.0) の範囲を超えたエラーの精度は少なくとも 1.0/(222) 絶対値である。これは、通常の実装では仮数と指数が分離されるためである。0.0 のソースは無限大である。

次の例は、rcp 命令の使い方を示している。

rcp r1, r2
rcp r1, r2.y