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}