1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/bug681185.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,276 @@ 1.4 +function test_lsh(x, y) { 1.5 + return x << y; 1.6 +} 1.7 + 1.8 +function test_ursh(x, y) { 1.9 + return x >>> y; 1.10 +} 1.11 + 1.12 +function test_rsh(x, y) { 1.13 + return x >> y; 1.14 +} 1.15 + 1.16 +var x = 1; 1.17 +assertEq(test_rsh(x, -1), 0); 1.18 +assertEq(test_rsh(-1, x), -1); 1.19 +assertEq(test_ursh(x, -1), 0); 1.20 +assertEq(test_ursh(-1, x), 2147483647); 1.21 +assertEq(test_lsh(x, -1), -2147483648); 1.22 +assertEq(test_lsh(-1, x), -2); 1.23 +assertEq(test_rsh(x, 1), 0); 1.24 +assertEq(test_rsh(1, x), 0); 1.25 +assertEq(test_ursh(x, 1), 0); 1.26 +assertEq(test_ursh(1, x), 0); 1.27 +assertEq(test_lsh(x, 1), 2); 1.28 +assertEq(test_lsh(1, x), 2); 1.29 +assertEq(test_rsh(x, 0), 1); 1.30 +assertEq(test_rsh(0, x), 0); 1.31 +assertEq(test_ursh(x, 0), 1); 1.32 +assertEq(test_ursh(0, x), 0); 1.33 +assertEq(test_lsh(x, 0), 1); 1.34 +assertEq(test_lsh(0, x), 0); 1.35 +assertEq(test_rsh(x, 0xffffffff), 0); 1.36 +assertEq(test_rsh(0xffffffff, x), -1); 1.37 +assertEq(test_ursh(x, 0xffffffff), 0); 1.38 +assertEq(test_ursh(0xffffffff, x), 2147483647); 1.39 +assertEq(test_lsh(x, 0xffffffff), -2147483648); 1.40 +assertEq(test_lsh(0xffffffff, x), -2); 1.41 +assertEq(test_rsh(x, "10.6"), 0); 1.42 +assertEq(test_rsh("10.6", x), 5); 1.43 +assertEq(test_ursh(x, "10.6"), 0); 1.44 +assertEq(test_ursh("10.6", x), 5); 1.45 +assertEq(test_lsh(x, "10.6"), 1024); 1.46 +assertEq(test_lsh("10.6", x), 20); 1.47 +assertEq(test_rsh(x, 2147483648), 1); 1.48 +assertEq(test_rsh(2147483648, x), -1073741824); 1.49 +assertEq(test_ursh(x, 2147483648), 1); 1.50 +assertEq(test_ursh(2147483648, x), 1073741824); 1.51 +assertEq(test_lsh(x, 2147483648), 1); 1.52 +assertEq(test_lsh(2147483648, x), 0); 1.53 +assertEq(test_rsh(x, 4294967296), 1); 1.54 +assertEq(test_rsh(4294967296, x), 0); 1.55 +assertEq(test_ursh(x, 4294967296), 1); 1.56 +assertEq(test_ursh(4294967296, x), 0); 1.57 +assertEq(test_lsh(x, 4294967296), 1); 1.58 +assertEq(test_lsh(4294967296, x), 0); 1.59 +assertEq(test_rsh(x, undefined), 1); 1.60 +assertEq(test_rsh(undefined, x), 0); 1.61 +assertEq(test_ursh(x, undefined), 1); 1.62 +assertEq(test_ursh(undefined, x), 0); 1.63 +assertEq(test_lsh(x, undefined), 1); 1.64 +assertEq(test_lsh(undefined, x), 0); 1.65 +assertEq(test_rsh(x, null), 1); 1.66 +assertEq(test_rsh(null, x), 0); 1.67 +assertEq(test_ursh(x, null), 1); 1.68 +assertEq(test_ursh(null, x), 0); 1.69 +assertEq(test_lsh(x, null), 1); 1.70 +assertEq(test_lsh(null, x), 0); 1.71 +assertEq(test_rsh(x, false), 1); 1.72 +assertEq(test_rsh(false, x), 0); 1.73 +assertEq(test_ursh(x, false), 1); 1.74 +assertEq(test_ursh(false, x), 0); 1.75 +assertEq(test_lsh(x, false), 1); 1.76 +assertEq(test_lsh(false, x), 0); 1.77 +assertEq(test_rsh(x, true), 0); 1.78 +assertEq(test_rsh(true, x), 0); 1.79 +assertEq(test_ursh(x, true), 0); 1.80 +assertEq(test_ursh(true, x), 0); 1.81 +assertEq(test_lsh(x, true), 2); 1.82 +assertEq(test_lsh(true, x), 2); 1.83 +assertEq(test_rsh(x, -1.5), 0); 1.84 +assertEq(test_rsh(-1.5, x), -1); 1.85 +assertEq(test_ursh(x, -1.5), 0); 1.86 +assertEq(test_ursh(-1.5, x), 2147483647); 1.87 +assertEq(test_lsh(x, -1.5), -2147483648); 1.88 +assertEq(test_lsh(-1.5, x), -2); 1.89 + 1.90 +var x = 0; 1.91 +assertEq(test_rsh(x, -1), 0); 1.92 +assertEq(test_rsh(-1, x), -1); 1.93 +assertEq(test_ursh(x, -1), 0); 1.94 +assertEq(test_ursh(-1, x), 4294967295); 1.95 +assertEq(test_lsh(x, -1), 0); 1.96 +assertEq(test_lsh(-1, x), -1); 1.97 +assertEq(test_rsh(x, 1), 0); 1.98 +assertEq(test_rsh(1, x), 1); 1.99 +assertEq(test_ursh(x, 1), 0); 1.100 +assertEq(test_ursh(1, x), 1); 1.101 +assertEq(test_lsh(x, 1), 0); 1.102 +assertEq(test_lsh(1, x), 1); 1.103 +assertEq(test_rsh(x, 0), 0); 1.104 +assertEq(test_rsh(0, x), 0); 1.105 +assertEq(test_ursh(x, 0), 0); 1.106 +assertEq(test_ursh(0, x), 0); 1.107 +assertEq(test_lsh(x, 0), 0); 1.108 +assertEq(test_lsh(0, x), 0); 1.109 +assertEq(test_rsh(x, 0xffffffff), 0); 1.110 +assertEq(test_rsh(0xffffffff, x), -1); 1.111 +assertEq(test_ursh(x, 0xffffffff), 0); 1.112 +assertEq(test_ursh(0xffffffff, x), 4294967295); 1.113 +assertEq(test_lsh(x, 0xffffffff), 0); 1.114 +assertEq(test_lsh(0xffffffff, x), -1); 1.115 +assertEq(test_rsh(x, "10.6"), 0); 1.116 +assertEq(test_rsh("10.6", x), 10); 1.117 +assertEq(test_ursh(x, "10.6"), 0); 1.118 +assertEq(test_ursh("10.6", x), 10); 1.119 +assertEq(test_lsh(x, "10.6"), 0); 1.120 +assertEq(test_lsh("10.6", x), 10); 1.121 +assertEq(test_rsh(x, 2147483648), 0); 1.122 +assertEq(test_rsh(2147483648, x), -2147483648); 1.123 +assertEq(test_ursh(x, 2147483648), 0); 1.124 +assertEq(test_ursh(2147483648, x), 2147483648); 1.125 +assertEq(test_lsh(x, 2147483648), 0); 1.126 +assertEq(test_lsh(2147483648, x), -2147483648); 1.127 +assertEq(test_rsh(x, 4294967296), 0); 1.128 +assertEq(test_rsh(4294967296, x), 0); 1.129 +assertEq(test_ursh(x, 4294967296), 0); 1.130 +assertEq(test_ursh(4294967296, x), 0); 1.131 +assertEq(test_lsh(x, 4294967296), 0); 1.132 +assertEq(test_lsh(4294967296, x), 0); 1.133 +assertEq(test_rsh(x, undefined), 0); 1.134 +assertEq(test_rsh(undefined, x), 0); 1.135 +assertEq(test_ursh(x, undefined), 0); 1.136 +assertEq(test_ursh(undefined, x), 0); 1.137 +assertEq(test_lsh(x, undefined), 0); 1.138 +assertEq(test_lsh(undefined, x), 0); 1.139 +assertEq(test_rsh(x, null), 0); 1.140 +assertEq(test_rsh(null, x), 0); 1.141 +assertEq(test_ursh(x, null), 0); 1.142 +assertEq(test_ursh(null, x), 0); 1.143 +assertEq(test_lsh(x, null), 0); 1.144 +assertEq(test_lsh(null, x), 0); 1.145 +assertEq(test_rsh(x, false), 0); 1.146 +assertEq(test_rsh(false, x), 0); 1.147 +assertEq(test_ursh(x, false), 0); 1.148 +assertEq(test_ursh(false, x), 0); 1.149 +assertEq(test_lsh(x, false), 0); 1.150 +assertEq(test_lsh(false, x), 0); 1.151 +assertEq(test_rsh(x, true), 0); 1.152 +assertEq(test_rsh(true, x), 1); 1.153 +assertEq(test_ursh(x, true), 0); 1.154 +assertEq(test_ursh(true, x), 1); 1.155 +assertEq(test_lsh(x, true), 0); 1.156 +assertEq(test_lsh(true, x), 1); 1.157 +assertEq(test_rsh(x, -1.5), 0); 1.158 +assertEq(test_rsh(-1.5, x), -1); 1.159 +assertEq(test_ursh(x, -1.5), 0); 1.160 +assertEq(test_ursh(-1.5, x), 4294967295); 1.161 +assertEq(test_lsh(x, -1.5), 0); 1.162 +assertEq(test_lsh(-1.5, x), -1); 1.163 + 1.164 +var x = -1; 1.165 +assertEq(test_rsh(x, -1), -1); 1.166 +assertEq(test_rsh(-1, x), -1); 1.167 +assertEq(test_ursh(x, -1), 1); 1.168 +assertEq(test_ursh(-1, x), 1); 1.169 +assertEq(test_lsh(x, -1), -2147483648); 1.170 +assertEq(test_lsh(-1, x), -2147483648); 1.171 +assertEq(test_rsh(x, 1), -1); 1.172 +assertEq(test_rsh(1, x), 0); 1.173 +assertEq(test_ursh(x, 1), 2147483647); 1.174 +assertEq(test_ursh(1, x), 0); 1.175 +assertEq(test_lsh(x, 1), -2); 1.176 +assertEq(test_lsh(1, x), -2147483648); 1.177 +assertEq(test_rsh(x, 0), -1); 1.178 +assertEq(test_rsh(0, x), 0); 1.179 +assertEq(test_ursh(x, 0), 4294967295); 1.180 +assertEq(test_ursh(0, x), 0); 1.181 +assertEq(test_lsh(x, 0), -1); 1.182 +assertEq(test_lsh(0, x), 0); 1.183 +assertEq(test_rsh(x, 0xffffffff), -1); 1.184 +assertEq(test_rsh(0xffffffff, x), -1); 1.185 +assertEq(test_ursh(x, 0xffffffff), 1); 1.186 +assertEq(test_ursh(0xffffffff, x), 1); 1.187 +assertEq(test_lsh(x, 0xffffffff), -2147483648); 1.188 +assertEq(test_lsh(0xffffffff, x), -2147483648); 1.189 +assertEq(test_rsh(x, "10.6"), -1); 1.190 +assertEq(test_rsh("10.6", x), 0); 1.191 +assertEq(test_ursh(x, "10.6"), 4194303); 1.192 +assertEq(test_ursh("10.6", x), 0); 1.193 +assertEq(test_lsh(x, "10.6"), -1024); 1.194 +assertEq(test_lsh("10.6", x), 0); 1.195 +assertEq(test_rsh(x, 2147483648), -1); 1.196 +assertEq(test_rsh(2147483648, x), -1); 1.197 +assertEq(test_ursh(x, 2147483648), 4294967295); 1.198 +assertEq(test_ursh(2147483648, x), 1); 1.199 +assertEq(test_lsh(x, 2147483648), -1); 1.200 +assertEq(test_lsh(2147483648, x), 0); 1.201 +assertEq(test_rsh(x, 4294967296), -1); 1.202 +assertEq(test_rsh(4294967296, x), 0); 1.203 +assertEq(test_ursh(x, 4294967296), 4294967295); 1.204 +assertEq(test_ursh(4294967296, x), 0); 1.205 +assertEq(test_lsh(x, 4294967296), -1); 1.206 +assertEq(test_lsh(4294967296, x), 0); 1.207 +assertEq(test_rsh(x, undefined), -1); 1.208 +assertEq(test_rsh(undefined, x), 0); 1.209 +assertEq(test_ursh(x, undefined), 4294967295); 1.210 +assertEq(test_ursh(undefined, x), 0); 1.211 +assertEq(test_lsh(x, undefined), -1); 1.212 +assertEq(test_lsh(undefined, x), 0); 1.213 +assertEq(test_rsh(x, null), -1); 1.214 +assertEq(test_rsh(null, x), 0); 1.215 +assertEq(test_ursh(x, null), 4294967295); 1.216 +assertEq(test_ursh(null, x), 0); 1.217 +assertEq(test_lsh(x, null), -1); 1.218 +assertEq(test_lsh(null, x), 0); 1.219 +assertEq(test_rsh(x, false), -1); 1.220 +assertEq(test_rsh(false, x), 0); 1.221 +assertEq(test_ursh(x, false), 4294967295); 1.222 +assertEq(test_ursh(false, x), 0); 1.223 +assertEq(test_lsh(x, false), -1); 1.224 +assertEq(test_lsh(false, x), 0); 1.225 +assertEq(test_rsh(x, true), -1); 1.226 +assertEq(test_rsh(true, x), 0); 1.227 +assertEq(test_ursh(x, true), 2147483647); 1.228 +assertEq(test_ursh(true, x), 0); 1.229 +assertEq(test_lsh(x, true), -2); 1.230 +assertEq(test_lsh(true, x), -2147483648); 1.231 +assertEq(test_rsh(x, -1.5), -1); 1.232 +assertEq(test_rsh(-1.5, x), -1); 1.233 +assertEq(test_ursh(x, -1.5), 1); 1.234 +assertEq(test_ursh(-1.5, x), 1); 1.235 +assertEq(test_lsh(x, -1.5), -2147483648); 1.236 +assertEq(test_lsh(-1.5, x), -2147483648); 1.237 + 1.238 + 1.239 + 1.240 +assertEq(test_ursh(0, -2147483648), 0); 1.241 +assertEq(test_ursh(0, 2147483648), 0); 1.242 +assertEq(test_ursh(0, 45), 0); 1.243 +assertEq(test_ursh(0, -45), 0); 1.244 +assertEq(test_ursh(100, -2147483648), 100); 1.245 +assertEq(test_ursh(100, 2147483648), 100); 1.246 +assertEq(test_ursh(100, 45), 0); 1.247 +assertEq(test_ursh(100, -45), 0); 1.248 +assertEq(test_ursh(-100, -2147483648), 4294967196); 1.249 +assertEq(test_ursh(-100, 2147483648), 4294967196); 1.250 +assertEq(test_ursh(-100, 45), 524287); 1.251 +assertEq(test_ursh(-100, -45), 8191); 1.252 + 1.253 + 1.254 + 1.255 +function test1() { 1.256 + var i = 0; 1.257 + return 2147483647 >>> i; 1.258 +} 1.259 +assertEq(test1(), 2147483647); 1.260 +function test2() { 1.261 + var i = 1; 1.262 + return 2147483647 >>> i; 1.263 +} 1.264 +assertEq(test2(), 1073741823); 1.265 +function test3() { 1.266 + var i = 0; 1.267 + return -1 >>> i; 1.268 +} 1.269 +assertEq(test3(), 4294967295); 1.270 +function test4() { 1.271 + var i = 3; 1.272 + return -1 >>> i; 1.273 +} 1.274 +assertEq(test4(), 536870911); 1.275 +function test5() { 1.276 + var i = 0; 1.277 + return -3648 >>> i; 1.278 +} 1.279 +assertEq(test5(), 4294963648);