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レジスタ
に書き込む。