RISC-Vベクトル拡張仕様書の読み直し。その他のベクトルCSRレジスタについて。
3.7. ベクトル固定小数点丸めモードレジスタ vxrm
ベクトル固定小数点丸めモード・レジスタは、2ビットの読み書き可能な丸め込みモード・フィールドを保持します。 ベクトル固定小数点丸め込みモードは、独立してアクセスできるように、 別のCSRアドレスが与えられていますが、 vcsr のフィールドとしても反映されています。
固定小数点丸めのアルゴリズムは以下のように規定されています。 丸め前の結果を v とし、その結果の d ビットを丸めるとします。 このとき、丸められた結果は (v >> d) + r となり、 r は次の表にあるように丸めモードに依存します。
以下の命令の説明では、丸め関数を表すために以下の操作が使用されています。
roundoff_unsigned(v, d) = (unsigned(v) >> d) + r roundoff_signed(v, d) = (signed(v) >> d) + r
vxrm[XLEN-1:2] はゼロが書き込まれるべきです。
Note: csrwi 1命令を使って、元の丸め込みモードを保存しながら、 新しい丸め込みモードを設定することができます。
3.8. ベクトル固定小数点飽和フラグ vxsat
vxsat CSRは読み書き可能な1ビットを保持しており、 固定小数点命令が出力値を出力先のフォーマットに収めるために飽和させる必要があったかどうかを示します。
vxsat ビットは vcsr のミラーです。
3.9. Vector 制御・ステータスレジスタ vcsr
vxrm と vxsat CSRは、ベクトル制御・ステータスCSRであるvcsr
のフィールドを介してアクセスすることもできます。
3.10. リセット時のベクトル拡張の状態
ベクトル拡張は、リセット時に一貫した状態を持っている必要があります。 特に、vtype と vl は、1つの vsetvl 命令で読み取ってから復元できる値を持っていなければなりません。
Note: リセット時には、vtype.vill が設定され、vtype の残りのビットはゼロになり、vl はゼロになることが推奨されます。 vstart, vxrm, vxsat CSR は、リセット時に任意の値を持つことができます。
Note: ベクトルユニットを使用する場合は、初期化のための vset{i}vl{i} が必要で、 これにより vstart がリセットされます。 vxrm と vxsat フィールドは、使用前にソフトウェアで明示的にリセットする必要があります。 ベクトルレジスタはリセット時に任意の値を持つことができます。