SPRUIE9D May 2017 – May 2024 DRA74P , DRA75P , DRA76P , DRA77P
The VLOOP instruction marks the beginning of a vector command specifying a loop. Assembly format:
VLOOP cmd_type , CL# :cmd_len, PL#:param_len |
The cmd_type field specifies whether it is the main compute (COMP), table lookup (TLU), or histogram (HIST).
Command length (cmd_len) and parameter length (param_len) in 32-bit words are encoded to facilitate quick parsing of the vector commands. The ending loop counts, lpend1/2/3/4, are encoded at fixed entries in the parameter file, P2 = lpend1, P3 = lpend2, P4 = lpend3, P5 = lpend4. This allows easy adaptation of EVE function to different array dimensions.
The first two entries of the parameter file have implicit values and are thus not conveyed in the data memory. P0 = 0 and P1 = 1. The param_len does not include these two entries.
The binary code of VLOOP includes a version field, which allows a compiler/assembler to indicate which version of EVE hardware the vector command is compiled for. The first version has version = 0, the next version, version = 1, and so on. This allows future version of EVE to offer backward compatibility; that is, execute previous-version binary as is. For example, if a future version of EVE has 16-way SIMD, it can execute 8-way SIMD binary by disabling half of the datapath.
Each vector command can have:
Maximal command length is 81 instructions (VLOOP + 16 VINITs + 8 VAGENs + 8 VLDs + 40 operations + 8 VSTs).