RISC-V Vector Extensionの仕様はv0.9からまさかのv0.10となり、いつになれば正式版になるのかと思っていたが、やっと1.0のRC1が公開されたようだ。といってもTagが打たれただけで、今度はRISC-V Internationalによる承認フローに入るものと思われる。
v0.10からの仕様変更部分について確認する。
- マスクと
vl
の依存関係は、RVWMO の目的のための制御依存関係であることを明確にした。- これは良く分からん。RVWMOの部分に何となく説明が入っているが、備考の所を確認すると、要するにマスクに合わせて細かくロードを制御する必要がないということ?
- Fault-only-firstのセグメントロード命令は、トリミングが発生した時点を超えてデスティネーションレジスタを更新することができることを指定。
- Fault-only-firstでセグメントロードを行う場合は、Index=0で複数の要素を更新するが、VLによるトリミングを超えてレジスタを更新することができるということ?
- whole registerロードのセクションで、オペコードにエンコードされたEEWにかかわらず、EEWは常に8であることを暗示する矛盾した文章を削除しました。
- つまり8ビットのアドレスアライン制約を適用せず、16ビットの制約などに変更しても良いということ?
- 標準ベクター拡張の名称と内容を記載したセクションを追加し,批准を求める。
- 標準ベクトル拡張からベクトル AMO を削除しました。Zvamo拡張として後に追加されますが、以前の提案とは異なるエンコーディングが必要になります。
- まじか!Atomicは標準から削除され再エンコードされる。
- インデックス付きベクタメモリ命令のアドレスオフセットにEEWがサポートされていない場合、実装が不正命令例外を発生させることができることを明確にしました。
- VLENの上限を64Kibとしました。
- ベクトル長を最大にした場合に生成されるであろう値で、Mask-agnostic tailを書けるようにしました。
- うーん、これが良く分からない?Mask-Agnosticの場合の挙動が変わるということ?
- Masked ロード/ストア命令は、従来のEEW=1ではなく、EEW=8として動作することを明確にしました。
- これは新たに導入された
vlm.v
、vsm.v
のことだな。
- これは新たに導入された
- アセンブラのニーモニックである非順序浮動小数点リダクションのvfredsumとvfwredsumをそれぞれvfredusumとvfwredusumに変更しました。古い名称はエイリアスとして残されています。
- Masked論理命令は常にマスク解除されることを明確にし、vm=0(マスクされた)のエンコーディングは予約されています。