Hi,

These are a few pointers on how to start modifying the RVV implementation.

- The previous gem5 bootcamp has details on how to implement instructions
in gem5, and examples of implementing RISCV P extension,
https://youtube.com/watch?v=Z5B02jkNpck&list=PL_hVbFs_loVSaSDPr1RJXP5RRFWjBMqq3&index=11&pp=iAQB
.

- The .isa files you're looking at contain the templates for generating the
actual instruction. The instruction will be compiled to a couple of .cc and
.hh files before being compiled and linked to the gem5.opt executable. In
the case of riscv, you can find those generated files in
build/RISCV/arch/riscv/generated/.

- Typically, implementing an instruction will require implementing the
decoder method, and execute method; and for memory instructions, you'll
need to implement initiateAcc and completeAcc methods.

- There are a few RVV memory instructions that are more complicated than
other instructions (e.g. those scatter store/ gather load instructions).
Those instructions act as a macro instructions spawning more micro
instructions to perform loads/stores, which is necessary as the elements
can be in different cache blocks. If you'd like to start with a simple
implementation, I think you can start from by mimicking the implementation
of simpler instructions in gem5's rvv implementation, like vadd_vv.

Regards,
Hoa Nguyen

On Sat, Dec 23, 2023, 10:05 zahra butool via gem5-users <gem5-users@gem5.org>
wrote:

> Hi everyone,
>
>
> For my project, I need to add a custom instruction to RISCV in Gem5 that
> loads 2 sets of 128 elements (32-bit float) from the memory, computes the
> dot product, and stores them back to the memory. A starting point is using
> the RISCV vector instructions, but I want to reduce the instruction count
> and have only one instruction doing all these operations. So I was checking
> the vector .isa (decoder, memory, arith) files to get an idea of how to
> merge vle32, vadd_vv, vredsum.vs, and vse32 into a single instruction, but
> it looks a bit complicated to me and still couldn't figure out how I should
> modify it.
>
> I would appreciate it if anyone could give me some pointers on starting
> this or which files I need to check and modify.
>
> Thank you!
> _______________________________________________
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
>
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org

Reply via email to