code wiki / (root) / nx_simd_probe.nx

nx_simd_probe.nx source

↩ module page · 30 lines · 1127 B

1// nx_simd_probe.nx -- confirm the __simd i16x16 vdot intrinsics compile + work in a nx_syscalls organ. 2// 3// After threading hit an nx_thread/nx_kernel_v2-vs-nx_syscalls base-import wall, this checks the SIMD path 4// is viable in the gguf/q4k import context (nx_syscalls-based): the __simd_* are COMPILER INTRINSICS (no 5// library import), so they should compose. Known-answer: dot([1..16],[1..16]) = sum(i^2)=1496. 6// license_tier: ORIGINAL 7import "nx_syscalls.nx" 8import "nx_tier.nx" 9 10func sp_pack4(a: i64, b: i64, c: i64, d: i64) -> i64 { 11 return (a & 0xFFFF) | ((b & 0xFFFF) << 16) | ((c & 0xFFFF) << 32) | ((d & 0xFFFF) << 48) 12} 13 14func main() -> i64 { 15 let a: *i64 = sys_mmap(64) as *i64 16 let b: *i64 = sys_mmap(64) as *i64 17 a[0] = sp_pack4(1, 2, 3, 4) 18 a[1] = sp_pack4(5, 6, 7, 8) 19 a[2] = sp_pack4(9, 10, 11, 12) 20 a[3] = sp_pack4(13, 14, 15, 16) 21 b[0] = a[0] 22 b[1] = a[1] 23 b[2] = a[2] 24 b[3] = a[3] 25 let va: i64 = __simd_vload_i16_x16(a as *i64) 26 let vb: i64 = __simd_vload_i16_x16(b as *i64) 27 let s: i64 = __simd_vdot_i16_x16(va, vb) 28 if s != 1496 { return 1 } 29 return 0 30}