3.6.9.24 入力の精度縮減
vfma,mwriteの入力オペランドのうち、基本動作において通常の半精度の値を要求するものについて、単精度の値からの変換を指示することができる。
通常の半精度の値を要求するのは、半精度ベクトル積和演算および(行列転置を目的とした)半精度行列書き込みである。
これらは長語の半精度の値を要求するので、 2 長語の単精度の値を丸めて入力することになる。
2 長語入力オペランドの末尾にrをつけることで丸めを指示する。
ブロックフロート半精度または(ブロックフロート如何に関わらず)単精度を要求するオペランドについては一つ高い精度から丸めての入力を指示できないことに注意する。
単精度の値からブロックフロート半精度の値を得るには、後述するALU命令式のbfの入力オペランドで丸めを指示すればよい。
倍精度の値から単精度の値を得るには、vpassaに後述するMAU命令式の出力の丸めを付加して精度を変換したのち、必要に応じてブロックフロート化することになる。
次に例を示す。
code:例
hvmul $llr0vr $lm0v $llt
GRF0の通常の単精度データをx、LM0の通常の半精度データをyとして、xを半精度に丸めた上で、半精度ベクトル積(x*y)を行い、Tレジスタに書き込む。