_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}