code wiki / _hdl_build / _resynth_clamp.nx
_resynth_clamp.nx source
↩ module page · 53 lines · 1741 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_min(b, _c_max(a, 0)) }
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] = 5
23 kb[0] = 10
24 kx[0] = 5
25 ka[1] = 0 - 3
26 kb[1] = 10
27 kx[1] = 0
28 ka[2] = 15
29 kb[2] = 10
30 kx[2] = 10
31 ka[3] = 0
32 kb[3] = 0
33 kx[3] = 0
34 ka[4] = 0 - 100
35 kb[4] = 50
36 kx[4] = 0
37 ka[5] = 7
38 kb[5] = 7
39 kx[5] = 7
40 ka[6] = 100
41 kb[6] = 3
42 kx[6] = 3
43 ka[7] = 0 - 1
44 kb[7] = 0
45 kx[7] = 0
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}