From 5fc470957659308d2bf0f261437488fb4528b9d6 Mon Sep 17 00:00:00 2001 From: lkcl Date: Thu, 27 Jun 2019 19:03:45 +0100 Subject: [PATCH] --- simple_v_extension/vblock_format.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/simple_v_extension/vblock_format.mdwn b/simple_v_extension/vblock_format.mdwn index 27c2b8c86..ac38a60c3 100644 --- a/simple_v_extension/vblock_format.mdwn +++ b/simple_v_extension/vblock_format.mdwn @@ -166,12 +166,13 @@ The format is as follows: | status | vlset | 16xil | pplen | rplen | mode | vlblk | opptr | | 2 | 1 | 3 | 2 | 2 | 1 | 16 | 5 | -* status is the key field that effectively ezposes the inner FSM (Finite State Machine) directly. +* status is the key field that effectively exposes the inner FSM (Finite State Machine) directly. * status = 0b00 indicates that the processor is not in "VBLOCK Mode". It is instead in standard RV Scalar opcode execution mode. The processor will leave this mode only after it encounters the beginning of a valid VBLOCK opcode. * status = 0b01 indicates that vlset, 16xil, pplen, rplen and mode have all been copied directly from the VBLOCK so that they do not need to be read again from the instruction stream. * status=0b10 indicates that the VL Block has been read from the instruction stream and decoded (and copied into vlblk). * status=0b11 indicates that the Predicate and Register Blocks have been read from the instruction stream (and put into internal Vector Context) Simpler implementations are permitted to reset status back to 0b10 and re-read the data after return from a trap. They are not however permitted to destroy opptr in the process. * opptr points to where instructions begin in the VBLOCK. 0 indicates the start of the opcodes, and is in multiples of 16 bits ( 2 bytes). This is the equivalent of a Program Counter, for VBLOCKs. +* at the end of a VBLOCK, when the last instruction executes (assuming it does not change opptr to earlir in the block), status is reset to 0b00 to indicate exit from the VBLOCK FSM, and the current Vector Predicate and Register Context destroyed (Note: the STATE CSR is **not** altered by exit from a VBLOCK Context). When status=0b11, opptr may be written to using CSRRWI. Doing so will cause execution to jump within the block, exactly as if PC had been set in normal RISC-V eexecution. Writing a value outside of the range of the instruction block will cause an illegal instruction exception. Writing a value (any value) when status is not 0b11 likewise causes an illegal instruction exception. -- 2.30.2