code wiki / _hdl_build / nx_team_tick.nx

nx_team_tick.nx source

↩ module page · 96 lines · 5486 B

1// nx_team_tick.nx -- the team's AUTONOMY TICK: one self-contained beat of the whole self- 2// improvement loop, so it runs INDEPENDENTLY (wrap in a loop / cron) or on the operator's 3// TRIGGER (just run it). One tick exercises the full stack, bits-up, end to end: 4// GATE level -- synthesize a boolean circuit (majority) + verify EXACTLY (truth table) 5// MACHINE level -- synthesize+emit a multiply (x*C) + verify BY EXECUTION 6// RACE -- cost it vs the newest gcc, classify the standing 7// REPORT -- one honest line + TICK COMPLETE 8// Everything sovereign (the team's own generators/verifiers/racer); no human in the beat. 9 10import "nx_mulchain.nx" 11import "nx_superopt_emit.nx" 12import "nx_engineer_crash.nx" 13import "nx_gcc_race.nx" 14import "nx_boolsynth.nx" 15const K_MAGIC_8192: i64 = 8192 16 17func tk_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 18func tk_num(v: i64) -> i64 { 19 let bb: *u8 = sys_mmap(28); var m: i64 = v; if m < 0 { m = 0 - m } 20 let t: *u8 = sys_mmap(28); var k: i64 = 0 21 if m == 0 { t[0] = 48; k = 1 } 22 while m > 0 { t[k] = 48 + (m % 10); m = m / 10; k = k + 1 } 23 if v < 0 { tk_puts("-" as *u8) } 24 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 25 sys_write(1, bb, k); return 0 26} 27func tk_bwrite(path: *u8, buf: *u8, len: i64) -> i64 { let fd: i64 = sys_openat_wr(path, 0x1a4); if fd < 0 { return 0 - 1 } sys_write(fd, buf, len); sys_close(fd); return 0 } 28func tk_genc(c: i64, path: *u8) -> i64 { 29 let buf: *u8 = sys_mmap(128); var oi: i64 = 0 30 let pre: *u8 = "long f(long x){return x*" as *u8 31 var j: i64 = 0; while pre[j] != (0 as u8) { buf[oi] = pre[j]; oi = oi + 1; j = j + 1 } 32 let t: *u8 = sys_mmap(28); var m: i64 = c; var k: i64 = 0; if m == 0 { t[0]=48; k=1 } 33 while m > 0 { t[k] = 48 + (m % 10); m = m / 10; k = k + 1 } 34 var i: i64 = 0; while i < k { buf[oi] = t[k-1-i]; oi = oi + 1; i = i + 1 } 35 let post: *u8 = ";}\n" as *u8 36 j = 0; while post[j] != (0 as u8) { buf[oi] = post[j]; oi = oi + 1; j = j + 1 } 37 tk_bwrite(path, buf, oi); return 0 38} 39// evaluate a boolean circuit on the magic columns -> truth-table byte 40func tk_booleval(op: *i64, a: *i64, b: *i64, L: i64) -> i64 { 41 let sv: *i64 = sys_mmap(8 * (L + 6)) as *i64 42 sv[0] = BL_A; sv[1] = BL_B; sv[2] = BL_C 43 var t: i64 = 0 44 while t < L { sv[t+3] = bl_eval(op[t], sv[a[t]], sv[b[t]]); t = t + 1 } 45 return sv[L+2] & 255 46} 47 48// run ONE tick; out: 0=mc_verified 1=mc_cost 2=gcc_cost 3=gate_verified 4=gate_gates 5=verdict 49func tk_run(out: *i64) -> i64 { 50 // GATE LEVEL: synthesize + exactly verify a boolean circuit (majority) 51 let bop: *i64 = sys_mmap(8*12) as *i64; let ba: *i64 = sys_mmap(8*12) as *i64; let bb2: *i64 = sys_mmap(8*12) as *i64 52 let gL: i64 = bl_find(232, bop, ba, bb2, 6) 53 out[4] = gL 54 out[3] = 0; if gL > 0 { if tk_booleval(bop, ba, bb2, gL) == 232 { out[3] = 1 } } 55 // MACHINE LEVEL: synthesize + emit + verify by execution a multiply 56 let c: i64 = 45 57 let op: *i64 = sys_mmap(8*12) as *i64; let a: *i64 = sys_mmap(8*12) as *i64; let b: *i64 = sys_mmap(8*12) as *i64 58 let dd: *i64 = sys_mmap(8*16) as *i64; let buf: *u8 = sys_mmap(K_MAGIC_8192); let icnt: *i64 = sys_mmap(8) as *i64 59 dd[0]=5; dd[1]=0-8; dd[2]=123; dd[3]=0-456; dd[4]=77; dd[5]=0-1; dd[6]=1000; dd[7]=0-1000 60 var ref: i64 = 0; var kk: i64 = 0; while kk < 8 { ref = ref + dd[kk]*c; kk = kk+1 }; ref = ref & 255 61 let L: i64 = mulchain_find(c, 8, op, a, b) 62 let blen: i64 = se_emit_full(op, a, b, L, dd, 8, buf, icnt) 63 tk_bwrite("/tmp/tk.s" as *u8, buf, blen) 64 out[0] = 0 65 if eng_link("/tmp/tk.s" as *u8, "/tmp/tk.elf" as *u8) == 0 { if eng_run("/tmp/tk.elf" as *u8, 0 as *u8) == ref { out[0] = 1 } } 66 out[1] = gr_cost_obj("/tmp/tk.elf" as *u8, "/tmp/tk_t.txt" as *u8, "synth" as *u8) 67 tk_genc(c, "/tmp/tk.c" as *u8) 68 let gcc: *u8 = gr_newest_gcc() 69 gr_race_cv(gcc, "/tmp/tk.c" as *u8, "/tmp/tk.o" as *u8, "/tmp/tk_g.txt" as *u8, "f" as *u8) 70 out[2] = gr_cost_obj("/tmp/tk.o" as *u8, "/tmp/tk_gc.txt" as *u8, "f" as *u8) 71 out[5] = 0 72 if out[2] > 0 { if out[1] < out[2] { out[5] = 1 } if out[1] > out[2] { out[5] = 0 - 1 } } 73 return 0 74} 75 76func tk_main(r: *i64) -> i64 { 77 tk_puts("=== TEAM AUTONOMY TICK (trigger me, or loop me) -- one beat of the whole self-improvement loop ===\n" as *u8) 78 let out: *i64 = sys_mmap(8 * 8) as *i64 79 tk_run(out) 80 tk_puts(" GATE level : synthesized majority = " as *u8); tk_num(out[4]); tk_puts(" gates, exact-verified " as *u8); if out[3]==1 {tk_puts("OK\n" as *u8)} else {tk_puts("FAIL\n" as *u8)} 81 tk_puts(" MACHINE level: synthesized+emitted x*45, exec-verified " as *u8); if out[0]==1 {tk_puts("OK" as *u8)} else {tk_puts("FAIL" as *u8)} 82 tk_puts(" cost " as *u8); tk_num(out[1]); tk_puts(" vs gcc " as *u8); tk_num(out[2]); tk_puts(" -> " as *u8) 83 if out[5]==1 {tk_puts("EXCEED\n" as *u8)} else { if out[5]==0 {tk_puts("parity\n" as *u8)} else {tk_puts("behind\n" as *u8)} } 84 tk_puts("----------------------------------------------------------------\n" as *u8) 85 tk_puts(" TICK COMPLETE -- bits-up (gate + machine) synthesized + verified this beat, sovereign. trigger again to loop.\n" as *u8) 86 r[0] = 0; if out[3] == 1 { if out[0] == 1 { r[0] = 1 } } 87 return 1 88} 89 90func main() -> i64 { 91 let r: *i64 = sys_mmap(8 * 4) as *i64 92 tk_main(r) 93 var ec: i64 = 0; if r[0] != 1 { ec = 1 } 94 sys_exit(ec) 95 return ec 96}