[libre-riscv-dev] SV Prefix questions

Luke Kenneth Casson Leighton lkcl at lkcl.net
Wed Jun 26 06:29:01 BST 2019


darn it, i *really* don't want to add a setvl.  unfortunately it does
make sense, apart from needing to be an I-Type, and taking up 2 funct3
opcodes (or more).

* funct3 = 0b000 - reserved (another op)
* funct3 = 0b001 - leave MVL alone and VL from imm[5:0]
* funct3 = 0b010 - set MVL from imm[11:6] and leave VL alone
* funct3 = 0b011 - set MVL from imm[11:6] and VL from imm[5:0]

so:

* funct3 = 0b001 - VL = MIN(imm[5:0], MVL), rd = MIN(VL, rs1)
* funct3 = 0b010 - MVL = imm[11:6], rs1=x0, rd=x0, and rs1 !=0 or rd
!=0 is reserved?
* funct3 = 0b011 - MVL = imm[11:6], VL = imm[5:0]...

no, it's not quite right.

it's complicated, needs a lot of thought, on how to encode both the
CSRRW and CSRRWI versions into the opcode without wasting opcode
space.

*all of which takes time*!

l.



More information about the libre-riscv-dev mailing list