-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathxtheadvector.adoc
29 lines (20 loc) · 2.2 KB
/
xtheadvector.adoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[#xtheadvector]
== Vector implementation of THEAD.
[NOTE,caption=Frozen]
The `XTheadVector` extension is `stable`.
Extension version: 1.0.
The `XTheadVector` extension is not a custom-extension, but a non-standard non-conforming extension. The encoding space of the `TheadVector` instructions overlaps with those of the `V` extension. This encoding space conflict is not on purpose, but the result of issues in the past that have been resolved since. Therefore, the `XTheadVector` extension and the `V` extension are in conflict. In other words, tools should not allow to enable the `TheadVector` extension and the `V` extension at the same time and should report an error if both are enabled by the user.
The `XTheadVector` extension adds 32 vector registers, and six unprivileged CSRs (`th.vstart`, `th.vxsat`, `th.vxrm`, `th.vl`, `th.vtype` and `th.vlenb`) , which also overlap with those of the `V` extension (`vstart`, `vxsat`, `vxrm`, `vl`, `vtype` and `vlenb`).
The `XTheadVector` extension is only available if and only if all of the following conditions are met:
* The value of the `mvendor` CSR is `0x5b7` ('T-Head')
* Bit 21 of the `misa` CSR is `1` ('V')
* The value of the `mimpid` CSR is `0`
These conditions not only reliably identify existing CPUs with XTheadVector (C906V, C920, and R920),
but also ensure that future T-Head CPUs without XTheadVector won't be falsely detected (in this case `mimpid` won't be `0`).
The instructions set of `XTheadVector` overlaps with the Vector Extension, v0.7.1(https://github.com/riscv/riscv-v-spec/releases/tag/0.7.1). But here are some changes:
* In order to facilitate VLEN calculation, The `XTheadVector` extension adopts the definition of the `V` extension to add VLENB unprivileged register `th.vlenb`.
* The five unprivileged CSRs `vstart`, `vxsat`, `vxrm`, `vl` and `vtype` are prefixed with `th.`, for example, `vstart` is changed to `th.vstart`.
* All instructions are prefixed with `th.`, for example, `vmv.v.v` is changed to `th.vmv.v.v`.
* The extension `Zvamo` is renamed to `XTheadZvamo`.
* The extension `Zvlsseg` (chapter 7.8) is not a subextension but a mandatory part of XTheadVector.
* The Chapter `19. Divided Element Extension ('Zvediv')` is not part of XTheadVector.