Skip to content

feat(river_hdl): adding microcode execution - #1

Merged
RossComputerGuy merged 4 commits into
masterfrom
feat/microcode-exec
Jan 19, 2026
Merged

feat(river_hdl): adding microcode execution#1
RossComputerGuy merged 4 commits into
masterfrom
feat/microcode-exec

fix(ci): merge queue

fa24390
Select commit
Loading
Failed to load commit list.
Garnix CI / check river_hdl-tests [x86_64-linux] succeeded Jan 19, 2026 in 2m 37s

check river_hdl-tests [x86_64-linux]

check river_hdl-tests [x86_64-linux] succeeded

Details

Last 100 lines of logs:

river_hdl-tests-0.1.0-git+fa24390> ReturnMicroOp(PrivilegeMode.supervisor)
river_hdl-tests-0.1.0-git+fa24390> LoadReservedMicroOp(MicroOpField.rs1, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> StoreConditionalMicroOp(MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.add, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.swap, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.xor, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.and, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.or, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.min, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.max, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.minu, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.maxu, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.word)
river_hdl-tests-0.1.0-git+fa24390> LoadReservedMicroOp(MicroOpField.rs1, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> StoreConditionalMicroOp(MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.add, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.swap, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.xor, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.and, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.or, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.min, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.max, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.minu, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> AtomicMemoryMicroOp(MicroOpAtomicFunct.maxu, MicroOpField.rs1, MicroOpField.rs2, MicroOpField.rd, MicroOpMemSize.dword)
river_hdl-tests-0.1.0-git+fa24390> 00:05 +59: packages/river_hdl/test/core_test.dart: RC1.s - RV32I Small program
river_hdl-tests-0.1.0-git+fa24390> 00:05 +60: packages/river_hdl/test/core_test.dart: RC1.s - RV32I Small program
river_hdl-tests-0.1.0-git+fa24390> 00:06 +61: packages/river_hdl/test/core_test.dart: RC1.s - RV32I Small program
river_hdl-tests-0.1.0-git+fa24390> 00:07 +62: packages/river_hdl/test/core_test.dart: RC1.s - RV32I Small program
river_hdl-tests-0.1.0-git+fa24390> 00:07 +63: packages/river_hdl/test/core_test.dart: RC1.s - RV32I Small program
river_hdl-tests-0.1.0-git+fa24390> 00:08 +64: packages/river_hdl/test/core_test.dart: RC1.s - RV32I Small program
river_hdl-tests-0.1.0-git+fa24390> 00:09 +65: packages/river_hdl/test/core/exec_test.dart: Static execution Zicsr csrrw with rd=x0 still writes CSR but suppresses rd write
river_hdl-tests-0.1.0-git+fa24390> 00:10 +66: packages/river_hdl/test/core/exec_test.dart: Static execution Zicsr csrrs: rd=old, CSR |= rs1
river_hdl-tests-0.1.0-git+fa24390> 00:12 +67: packages/river_hdl/test/core/exec_test.dart: Static execution Zicsr csrrs with rs1=x0 only reads CSR
river_hdl-tests-0.1.0-git+fa24390> 00:14 +68: packages/river_hdl/test/core/exec_test.dart: Static execution Zicsr csrrc: CSR &= ~rs1
river_hdl-tests-0.1.0-git+fa24390> 00:16 +69: packages/river_hdl/test/core/exec_test.dart: Static execution Zicsr csrrwi: CSR = imm, rd = old CSR
river_hdl-tests-0.1.0-git+fa24390> 00:18 +70: packages/river_hdl/test/core/exec_test.dart: Static execution Zicsr csrrsi: CSR |= imm
river_hdl-tests-0.1.0-git+fa24390> 00:20 +71: packages/river_hdl/test/core/exec_test.dart: Static execution Zicsr csrrsi: CSR &= ~imm
river_hdl-tests-0.1.0-git+fa24390> 00:23 +72: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I addi increments register
river_hdl-tests-0.1.0-git+fa24390> 00:26 +73: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I add performs register addition
river_hdl-tests-0.1.0-git+fa24390> 00:30 +74: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I lw loads from memory
river_hdl-tests-0.1.0-git+fa24390> 00:34 +75: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I sw stores to memory
river_hdl-tests-0.1.0-git+fa24390> 00:38 +76: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I beq takes branch when equal
river_hdl-tests-0.1.0-git+fa24390> 00:41 +77: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I beq does not branch when not equal
river_hdl-tests-0.1.0-git+fa24390> 00:46 +78: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I lui loads upper immediate
river_hdl-tests-0.1.0-git+fa24390> 00:49 +79: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I jal writes ra and jumps
river_hdl-tests-0.1.0-git+fa24390> 00:53 +80: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I auipc adds immediate to PC
river_hdl-tests-0.1.0-git+fa24390> 00:57 +81: packages/river_hdl/test/core/exec_test.dart: Dynamic execution RV32I slti sets when less-than immediate
river_hdl-tests-0.1.0-git+fa24390> 01:02 +82: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrw: atomic swap (rd=old, CSR=new)
river_hdl-tests-0.1.0-git+fa24390> 01:09 +83: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrw with rd=x0 still writes CSR but suppresses rd write
river_hdl-tests-0.1.0-git+fa24390> 01:16 +84: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrs: rd=old, CSR |= rs1
river_hdl-tests-0.1.0-git+fa24390> 01:24 +85: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrs with rs1=x0 only reads CSR
river_hdl-tests-0.1.0-git+fa24390> 01:31 +86: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrc: CSR &= ~rs1
river_hdl-tests-0.1.0-git+fa24390> 01:40 +87: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrwi: CSR = imm, rd = old CSR
river_hdl-tests-0.1.0-git+fa24390> 01:47 +88: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrsi: CSR |= imm
river_hdl-tests-0.1.0-git+fa24390> 01:55 +89: packages/river_hdl/test/core/exec_test.dart: Dynamic execution Zicsr csrrsi: CSR &= ~imm
river_hdl-tests-0.1.0-git+fa24390> 02:03 +90: All tests passed!
river_hdl-tests-0.1.0-git+fa24390> Reading tracefile /nix/store/fvdkjmnxmd4xcjvy2ah5lj1z6m66zhga-river_hdl-tests-0.1.0-git+fa24390/coverage/lcov.info.
river_hdl-tests-0.1.0-git+fa24390> Found 14 entries.
river_hdl-tests-0.1.0-git+fa24390> Found common filename prefix "/build/3pqpn5d6nrbzwvs3p9ps4lbmwx853nhc-source/packages/river_hdl/lib"
river_hdl-tests-0.1.0-git+fa24390> Generating output.
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core/csr.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=384 hit=357
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=200 hit=165
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core/exec.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=1515 hit=1474
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core/decoder.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=258 hit=254
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core/int.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=168 hit=0
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core/fetcher.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=90 hit=89
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core/pipeline.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=393 hit=124
river_hdl-tests-0.1.0-git+fa24390> Processing file src/core/mmu.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=470 hit=452
river_hdl-tests-0.1.0-git+fa24390> Processing file src/devices/flash.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=12 hit=0
river_hdl-tests-0.1.0-git+fa24390> Processing file src/dev.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=183 hit=32
river_hdl-tests-0.1.0-git+fa24390> Processing file src/devices/uart.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=195 hit=0
river_hdl-tests-0.1.0-git+fa24390> Processing file src/devices/sram.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=171 hit=0
river_hdl-tests-0.1.0-git+fa24390> Processing file src/soc.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=46 hit=0
river_hdl-tests-0.1.0-git+fa24390> Processing file src/memory/port.dart
river_hdl-tests-0.1.0-git+fa24390>   lines=156 hit=156
river_hdl-tests-0.1.0-git+fa24390> Overall coverage rate:
river_hdl-tests-0.1.0-git+fa24390>   source files: 14
river_hdl-tests-0.1.0-git+fa24390>   lines.......: 73.2% (3103 of 4241 lines)
river_hdl-tests-0.1.0-git+fa24390>   functions...: no data found
river_hdl-tests-0.1.0-git+fa24390> Message summary:
river_hdl-tests-0.1.0-git+fa24390>   no messages were reported
river_hdl-tests-0.1.0-git+fa24390> buildPhase completed in 2 minutes 14 seconds
river_hdl-tests-0.1.0-git+fa24390> Running phase: fixupPhase
river_hdl-tests-0.1.0-git+fa24390> shrinking RPATHs of ELF executables and libraries in /nix/store/fvdkjmnxmd4xcjvy2ah5lj1z6m66zhga-river_hdl-tests-0.1.0-git+fa24390
river_hdl-tests-0.1.0-git+fa24390> checking for references to /build/ in /nix/store/fvdkjmnxmd4xcjvy2ah5lj1z6m66zhga-river_hdl-tests-0.1.0-git+fa24390...
river_hdl-tests-0.1.0-git+fa24390> patching script interpreter paths in /nix/store/fvdkjmnxmd4xcjvy2ah5lj1z6m66zhga-river_hdl-tests-0.1.0-git+fa24390
river_hdl-tests-0.1.0-git+fa24390> Executing dartFixupHook
river_hdl-tests-0.1.0-git+fa24390> Finished dartFixupHook