これまでのものはv1.0のRC1だったりRC2だったりするけど、いよいよv1.0正式バージョンについてのPublic Review版がリリースされた。
一応差分をチェックしてみたが、本文内の曖昧の所を明文化したようなところが多い。 以下にまとめたのはRC1→RC2からのさらに変更点なので、v1.0はRC2からの以下のさらに変更点が加えられたことになる。
- いくつかの文章の言い回しの改善。デザインに依存する項目について追加。
vpopc.mをvcpop.mに名前変更。スカラ命令との統一性のため。エイリアスとして古い名前はアセンブラに残す。- マスク論理命令、
vmsbf.m,vmsif.m,vmsof.mマスク操作命令では結果によてすべてのマスクレジスタへの書き込みを許す (つねにTail-agnosticとなる) - ベクトル長拡張 "Zvl*"を追加
mstatus.VSフィールドへの書き込み操作を明記し、mstatus.SDとの相互作用について追記。- ハイパーバイザー化における動作について定義を追加。
vtypeにおける不正な値のチェックについて明確化。- 呼び出し規約についての項目を追加。例題を理解するためのプレースホルダとしてのみ設置し、RISC-VのpsABIはこれらの項目を含むように拡張される。
vxsatビットのはCSRの0ビット目であり、上位のビットは0が書き込まれるべきであることを追加。vxrmフィールドはCSRの下位の2ビットであり、上位のビットは0が書き込まれるべきであることを追加。- 1つの要素が複数のベクトルレジスタへの書き込みを行う場合(ELEN > VLEN)の場合のオプションについて説明を簡素化し、この時点ではこの方式は提案されていない。
- 実装ではEEWの幅が標準的なロードとストア命令においてサポートされていない場合では実装が不正命令例外を発生するべきであるということを追加。
- セグメントロードストア命令のためのZvlsseg拡張名を削除し、標準的なすべてのベクトル拡張に搭載する必要がある。
- 全体レジスタロードストア命令においてnfはNFIELDと同様にエンコードされることを明確化。
- レジスタオーバラップの制約を違反した命令は予約済みであることを明文化。
- Zfinx/Zdinx/Zhinx拡張がベクトル命令に搭載された場合の浮動小数点スカラ値の扱いについて注記を追加。
- 以前のアセンブラニーモニックである
vmandnotとvmornotはvmandnとvmornに変更され、同じ動きをする。古いvmandnotとvmornotのニーモニックはアセンブラにエイリアスとして残される。 - 標準ベクトル拡張をサポートした実装では
misa.vが設定されることを明文化。
殆どの項目は大きな変更がある訳では無いが、Zvl*についてはVLENの最低長を示しているらしい。これそんなに必要あるかな?
| Extension | Minimum VLEN |
|---|---|
| Zvl32b | 32 |
| Zvl64b | 64 |
| Zvl128b | 128 |
| Zvl256b | 256 |
| Zvl512b | 512 |
| Zvl1024b | 1024 |