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