diff options
Diffstat (limited to 'docs/history/13-gap-fixes/code/tests/enhance.zc')
| -rw-r--r-- | docs/history/13-gap-fixes/code/tests/enhance.zc | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/docs/history/13-gap-fixes/code/tests/enhance.zc b/docs/history/13-gap-fixes/code/tests/enhance.zc deleted file mode 100644 index 6acc742..0000000 --- a/docs/history/13-gap-fixes/code/tests/enhance.zc +++ /dev/null @@ -1,29 +0,0 @@ -// custom opcodes: recipes, lifted vm code, several outputs, and a fallback -enhance clampadd(a, b) micro "a = add a b; a = min a 100; a = max a 0"; -enhance cube(x) vm { 0 $ 0 $ * * }; -enhance divmod(a, b) -> 2 micro "r2 = sdiv a b" "\n r1 = srem a b\n r0 = r2"; -enhance div7(a) micro "a = sdiv a 7"; -enhance urem10(a) micro "a = urem a 10"; -enhance hi(a, b) micro "a = mulhu a b"; -enhance noisy(x) vm { 0 $ . } else soft_noisy; // i/o can't be lifted, so calls use the fallback -fn soft_noisy(x) { return x + 1; } -let qq, rr, seed = 7; -fn rnd() { seed = seed * 1103515245 + 12345; return seed ^ (seed >> 11); } -fn main() -{ - let i = 0, a, bad = 0; - putn(clampadd(70, 50)); putc(' '); putn(clampadd(-50, 2)); putc(' '); putn(cube(7)); putc(' '); - asm { 17 5 divmod rr ! qq ! } - putn(qq); putc(','); putn(rr); putc(' '); - putn(noisy(4)); putc(' '); - putn(hi(-1, -1)); putc(' '); - while (i < 5000) { - a = rnd(); - if (div7(a) != zdiv(a, 7)) bad++; - if (urem10(a) < 0 || urem10(a) > 9) bad++; - if (a / (i + 1) != zdiv(a, i + 1)) bad++; - i++; - } - putn(bad); putc(10); - return 0; -} |
