1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/asm.js/bug941877.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,143 @@ 1.4 +(function(stdlib, n, heap) { 1.5 + "use asm" 1.6 + var Int16ArrayView = new stdlib.Int16Array(heap); 1.7 + function f(i0, d1) { 1.8 + i0 = i0 | 0 1.9 + d1 = +d1 1.10 + var d2 = 1. 1.11 + var i3 = 0 1.12 + Int16ArrayView[0] = i0 1.13 + d2 = (.0 / .0) 1.14 + switch ((i0 + i0) | 0) { 1.15 + case 0: 1.16 + d2 = .0 1.17 + break 1.18 + }; 1.19 + (((i3 - (0 < 0)) >>> ((.0 < -0) + (.0 > .0))) / 0) >> (0 + (((0 + 0) ^ 1.20 +(9 > 0)) | 0)) 1.21 + } 1.22 +})(this, null, new ArrayBuffer(4096)); 1.23 + 1.24 +(function(stdlib, n, heap) { 1.25 + "use asm" 1.26 + var Float64ArrayView = new stdlib.Float64Array(heap) 1.27 + function f() { 1.28 + Float64ArrayView[0] = +(0xffffffff / 0xffffffff >> 0) 1.29 + } 1.30 +})(this, null, new ArrayBuffer(4096)); 1.31 + 1.32 +function test0(x) 1.33 +{ 1.34 + return (x >>> 0) % 10; 1.35 +} 1.36 +assertEq(test0(25), 5); 1.37 +assertEq(test0(24), 4); 1.38 +assertEq(test0(23), 3); 1.39 +assertEq(test0(0), 0); 1.40 +assertEq(test0(4294967295), 5); 1.41 + 1.42 +function test1(x) 1.43 +{ 1.44 + return (x >>> 2) % 10; 1.45 +} 1.46 +assertEq(test1(25), 6); 1.47 +assertEq(test1(24), 6); 1.48 +assertEq(test1(23), 5); 1.49 +assertEq(test1(4294967295), 3); 1.50 + 1.51 +function test2(x, y) 1.52 +{ 1.53 + return (x >>> 0) % (y >>> 0); 1.54 +} 1.55 +assertEq(test2(25, 3), 1); 1.56 +assertEq(test2(24, 4), 0); 1.57 +assertEq(test2(4294967295, 10), 5); 1.58 +assertEq(test2(23, 0), NaN); 1.59 + 1.60 +function test3() 1.61 +{ 1.62 + "use asm"; 1.63 + function f(x, y) 1.64 + { 1.65 + x = x|0; 1.66 + y = y|0; 1.67 + var t = 0; 1.68 + t = (x % y) > -2; 1.69 + return t|0; 1.70 + } 1.71 + return f; 1.72 +} 1.73 +assertEq(test3()(4294967290, 4294967295), 1); 1.74 +assertEq(test3()(4294967290, 4294967295), 1); 1.75 + 1.76 +function test4() 1.77 +{ 1.78 + "use asm"; 1.79 + function f(x, y) 1.80 + { 1.81 + x = x|0; 1.82 + y = y|0; 1.83 + var t = 0; 1.84 + t = ((x>>>0) % (y>>>0)) > -2; 1.85 + return t|0; 1.86 + } 1.87 + return f; 1.88 +} 1.89 +assertEq(test4()(4294967290, 4294967295), 1); 1.90 +assertEq(test4()(4294967290, 4294967295), 1); 1.91 + 1.92 +function test5() 1.93 +{ 1.94 + "use asm"; 1.95 + function f(x, y) 1.96 + { 1.97 + x = x|0; 1.98 + y = y|0; 1.99 + var t = 0; 1.100 + t = ((x>>>0) % (y>>>0)) * 1.01; 1.101 + return +t; 1.102 + } 1.103 + return f; 1.104 +} 1.105 +assertEq(test5()(4294967290, 4294967295), 4337916962.9); 1.106 +assertEq(test5()(4294967290, 4294967295), 4337916962.9); 1.107 + 1.108 +function test6() 1.109 +{ 1.110 + "use asm"; 1.111 + function f(x, y) 1.112 + { 1.113 + x = x|0; 1.114 + y = y|0; 1.115 + return ((x>>>1) % (y>>>1))|0; 1.116 + } 1.117 + return f; 1.118 +} 1.119 +assertEq(test6()(23847, 7), 1); 1.120 +assertEq(test6()(23848, 7), 2); 1.121 + 1.122 +function test7() 1.123 +{ 1.124 + "use asm"; 1.125 + function f(x) 1.126 + { 1.127 + x = x|0; 1.128 + return ((x>>>0) / 8)|0; 1.129 + } 1.130 + return f; 1.131 +} 1.132 +assertEq(test7()(23847, 7), 2980); 1.133 +assertEq(test7()(23848, 7), 2981); 1.134 + 1.135 +function test8() 1.136 +{ 1.137 + "use asm"; 1.138 + function f(i,j) 1.139 + { 1.140 + i=i|0;j=j|0; 1.141 + return ((i>>>0)/(j>>>0))|0; 1.142 + } 1.143 + return f; 1.144 +} 1.145 +assertEq(test8()(2147483647, 0), 0); 1.146 +assertEq(test8()(2147483646, 0), 0);