load(libdir + "asm.js"); function FunctionBody(f) { var str = f.toString(); var firstBrace = str.indexOf('{'); var lastBrace = str.lastIndexOf('}'); return str.substr(firstBrace + 1, lastBrace - firstBrace - 1); } var F = (function (stdlib, n, heap) { var Int16ArrayView = new stdlib.Int16Array(heap); function f(i0, d1) { i0 = i0 | 0 d1 = +d1 var d2 = 1. var i3 = 0 Int16ArrayView[0] = i0 d2 = (.0 / .0) switch ((i0 + i0) | 0) { case 0: d2 = .0 break }; (((i3 - (0 < 0)) >>> ((.0 < -0) + (.0 > .0))) / 0) >> (0 + (((0 + 0) ^ (9 > 0)) | 0)) } return f; }); var compiled = asmCompile('stdlib', 'n', 'heap', USE_ASM + FunctionBody(F)); asmLink(compiled, this, null, new ArrayBuffer(BUF_MIN))(); var F = (function(stdlib, n, heap) { var Float64ArrayView = new stdlib.Float64Array(heap) function f() { Float64ArrayView[0] = +(0xffffffff / 0xffffffff >> 0) } return f; }); var compiled = asmCompile('stdlib', 'n', 'heap', USE_ASM + FunctionBody(F)); asmLink(compiled, this, null, new ArrayBuffer(BUF_MIN))(); function test0(x) { return (x >>> 0) % 10; } assertEq(test0(25), 5); assertEq(test0(24), 4); assertEq(test0(23), 3); assertEq(test0(0), 0); assertEq(test0(4294967295), 5); function test1(x) { return (x >>> 2) % 10; } assertEq(test1(25), 6); assertEq(test1(24), 6); assertEq(test1(23), 5); assertEq(test1(4294967295), 3); function test2(x, y) { return (x >>> 0) % (y >>> 0); } assertEq(test2(25, 3), 1); assertEq(test2(24, 4), 0); assertEq(test2(4294967295, 10), 5); assertEq(test2(23, 0), NaN); function test3() { function f(x, y) { x = x|0; y = y|0; var t = 0; t = (((x|0) % (y|0))|0) > -2; return t|0; } return f; } var compiled = asmCompile(USE_ASM + FunctionBody(test3)); var linked = asmLink(compiled); assertEq(linked(4294967290, 4294967295), 1); assertEq(linked(4294967290, 4294967295), 1); function test4() { function f(x, y) { x = x|0; y = y|0; var t = 0; t = (((x>>>0) % (y>>>0)) >>> 0) > 0; return t|0; } return f; } var compiled = asmCompile(USE_ASM + FunctionBody(test4)); var linked = asmLink(compiled); assertEq(linked(4294967290, 4294967295), 1); assertEq(linked(4294967290, 4294967295), 1); function test5() { function f(x, y) { x = x|0; y = y|0; var t = 0.; t = +(((x>>>0) % (y>>>0)) >>> 0) * 1.01; return +t; } return f; } var compiled = asmCompile(USE_ASM + FunctionBody(test5)); var linked = asmLink(compiled); assertEq(linked(4294967290, 4294967295), 4337916962.9); assertEq(linked(4294967290, 4294967295), 4337916962.9); function test6() { function f(x, y) { x = x|0; y = y|0; return ((x>>>1) % (y>>>1))|0; } return f; } var compiled = asmCompile(USE_ASM + FunctionBody(test6)); var linked = asmLink(compiled); assertEq(linked(23847, 7), 1); assertEq(linked(23848, 7), 2); function test7() { function f(x) { x = x|0; return ((x>>>0) / 8)|0; } return f; } var compiled = asmCompile(USE_ASM + FunctionBody(test7)); var linked = asmLink(compiled); assertEq(linked(23847, 7), 2980); assertEq(linked(23848, 7), 2981); function test8() { function f(i,j) { i=i|0;j=j|0; return ((i>>>0)/(j>>>0))|0; } return f; } var compiled = asmCompile(USE_ASM + FunctionBody(test8)); var linked = asmLink(compiled); assertEq(linked(2147483647, 0), 0); assertEq(linked(2147483646, 0), 0);