code wiki / (root) / _self_host_vdot_simple.nx

_self_host_vdot_simple.nx source

↩ module page · 20 lines · 538 B

1// vdot_simple.nx -- minimal sanity: dot([1,1,..1] . [1,1,..1]) = 16. 2import "nx_syscalls.nx" 3 4func main() -> i64 { 5 let a_raw: *u8 = sys_mmap(64) 6 let b_raw: *u8 = sys_mmap(64) 7 let a: *i64 = a_raw as *i64 8 let b: *i64 = b_raw as *i64 9 // 0x0001000100010001 = 4 lanes of value 1 packed in one i64. 10 let p4: i64 = 0x0001000100010001 11 a[0] = p4 12 a[1] = p4 13 a[2] = p4 14 a[3] = p4 15 b[0] = p4 16 b[1] = p4 17 b[2] = p4 18 b[3] = p4 19 return __simd_vdot_i16_x16(a as *i64, b as *i64) 20}