Friday 24th November 17:00 UTC
- A meeting with Dmitry, David, James, Luke, and Andrey to explain the new grants for updating Simple-V for RISC-V (first implemented 4 years ago, now in need of an update)
Main points to take away:
- There will be two new grants (links below).
- Meeting on Tuesday will be used for planning the binutils grant. Link to next week's meeting: sync up 2023-11-28
New SV Expansion Grant
The expansion grant. Primary focus on:
- Add RISC-V ISA support to ISACAller.
- Extend
svanalysis.py
for characterising RISC-V instructions (number of reg ports, insn type, etc.). Link to existing svanalysis.py - Extending existing sv for of the RISC-V Spike sim to support full feature set of SimpleV. Link to LibreSOC' sv spike repo
New Binutils Grant
Primarily Dmitry doing most of the work.
- Communication on Simple-V formats to be defined by luke and jacob
Primary Tasks
- Finish writing libopid, some of the work started 4 months ago (no RfPs can be submitted for that work). Link to repo
- Convert existing PowerISA (SFFS)
isndb
instruction database to libopid (without losing CSV files which are machine-readable by other projects) - Create RISC-V instruction database using libopid.
- Implement SVP64 PowerISA in libopid.
Implement SimpleV for RISC-V in libopid.
- SVP32 (16+16) - 16-bit prefix for 16-bit compressed instructions.
- SVP48 (16+32) - 16-bit prefix for 32-bit instructions.
- SVP64 (32+32) - 32-bit prefix for 64-bit instructions.
The 16-bit prefix saves instruction space in memory (but with limited feature set: 128 regs span but cruder spacing).
- The 32-bit prefix gives full access to SimpleV feature set (128 regs, all SV modes such as data dependent fail-first, etc.)
Defining SVPxxSingle
Another point mentioned after Dmitry left is the need to define SVPxxSingle. svp64-single
For both RISC-V and PowerISA need to define:
- SVP16Single
- SVP32Single
- SVP64Single
(Andrey: Why do these need to be defined for PowerISA? A: see page and bugreport. full 128 reg access)
Doing this work for both ISAs at the same time isn't too difficult, as the SVPxxSingle format will be the same for both ISAs. By defining SV format to be the same across ISAs saves effort and helps future programmers to switch from one ISA to another with minimal adjustment...perhaps except for x86...)