* VL (which has different characteristics from standard CSRs)
* SUBVL (effectively a kind of SIMD)
* STATE (containing copies of MVL, VL and SUBVL as well as context information)
-* PCVBLK (the current operation being executed within a VBLOCK Group)
For Privilege Levels (trap handling) there are the following CSRs,
-where x may be u, m, s or h for User, Machine, Supervisor or Hypervisor
+where x may be u, s or h for User, Supervisor or Hypervisor
Modes respectively:
-* (x)ePCVBLK (a copy of the sub-execution Program Counter, that is relative
- to the start of the current VBLOCK Group, set on a trap).
* (x)eSTATE (useful for saving and restoring during context switch,
and for providing fast transitions)
-The u/m/s CSRs are treated and handled exactly like their (x)epc
+The u/s CSRs are treated and handled exactly like their (x)epc
equivalents. On entry to or exit from a privilege level, the contents
of its (x)eSTATE are swapped with STATE.
-(x)EPCVBLK CSRs must be treated exactly like their corresponding (x)epc
-equivalents. See VBLOCK section for details.
-
## MAXVECTORLENGTH (MVL) <a name="mvl" />
MAXVECTORLENGTH is the same concept as MVL in RVV, except that it
* MVL
* VL
-* destoffs - the destination element offset of the current parallel
+* dsttoffs - the destination element offset of the current parallel
instruction being executed
* srcoffs - for twin-predication, the source element offset as well.
* SUBVL
-* dsvoffs - the subvector destination element offset of the current
+* svoffs - the subvector element offset of the current
parallel instruction being executed
The format of the STATE CSR is as follows:
-| (31..28) | (27..26) | (25..24) | (23..18) | (17..12) | (11..6) | (5...0) |
-| -------- | -------- | -------- | -------- | -------- | ------- | ------- |
-| rsvd | dsvoffs | subvl | destoffs | srcoffs | vl | maxvl |
+| Field | Name | Description |
+| ----- | -------- | --------------------- |
+| 0:6 | maxvl | Max Vector Length |
+| 7:13 | vl | Vector Length |
+| 14:20 | srcoffs | |
+| 21:27 | dstoffs | |
+| 28:29 | subvl | |
+| 30:31 | svoffs | |
The relationship between SUBVL and the subvl field is:
* The entries are truncated to be within range. Attempts to set VL to
greater than MAXVL will truncate VL.
-* Both VL and MAXVL are stored offset by one. 0b000000 represents VL=1,
- 0b000001 represents VL=2. This allows the full range 1 to XLEN instead
- of 0 to only 63.
+* Setting srcoffs, dstoffs to 64 or greater, or VL or MVL to greater than 64 is reserved and will cause an illegal instruction trap.
+