Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ starting from their high-level, human-readable description.
(`opcodes-rvv` file) have been set as pseudo-instruction due to the overlapping
of their opcodes space with the opcodes space of the SIMD instructions from
Xpulpv2, defined in `opcodes-xpulpvect_CUSTOM` and `opcodes-xpulpvectshufflepack_CUSTOM`.
- For quick reference: commonly in our projects, `encoding.h` is employed in
- the instruction decoder in the RTL: `riscv_instr.sv`
- bare-metal runtime
- `riscv-isa-sim`: `riscv-isa-sim/riscv/encoding.h`
- `riscv-tests`: `riscv-tests/env/encoding.h`
- `riscv-gnu-toolchain`: `riscv-binutils-gdb/include/opcode/riscv-opc.h`


## Smallfloat notice
Expand Down
2 changes: 1 addition & 1 deletion config.mk
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ RV32XPULPIMG += opcodes-xpulpbitop_CUSTOM
SNITCH_OPCODES := opcodes-dma_CUSTOM opcodes-frep_CUSTOM opcodes-ssr_CUSTOM

# default configurations
MEMPOOL_ISA := opcodes-frep_CUSTOM $(RV32XPULPIMG) opcodes-xpulppostmod_CUSTOM opcodes-rv32d-zfh_DRAFT opcodes-rv32q-zfh_DRAFT opcodes-rv32zfh_DRAFT opcodes-rv64zfh_DRAFT opcodes-sflt_CUSTOM
MEMPOOL_ISA := opcodes-frep_CUSTOM $(RV32XPULPIMG) opcodes-xpulppostmod_CUSTOM opcodes-rv32d-zfh_DRAFT opcodes-rv32q-zfh_DRAFT opcodes-rv32zfh_DRAFT opcodes-rv64zfh_DRAFT opcodes-sflt_CUSTOM opcodes-xqueue_CUSTOM
SNITCH_ISA := $(RV32XPULPIMG) $(SNITCH_OPCODES) opcodes-sflt_CUSTOM
15 changes: 15 additions & 0 deletions opcodes-xqueue_CUSTOM
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# format of a line in this file:
# <instruction name> <args> <opcode>
#
# <opcode> is given by specifying one or more range/value pairs:
# hi..lo=value or bit=value or arg=value (e.g. 6..2=0x45 10=1 rd=0)
#
# <args> is one of rd, rs1, rs2, rs3, imm20, imm12, imm12lo, imm12hi,
# shamtw, shamt, rm

# Xqueue extension (atomic queue operations)
# IMPORTANT: THIS IS AN ILLEGAL EXTENSION OF THE STANDARD ATOMIC INSTRUCTIONS

# queue push and pop (32-bit)
q.push rd rs1 rs2 aqrl 31..29=1 28..27=3 14..12=2 6..2=0x0B 1..0=3
q.pop rd rs1 24..20=0 aqrl 31..29=1 28..27=2 14..12=2 6..2=0x0B 1..0=3