From 37e91de03d499527cab001b3f55ac9a63438993d Mon Sep 17 00:00:00 2001 From: Michael <20937441+KMikeeU@users.noreply.github.com> Date: Tue, 14 Apr 2026 00:04:38 +0200 Subject: [PATCH] add custom instruction --- src/tinyriscv.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/tinyriscv.h b/src/tinyriscv.h index 8d1c1e9..b25ed85 100644 --- a/src/tinyriscv.h +++ b/src/tinyriscv.h @@ -89,6 +89,17 @@ inline void tinyriscv_I_type(const u8 funct3, const u8 funct7, u32* x, //////////////////////////////////////////////////////////////////////////////// +__attribute__((always_inline)) +inline void tinyriscv_custom_I_type(const u8 funct3, const u8 funct7, u32* x, + const u8 rd, const u8 rs1, const i16 imm, const u8 shamt){ + + switch (funct3) { + case /*CUSTOM XOR*/ 0: x[rd] = ((x[rs1] << (i32)imm) ^ 0xFF) >> (i32)imm; break; + } +} + +//////////////////////////////////////////////////////////////////////////////// + __attribute__((always_inline)) inline void tinyriscv_R_type(const u8 funct3, const u8 funct7, u32* x, const u8 rd, const u8 rs1, const u8 rs2){ @@ -199,6 +210,9 @@ void tinyriscv_step(tinyriscv_core* core){ case /*I-type*/ 0x13: tinyriscv_I_type(funct3, funct7, core->x, rd, rs1, imm_i, rs2); break; + case /*Custom-I-type*/ 0x0B: + tinyriscv_custom_I_type(funct3, funct7, core->x, rd, rs1, imm_i, rs2); + break; case /*R-type*/ 0x33: tinyriscv_R_type(funct3, funct7, core->x, rd, rs1, rs2); break;