nx_qwen_extract_gate.nx source
↩ module page · 47 lines · 1906 B
1// nx_qwen_extract_gate.nx -- unit test for nx_qwen_extract: build a synthetic qabench g[] (1 paragraph, 2
2// sentences, a question), boot Qwen, qwx_extract, print the answer. Proves the module compiles AND the qabench
3// g[] slot contract (4=question, 15/16/17/18=sentence bytes/off/len/para, 19=ns) works end-to-end BEFORE wiring
4// into the large/contended nx_qabench. Liar-kill: the answer must contain "Miller". license_tier: ORIGINAL
5import "nx_syscalls.nx"
6import "nx_qwen_extract.nx"
7
8func qeg_ps(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
9
10func main(argc: i64, argv: *i64) -> i64 {
11 qeg_ps("=== nx_qwen_extract unit test ===\n" as *u8)
12 let g: *i64 = sys_mmap(64*8) as *i64
13 let sb: *u8 = sys_mmap(512)
14 let s0: *u8 = "Von Miller forced four fumbles for the Broncos in the 2015 season." as *u8
15 let s1: *u8 = "The Denver Broncos won Super Bowl 50 over the Carolina Panthers." as *u8
16 let so: *i64 = sys_mmap(16*8) as *i64
17 let sl: *i64 = sys_mmap(16*8) as *i64
18 let sp: *i64 = sys_mmap(16*8) as *i64
19 var o: i64 = 0
20 var l0: i64 = 0
21 while s0[l0]!=(0 as u8) { sb[o]=s0[l0]; o=o+1; l0=l0+1 }
22 so[0]=0
23 sl[0]=l0
24 sp[0]=0
25 let base1: i64 = o
26 var l1: i64 = 0
27 while s1[l1]!=(0 as u8) { sb[o]=s1[l1]; o=o+1; l1=l1+1 }
28 so[1]=base1
29 sl[1]=l1
30 sp[1]=0
31 g[15]=sb as i64
32 g[16]=so as i64
33 g[17]=sl as i64
34 g[18]=sp as i64
35 g[19]=2
36 g[4]="Who forced four fumbles for the Broncos in the 2015 season?" as i64
37
38 qeg_ps("loading Qwen (nsv_init)...\n" as *u8)
39 let rc: i64 = qwx_load()
40 if rc != 0 { qeg_ps("qwx_load FAILED rc!=0\n" as *u8); return 1 }
41 let pred: *u8 = sys_mmap(256)
42 let ok: i64 = qwx_extract(g, 0, pred)
43 if ok == 1 { qeg_ps("ok=1 answer=[" as *u8) } else { qeg_ps("ok=0 answer=[" as *u8) }
44 qeg_ps(pred)
45 qeg_ps("]\n" as *u8)
46 return 0
47}