Basic integer ALU instructions ( vadd, vsub, vmin, vmax, vand, vor, vxor) and permutation instructions (vrgather, vslideup, vslidedown)
To achieve the goals we need to
Implement the instruction decoder (in decode.c). This decoder should be able to decode all three instructions formats (valu, vcfg, vmem)
Add the corresponding CSRs (vl, vtype)
Implement RVV instructions into custom IRs. Some of RVV may be implemented as a loop of basic instructions (like vadd from add). To maintain the readability of throughout the entire codebase, adding a new src file rvv_template.c for the RVV's IRs may be a better idea.
Study the further implementations (exception handling, rounding mode, float-points, comparison, mask instructions, etc.)
RISC-V "V" Vector Extension (shorten as
RVV
) is the instruction extension that introduces vector process capabilities to RISCV.The staged goal of this issue is to explore the possibility to run RVV instructions with rv32emu.
vtype
andvl
CSRs with vsetvli/vsetivli/vsetvl. This is required because RVV vector register is variable-legnth.To achieve the goals we need to
decode.c
). This decoder should be able to decode all three instructions formats (valu, vcfg, vmem)vl
,vtype
)vadd
fromadd
). To maintain the readability of throughout the entire codebase, adding a new src filervv_template.c
for the RVV's IRs may be a better idea.We can refer the following resource