code wiki / _hdl_build / nx_zpng_test.nx

nx_zpng_test.nx

buildroot/runtime/_hdl_build/nx_zpng_test.nx

2108 B24 linesdepth 5pulls 6 transitivereach 0 importersview sourcekind gate/proof
docsdependenciesstructsconstsfunctions

about

nx_zpng_test.nx -- prove the compressing PNG encoder is CORRECT (decodes) + measure the size win on a flat-region image (gradient + fills, like our generated art). license_tier: ORIGINAL expect_exit: 0

dependencies 3 imports · 0 importers

nx_zpng.nx nx_shade.nx nx_syscalls.nx nx_zpng_test.nx

imports: nx_zpng.nxnx_shade.nxnx_syscalls.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main sys_mmap frect sh_rgb efill write_png_z sys_mmap ↻ zp_deflate sys_mmap ↻ zp_lsb zp_putbit zp_sym zp_huff zp_putbit ↻ zp_match1 zp_lencode zp_sym ↻ zp_lsb ↻ zp_huff ↻ zp_flush png_be32 png_adler32 png_crc32 sys_openat_wr sys_write sys_close aw sys_write ↻ an sys_write ↻ sys_mmap ↻ sys_exit

structs

none

consts

none

functions

7func aw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
called by 1: main calls 1: sys_write
8func an(v: i64) -> i64 { var m: i64=v; if m==0{sys_write(1,"0" as *u8,1);return 0} let t:*u8=sys_mmap(24); var k:i64=0; while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} let o:*u8=sys_mmap(24); var i:i64=0; while i<k{o[i]=t[k-1-i];i=i+1} sys_write(1,o,k); return 0 }
called by 1: main calls 2: sys_writesys_mmap
9func frect(fb: *i64, w: i64, h: i64, x0: i64, y0: i64, x1: i64, y1: i64, c: i64) -> i64 { var yy: i64=y0; if yy<0{yy=0} var ye: i64=y1; if ye>h{ye=h} while yy<ye{ var xx: i64=x0; if xx<0{xx=0} var xe: i64=x1; if xe>w{xe=w} while xx<xe{fb[yy*w+xx]=c; xx=xx+1} yy=yy+1 } return 0 }
called by 1: main
10func efill(fb: *i64, w: i64, h: i64, cx: i64, cy: i64, rx: i64, ry: i64, c: i64) -> i64 { var y: i64=cy-ry; while y<=cy+ry{ var x: i64=cx-rx; while x<=cx+rx{ let dx: i64=x-cx; let dy: i64=y-cy; if dx*dx*ry*ry+dy*dy*rx*rx<=rx*rx*ry*ry{ if x>=0{if x<w{if y>=0{if y<h{fb[y*w+x]=c}}}} } x=x+1 } y=y+1 } return 0 }
called by 1: main
12func main(argc: i64, argv: *i64) -> i64