code wiki / _hdl_build / _resynth_bitfield.nx
_resynth_bitfield.nx source
↩ module page · 53 lines · 1729 B
1// RE-SYNTHESIZED BY THE NISHI TEAM (_type_search_authored): derived from KATs by
2// observational-equivalence search over a primitive pool. NOT retrieved -- the pool
3// holds no team function bodies. Silent main: exit 0 iff every KAT passes.
4import "nx_syscalls.nx"
5func _c_le(a: i64, b: i64) -> i64 { if a <= b { return 1 } return 0 }
6func _c_and(a: i64, b: i64) -> i64 { return a & b }
7func _c_shr(a: i64, b: i64) -> i64 { return a >> (b & 63) }
8func _c_min(a: i64, b: i64) -> i64 { if a < b { return a } return b }
9func _c_max(a: i64, b: i64) -> i64 { if a > b { return a } return b }
10func _c_add(a: i64, b: i64) -> i64 { return a + b }
11func _c_sub(a: i64, b: i64) -> i64 { return a - b }
12func _c_mul(a: i64, b: i64) -> i64 { return a * b }
13func _c_shl(a: i64, b: i64) -> i64 { return a << (b & 63) }
14func _c_div(a: i64, b: i64) -> i64 { if b == 0 { return 0 } return a / b }
15func _c_mod(a: i64, b: i64) -> i64 { if b == 0 { return 0 } return a % b }
16func _c_abs(a: i64) -> i64 { if a < 0 { return 0 - a } return a }
17func resynth(a: i64, b: i64) -> i64 { return _c_and(7, _c_shr(a, b)) }
18func main() -> i64 {
19 let ka: *i64 = sys_mmap(64) as *i64
20 let kb: *i64 = sys_mmap(64) as *i64
21 let kx: *i64 = sys_mmap(64) as *i64
22 ka[0] = 180
23 kb[0] = 2
24 kx[0] = 5
25 ka[1] = 255
26 kb[1] = 0
27 kx[1] = 7
28 ka[2] = 8
29 kb[2] = 3
30 kx[2] = 1
31 ka[3] = 1023
32 kb[3] = 7
33 kx[3] = 7
34 ka[4] = 64
35 kb[4] = 6
36 kx[4] = 1
37 ka[5] = 7
38 kb[5] = 0
39 kx[5] = 7
40 ka[6] = 256
41 kb[6] = 8
42 kx[6] = 1
43 ka[7] = 5
44 kb[7] = 1
45 kx[7] = 2
46 var i: i64 = 0
47 while i < 8 {
48 if resynth(ka[i], kb[i]) != kx[i] { sys_exit(1) }
49 i = i + 1
50 }
51 sys_exit(0)
52 return 0
53}