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 is0x5b7
('T-Head') -
Bit 21 of the
misa
CSR is1
('V') -
The value of the
mimpid
CSR is0
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 theV
extension to add VLENB unprivileged registerth.vlenb
. -
The five unprivileged CSRs
vstart
,vxsat
,vxrm
,vl
andvtype
are prefixed withth.
, for example,vstart
is changed toth.vstart
. -
All instructions are prefixed with
th.
, for example,vmv.v.v
is changed toth.vmv.v.v
. -
The extension
Zvamo
is renamed toXTheadZvamo
. -
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.