[libre-riscv-dev] Fwd: spike simple-v implementation, refinement needed
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Sat Sep 29 03:29:15 BST 2018
ok so this:
loop:
setvl a0, 4 # vl= min(min(mvl, 4, a0))
ld a3, a1 # load 4 registers a3-6 from x
slli t1, t0, 3 # t1 = vl * 8 (in bytes)
ld a7, a2 # load 4 registers a7-10 from y
would be changed to this:
setmvl #4 # actually CSRRWI x0, CSR_SV_MVL, #4
loop:
setvl a0, 4 # vl= min(min(mvl, 4, a0))
ld a3, a1 # load 4 registers a3-6 from x
slli t1, t0, 3 # t1 = vl * 8 (in bytes)
ld a7, a2 # load 4 registers a7-10 from y
which is slightly annoying however at least there's no need for a
special opcode "setvl". what i plan also to do is to add a
"CSR_SV_REALVL" which will allow save/restore context swapping with a
single instruction.
the next phase is to allow set/get of the register and predication CSR
tables, and i will be able to start writing unit tests.
l.
More information about the libre-riscv-dev
mailing list