code wiki / _hdl_build / rv64im_min_gfx_gate.nx

rv64im_min_gfx_gate.nx

buildroot/runtime/_hdl_build/rv64im_min_gfx_gate.nx

10570 B168 linesdepth 5pulls 21 transitivereach 0 importersview sourcekind gate/prooftopic rv64im
docsdependenciesstructsconstsfunctions

dependencies 13 imports · 0 importers

nx_gate_gn.nx nx_gate_base.nx nx_syscalls.nx nishi_hdl_primitives.nx rv64im_min_decoder.nx rv64im_min_alu.nx rv64im_min_regfile.nx rv64im_min_csr.nx rv64im_min_clint.nx rv64im_min_uart.nx rv64im_min_gfx_gate.nx

diagram shows first 10 each side; +3 more imports, +0 more importers in the complete lists below.

imports: nx_gate_gn.nxnx_gate_base.nxnx_syscalls.nxnishi_hdl_primitives.nxrv64im_min_decoder.nxrv64im_min_alu.nxrv64im_min_regfile.nxrv64im_min_csr.nxrv64im_min_clint.nxrv64im_min_uart.nxrv64im_min_sim.nxnx_png.nxnx_gate_verdict.nx

imported by: nobody (leaf or entry point)

structs

none

consts

none

functions

38func grow(name: *u8, ok: i64) -> i64 { if ok==1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw("
42func e_auipc(rd: i64, imm20: i64) -> i64 { return ((imm20 & 0xFFFFF) << 12) | (rd << 7) | 0x17 }
43func e_addi(rd: i64, rs1: i64, imm: i64) -> i64 { return ((imm & 0xFFF) << 20) | (rs1 << 15) | (rd << 7) | 0x13 }
44func e_andi(rd: i64, rs1: i64, imm: i64) -> i64 { return ((imm & 0xFFF) << 20) | (rs1 << 15) | (7 << 12) | (rd << 7) | 0x13 }
45func e_slli(rd: i64, rs1: i64, sh: i64) -> i64 { return ((sh & 0x3F) << 20) | (rs1 << 15) | (1 << 12) | (rd << 7) | 0x13 }
46func e_rr(rd: i64, rs1: i64, rs2: i64, f3: i64) -> i64 { return (rs2 << 20) | (rs1 << 15) | (f3 << 12) | (rd << 7) | 0x33 }
47func e_sw(rs1: i64, rs2: i64, imm: i64) -> i64 { return (((imm>>5)&0x7F)<<25) | (rs2<<20) | (rs1<<15) | (2<<12) | ((imm&0x1F)<<7) | 0x23 }
48func e_blt(rs1: i64, rs2: i64, off: i64) -> i64
53func w32(mem: *u8, off: i64, v: i64) -> i64
59func build_prog(prog: *i64) -> i64
89func run_frame(prog: *i64, nprog: i64, fb_out: *i64, W: i64, H: i64) -> i64
110func main() -> i64