code wiki / (root) / _self_host_pack4_neg_test.nx

_self_host_pack4_neg_test.nx source

↩ module page · 22 lines · 661 B

1// Test pack4_i16 with negative first arg + vreduce_min. 2// expect_exit: 49 3import "nx_syscalls.nx" 4 5func pack4_i16(a: i64, b: i64, c: i64, d: i64) -> i64 { 6 return (a & 0xFFFF) 7 | ((b & 0xFFFF) << 16) 8 | ((c & 0xFFFF) << 32) 9 | ((d & 0xFFFF) << 48) 10} 11 12func main() -> i64 { 13 let a_raw: *u8 = sys_mmap(64) 14 let a: *i64 = a_raw as *i64 15 a[0] = pack4_i16(-30000, 100, 200, 300) 16 a[1] = pack4_i16(400, 500, 600, 700) 17 a[2] = pack4_i16(800, 900, 1000, 1100) 18 a[3] = pack4_i16(1200, 1300, 1400, 1500) 19 let r: i64 = __simd_vreduce_min_i16_x16(a as *i64) 20 // r should be -30000. r + 30001 = 1. 21 return r + 30001 22}