1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/basic/testBitopWithConstan.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,741 @@ 1.4 +function test1 (x) { 1.5 + assertEq(x | -1, -1); 1.6 + assertEq(-1 | x, -1); 1.7 + assertEq(x & -1, 1); 1.8 + assertEq(-1 & x, 1); 1.9 + assertEq(x ^ -1, -2); 1.10 + assertEq(-1 ^ x, -2); 1.11 + assertEq(x >> -1, 0); 1.12 + assertEq(-1 >> x, -1); 1.13 + assertEq(x >>> -1, 0); 1.14 + assertEq(-1 >>> x, 2147483647); 1.15 + assertEq(x << -1, -2147483648); 1.16 + assertEq(-1 << x, -2); 1.17 + assertEq(x | 1, 1); 1.18 + assertEq(1 | x, 1); 1.19 + assertEq(x & 1, 1); 1.20 + assertEq(1 & x, 1); 1.21 + assertEq(x ^ 1, 0); 1.22 + assertEq(1 ^ x, 0); 1.23 + assertEq(x >> 1, 0); 1.24 + assertEq(1 >> x, 0); 1.25 + assertEq(x >>> 1, 0); 1.26 + assertEq(1 >>> x, 0); 1.27 + assertEq(x << 1, 2); 1.28 + assertEq(1 << x, 2); 1.29 + assertEq(x | 0, 1); 1.30 + assertEq(0 | x, 1); 1.31 + assertEq(x & 0, 0); 1.32 + assertEq(0 & x, 0); 1.33 + assertEq(x ^ 0, 1); 1.34 + assertEq(0 ^ x, 1); 1.35 + assertEq(x >> 0, 1); 1.36 + assertEq(0 >> x, 0); 1.37 + assertEq(x >>> 0, 1); 1.38 + assertEq(0 >>> x, 0); 1.39 + assertEq(x << 0, 1); 1.40 + assertEq(0 << x, 0); 1.41 + assertEq(x | 0xffffffff, -1); 1.42 + assertEq(0xffffffff | x, -1); 1.43 + assertEq(x & 0xffffffff, 1); 1.44 + assertEq(0xffffffff & x, 1); 1.45 + assertEq(x ^ 0xffffffff, -2); 1.46 + assertEq(0xffffffff ^ x, -2); 1.47 + assertEq(x >> 0xffffffff, 0); 1.48 + assertEq(0xffffffff >> x, -1); 1.49 + assertEq(x >>> 0xffffffff, 0); 1.50 + assertEq(0xffffffff >>> x, 2147483647); 1.51 + assertEq(x << 0xffffffff, -2147483648); 1.52 + assertEq(0xffffffff << x, -2); 1.53 + assertEq(x | "10.6", 11); 1.54 + assertEq("10.6" | x, 11); 1.55 + assertEq(x & "10.6", 0); 1.56 + assertEq("10.6" & x, 0); 1.57 + assertEq(x ^ "10.6", 11); 1.58 + assertEq("10.6" ^ x, 11); 1.59 + assertEq(x >> "10.6", 0); 1.60 + assertEq("10.6" >> x, 5); 1.61 + assertEq(x >>> "10.6", 0); 1.62 + assertEq("10.6" >>> x, 5); 1.63 + assertEq(x << "10.6", 1024); 1.64 + assertEq("10.6" << x, 20); 1.65 + assertEq(x | 2147483648, -2147483647); 1.66 + assertEq(2147483648 | x, -2147483647); 1.67 + assertEq(x & 2147483648, 0); 1.68 + assertEq(2147483648 & x, 0); 1.69 + assertEq(x ^ 2147483648, -2147483647); 1.70 + assertEq(2147483648 ^ x, -2147483647); 1.71 + assertEq(x >> 2147483648, 1); 1.72 + assertEq(2147483648 >> x, -1073741824); 1.73 + assertEq(x >>> 2147483648, 1); 1.74 + assertEq(2147483648 >>> x, 1073741824); 1.75 + assertEq(x << 2147483648, 1); 1.76 + assertEq(2147483648 << x, 0); 1.77 + assertEq(x | 4294967296, 1); 1.78 + assertEq(4294967296 | x, 1); 1.79 + assertEq(x & 4294967296, 0); 1.80 + assertEq(4294967296 & x, 0); 1.81 + assertEq(x ^ 4294967296, 1); 1.82 + assertEq(4294967296 ^ x, 1); 1.83 + assertEq(x >> 4294967296, 1); 1.84 + assertEq(4294967296 >> x, 0); 1.85 + assertEq(x >>> 4294967296, 1); 1.86 + assertEq(4294967296 >>> x, 0); 1.87 + assertEq(x << 4294967296, 1); 1.88 + assertEq(4294967296 << x, 0); 1.89 + assertEq(x | undefined, 1); 1.90 + assertEq(undefined | x, 1); 1.91 + assertEq(x & undefined, 0); 1.92 + assertEq(undefined & x, 0); 1.93 + assertEq(x ^ undefined, 1); 1.94 + assertEq(undefined ^ x, 1); 1.95 + assertEq(x >> undefined, 1); 1.96 + assertEq(undefined >> x, 0); 1.97 + assertEq(x >>> undefined, 1); 1.98 + assertEq(undefined >>> x, 0); 1.99 + assertEq(x << undefined, 1); 1.100 + assertEq(undefined << x, 0); 1.101 + assertEq(x | null, 1); 1.102 + assertEq(null | x, 1); 1.103 + assertEq(x & null, 0); 1.104 + assertEq(null & x, 0); 1.105 + assertEq(x ^ null, 1); 1.106 + assertEq(null ^ x, 1); 1.107 + assertEq(x >> null, 1); 1.108 + assertEq(null >> x, 0); 1.109 + assertEq(x >>> null, 1); 1.110 + assertEq(null >>> x, 0); 1.111 + assertEq(x << null, 1); 1.112 + assertEq(null << x, 0); 1.113 + assertEq(x | false, 1); 1.114 + assertEq(false | x, 1); 1.115 + assertEq(x & false, 0); 1.116 + assertEq(false & x, 0); 1.117 + assertEq(x ^ false, 1); 1.118 + assertEq(false ^ x, 1); 1.119 + assertEq(x >> false, 1); 1.120 + assertEq(false >> x, 0); 1.121 + assertEq(x >>> false, 1); 1.122 + assertEq(false >>> x, 0); 1.123 + assertEq(x << false, 1); 1.124 + assertEq(false << x, 0); 1.125 + assertEq(x | true, 1); 1.126 + assertEq(true | x, 1); 1.127 + assertEq(x & true, 1); 1.128 + assertEq(true & x, 1); 1.129 + assertEq(x ^ true, 0); 1.130 + assertEq(true ^ x, 0); 1.131 + assertEq(x >> true, 0); 1.132 + assertEq(true >> x, 0); 1.133 + assertEq(x >>> true, 0); 1.134 + assertEq(true >>> x, 0); 1.135 + assertEq(x << true, 2); 1.136 + assertEq(true << x, 2); 1.137 + assertEq(x | -1.5, -1); 1.138 + assertEq(-1.5 | x, -1); 1.139 + assertEq(x & -1.5, 1); 1.140 + assertEq(-1.5 & x, 1); 1.141 + assertEq(x ^ -1.5, -2); 1.142 + assertEq(-1.5 ^ x, -2); 1.143 + assertEq(x >> -1.5, 0); 1.144 + assertEq(-1.5 >> x, -1); 1.145 + assertEq(x >>> -1.5, 0); 1.146 + assertEq(-1.5 >>> x, 2147483647); 1.147 + assertEq(x << -1.5, -2147483648); 1.148 + assertEq(-1.5 << x, -2); 1.149 +} 1.150 +test1(1) 1.151 + 1.152 +function test2 (x) { 1.153 + assertEq(x | -1, -1); 1.154 + assertEq(-1 | x, -1); 1.155 + assertEq(x & -1, 0); 1.156 + assertEq(-1 & x, 0); 1.157 + assertEq(x ^ -1, -1); 1.158 + assertEq(-1 ^ x, -1); 1.159 + assertEq(x >> -1, 0); 1.160 + assertEq(-1 >> x, -1); 1.161 + assertEq(x >>> -1, 0); 1.162 + assertEq(-1 >>> x, 4294967295); 1.163 + assertEq(x << -1, 0); 1.164 + assertEq(-1 << x, -1); 1.165 + assertEq(x | 1, 1); 1.166 + assertEq(1 | x, 1); 1.167 + assertEq(x & 1, 0); 1.168 + assertEq(1 & x, 0); 1.169 + assertEq(x ^ 1, 1); 1.170 + assertEq(1 ^ x, 1); 1.171 + assertEq(x >> 1, 0); 1.172 + assertEq(1 >> x, 1); 1.173 + assertEq(x >>> 1, 0); 1.174 + assertEq(1 >>> x, 1); 1.175 + assertEq(x << 1, 0); 1.176 + assertEq(1 << x, 1); 1.177 + assertEq(x | 0, 0); 1.178 + assertEq(0 | x, 0); 1.179 + assertEq(x & 0, 0); 1.180 + assertEq(0 & x, 0); 1.181 + assertEq(x ^ 0, 0); 1.182 + assertEq(0 ^ x, 0); 1.183 + assertEq(x >> 0, 0); 1.184 + assertEq(0 >> x, 0); 1.185 + assertEq(x >>> 0, 0); 1.186 + assertEq(0 >>> x, 0); 1.187 + assertEq(x << 0, 0); 1.188 + assertEq(0 << x, 0); 1.189 + assertEq(x | 0xffffffff, -1); 1.190 + assertEq(0xffffffff | x, -1); 1.191 + assertEq(x & 0xffffffff, 0); 1.192 + assertEq(0xffffffff & x, 0); 1.193 + assertEq(x ^ 0xffffffff, -1); 1.194 + assertEq(0xffffffff ^ x, -1); 1.195 + assertEq(x >> 0xffffffff, 0); 1.196 + assertEq(0xffffffff >> x, -1); 1.197 + assertEq(x >>> 0xffffffff, 0); 1.198 + assertEq(0xffffffff >>> x, 4294967295); 1.199 + assertEq(x << 0xffffffff, 0); 1.200 + assertEq(0xffffffff << x, -1); 1.201 + assertEq(x | "10.6", 10); 1.202 + assertEq("10.6" | x, 10); 1.203 + assertEq(x & "10.6", 0); 1.204 + assertEq("10.6" & x, 0); 1.205 + assertEq(x ^ "10.6", 10); 1.206 + assertEq("10.6" ^ x, 10); 1.207 + assertEq(x >> "10.6", 0); 1.208 + assertEq("10.6" >> x, 10); 1.209 + assertEq(x >>> "10.6", 0); 1.210 + assertEq("10.6" >>> x, 10); 1.211 + assertEq(x << "10.6", 0); 1.212 + assertEq("10.6" << x, 10); 1.213 + assertEq(x | 2147483648, -2147483648); 1.214 + assertEq(2147483648 | x, -2147483648); 1.215 + assertEq(x & 2147483648, 0); 1.216 + assertEq(2147483648 & x, 0); 1.217 + assertEq(x ^ 2147483648, -2147483648); 1.218 + assertEq(2147483648 ^ x, -2147483648); 1.219 + assertEq(x >> 2147483648, 0); 1.220 + assertEq(2147483648 >> x, -2147483648); 1.221 + assertEq(x >>> 2147483648, 0); 1.222 + assertEq(2147483648 >>> x, 2147483648); 1.223 + assertEq(x << 2147483648, 0); 1.224 + assertEq(2147483648 << x, -2147483648); 1.225 + assertEq(x | 4294967296, 0); 1.226 + assertEq(4294967296 | x, 0); 1.227 + assertEq(x & 4294967296, 0); 1.228 + assertEq(4294967296 & x, 0); 1.229 + assertEq(x ^ 4294967296, 0); 1.230 + assertEq(4294967296 ^ x, 0); 1.231 + assertEq(x >> 4294967296, 0); 1.232 + assertEq(4294967296 >> x, 0); 1.233 + assertEq(x >>> 4294967296, 0); 1.234 + assertEq(4294967296 >>> x, 0); 1.235 + assertEq(x << 4294967296, 0); 1.236 + assertEq(4294967296 << x, 0); 1.237 + assertEq(x | undefined, 0); 1.238 + assertEq(undefined | x, 0); 1.239 + assertEq(x & undefined, 0); 1.240 + assertEq(undefined & x, 0); 1.241 + assertEq(x ^ undefined, 0); 1.242 + assertEq(undefined ^ x, 0); 1.243 + assertEq(x >> undefined, 0); 1.244 + assertEq(undefined >> x, 0); 1.245 + assertEq(x >>> undefined, 0); 1.246 + assertEq(undefined >>> x, 0); 1.247 + assertEq(x << undefined, 0); 1.248 + assertEq(undefined << x, 0); 1.249 + assertEq(x | null, 0); 1.250 + assertEq(null | x, 0); 1.251 + assertEq(x & null, 0); 1.252 + assertEq(null & x, 0); 1.253 + assertEq(x ^ null, 0); 1.254 + assertEq(null ^ x, 0); 1.255 + assertEq(x >> null, 0); 1.256 + assertEq(null >> x, 0); 1.257 + assertEq(x >>> null, 0); 1.258 + assertEq(null >>> x, 0); 1.259 + assertEq(x << null, 0); 1.260 + assertEq(null << x, 0); 1.261 + assertEq(x | false, 0); 1.262 + assertEq(false | x, 0); 1.263 + assertEq(x & false, 0); 1.264 + assertEq(false & x, 0); 1.265 + assertEq(x ^ false, 0); 1.266 + assertEq(false ^ x, 0); 1.267 + assertEq(x >> false, 0); 1.268 + assertEq(false >> x, 0); 1.269 + assertEq(x >>> false, 0); 1.270 + assertEq(false >>> x, 0); 1.271 + assertEq(x << false, 0); 1.272 + assertEq(false << x, 0); 1.273 + assertEq(x | true, 1); 1.274 + assertEq(true | x, 1); 1.275 + assertEq(x & true, 0); 1.276 + assertEq(true & x, 0); 1.277 + assertEq(x ^ true, 1); 1.278 + assertEq(true ^ x, 1); 1.279 + assertEq(x >> true, 0); 1.280 + assertEq(true >> x, 1); 1.281 + assertEq(x >>> true, 0); 1.282 + assertEq(true >>> x, 1); 1.283 + assertEq(x << true, 0); 1.284 + assertEq(true << x, 1); 1.285 + assertEq(x | -1.5, -1); 1.286 + assertEq(-1.5 | x, -1); 1.287 + assertEq(x & -1.5, 0); 1.288 + assertEq(-1.5 & x, 0); 1.289 + assertEq(x ^ -1.5, -1); 1.290 + assertEq(-1.5 ^ x, -1); 1.291 + assertEq(x >> -1.5, 0); 1.292 + assertEq(-1.5 >> x, -1); 1.293 + assertEq(x >>> -1.5, 0); 1.294 + assertEq(-1.5 >>> x, 4294967295); 1.295 + assertEq(x << -1.5, 0); 1.296 + assertEq(-1.5 << x, -1); 1.297 +} 1.298 +test2(0) 1.299 + 1.300 +function test3 (x) { 1.301 + assertEq(x | -1, -1); 1.302 + assertEq(-1 | x, -1); 1.303 + assertEq(x & -1, -1); 1.304 + assertEq(-1 & x, -1); 1.305 + assertEq(x ^ -1, 0); 1.306 + assertEq(-1 ^ x, 0); 1.307 + assertEq(x >> -1, -1); 1.308 + assertEq(-1 >> x, -1); 1.309 + assertEq(x >>> -1, 1); 1.310 + assertEq(-1 >>> x, 1); 1.311 + assertEq(x << -1, -2147483648); 1.312 + assertEq(-1 << x, -2147483648); 1.313 + assertEq(x | 1, -1); 1.314 + assertEq(1 | x, -1); 1.315 + assertEq(x & 1, 1); 1.316 + assertEq(1 & x, 1); 1.317 + assertEq(x ^ 1, -2); 1.318 + assertEq(1 ^ x, -2); 1.319 + assertEq(x >> 1, -1); 1.320 + assertEq(1 >> x, 0); 1.321 + assertEq(x >>> 1, 2147483647); 1.322 + assertEq(1 >>> x, 0); 1.323 + assertEq(x << 1, -2); 1.324 + assertEq(1 << x, -2147483648); 1.325 + assertEq(x | 0, -1); 1.326 + assertEq(0 | x, -1); 1.327 + assertEq(x & 0, 0); 1.328 + assertEq(0 & x, 0); 1.329 + assertEq(x ^ 0, -1); 1.330 + assertEq(0 ^ x, -1); 1.331 + assertEq(x >> 0, -1); 1.332 + assertEq(0 >> x, 0); 1.333 + assertEq(x >>> 0, 4294967295); 1.334 + assertEq(0 >>> x, 0); 1.335 + assertEq(x << 0, -1); 1.336 + assertEq(0 << x, 0); 1.337 + assertEq(x | 0xffffffff, -1); 1.338 + assertEq(0xffffffff | x, -1); 1.339 + assertEq(x & 0xffffffff, -1); 1.340 + assertEq(0xffffffff & x, -1); 1.341 + assertEq(x ^ 0xffffffff, 0); 1.342 + assertEq(0xffffffff ^ x, 0); 1.343 + assertEq(x >> 0xffffffff, -1); 1.344 + assertEq(0xffffffff >> x, -1); 1.345 + assertEq(x >>> 0xffffffff, 1); 1.346 + assertEq(0xffffffff >>> x, 1); 1.347 + assertEq(x << 0xffffffff, -2147483648); 1.348 + assertEq(0xffffffff << x, -2147483648); 1.349 + assertEq(x | "10.6", -1); 1.350 + assertEq("10.6" | x, -1); 1.351 + assertEq(x & "10.6", 10); 1.352 + assertEq("10.6" & x, 10); 1.353 + assertEq(x ^ "10.6", -11); 1.354 + assertEq("10.6" ^ x, -11); 1.355 + assertEq(x >> "10.6", -1); 1.356 + assertEq("10.6" >> x, 0); 1.357 + assertEq(x >>> "10.6", 4194303); 1.358 + assertEq("10.6" >>> x, 0); 1.359 + assertEq(x << "10.6", -1024); 1.360 + assertEq("10.6" << x, 0); 1.361 + assertEq(x | 2147483648, -1); 1.362 + assertEq(2147483648 | x, -1); 1.363 + assertEq(x & 2147483648, -2147483648); 1.364 + assertEq(2147483648 & x, -2147483648); 1.365 + assertEq(x ^ 2147483648, 2147483647); 1.366 + assertEq(2147483648 ^ x, 2147483647); 1.367 + assertEq(x >> 2147483648, -1); 1.368 + assertEq(2147483648 >> x, -1); 1.369 + assertEq(x >>> 2147483648, 4294967295); 1.370 + assertEq(2147483648 >>> x, 1); 1.371 + assertEq(x << 2147483648, -1); 1.372 + assertEq(2147483648 << x, 0); 1.373 + assertEq(x | 4294967296, -1); 1.374 + assertEq(4294967296 | x, -1); 1.375 + assertEq(x & 4294967296, 0); 1.376 + assertEq(4294967296 & x, 0); 1.377 + assertEq(x ^ 4294967296, -1); 1.378 + assertEq(4294967296 ^ x, -1); 1.379 + assertEq(x >> 4294967296, -1); 1.380 + assertEq(4294967296 >> x, 0); 1.381 + assertEq(x >>> 4294967296, 4294967295); 1.382 + assertEq(4294967296 >>> x, 0); 1.383 + assertEq(x << 4294967296, -1); 1.384 + assertEq(4294967296 << x, 0); 1.385 + assertEq(x | undefined, -1); 1.386 + assertEq(undefined | x, -1); 1.387 + assertEq(x & undefined, 0); 1.388 + assertEq(undefined & x, 0); 1.389 + assertEq(x ^ undefined, -1); 1.390 + assertEq(undefined ^ x, -1); 1.391 + assertEq(x >> undefined, -1); 1.392 + assertEq(undefined >> x, 0); 1.393 + assertEq(x >>> undefined, 4294967295); 1.394 + assertEq(undefined >>> x, 0); 1.395 + assertEq(x << undefined, -1); 1.396 + assertEq(undefined << x, 0); 1.397 + assertEq(x | null, -1); 1.398 + assertEq(null | x, -1); 1.399 + assertEq(x & null, 0); 1.400 + assertEq(null & x, 0); 1.401 + assertEq(x ^ null, -1); 1.402 + assertEq(null ^ x, -1); 1.403 + assertEq(x >> null, -1); 1.404 + assertEq(null >> x, 0); 1.405 + assertEq(x >>> null, 4294967295); 1.406 + assertEq(null >>> x, 0); 1.407 + assertEq(x << null, -1); 1.408 + assertEq(null << x, 0); 1.409 + assertEq(x | false, -1); 1.410 + assertEq(false | x, -1); 1.411 + assertEq(x & false, 0); 1.412 + assertEq(false & x, 0); 1.413 + assertEq(x ^ false, -1); 1.414 + assertEq(false ^ x, -1); 1.415 + assertEq(x >> false, -1); 1.416 + assertEq(false >> x, 0); 1.417 + assertEq(x >>> false, 4294967295); 1.418 + assertEq(false >>> x, 0); 1.419 + assertEq(x << false, -1); 1.420 + assertEq(false << x, 0); 1.421 + assertEq(x | true, -1); 1.422 + assertEq(true | x, -1); 1.423 + assertEq(x & true, 1); 1.424 + assertEq(true & x, 1); 1.425 + assertEq(x ^ true, -2); 1.426 + assertEq(true ^ x, -2); 1.427 + assertEq(x >> true, -1); 1.428 + assertEq(true >> x, 0); 1.429 + assertEq(x >>> true, 2147483647); 1.430 + assertEq(true >>> x, 0); 1.431 + assertEq(x << true, -2); 1.432 + assertEq(true << x, -2147483648); 1.433 + assertEq(x | -1.5, -1); 1.434 + assertEq(-1.5 | x, -1); 1.435 + assertEq(x & -1.5, -1); 1.436 + assertEq(-1.5 & x, -1); 1.437 + assertEq(x ^ -1.5, 0); 1.438 + assertEq(-1.5 ^ x, 0); 1.439 + assertEq(x >> -1.5, -1); 1.440 + assertEq(-1.5 >> x, -1); 1.441 + assertEq(x >>> -1.5, 1); 1.442 + assertEq(-1.5 >>> x, 1); 1.443 + assertEq(x << -1.5, -2147483648); 1.444 + assertEq(-1.5 << x, -2147483648); 1.445 +} 1.446 +test3(-1) 1.447 + 1.448 +function test4 (x) { 1.449 + assertEq(x | -1, -1); 1.450 + assertEq(-1 | x, -1); 1.451 + assertEq(x & -1, -2147483648); 1.452 + assertEq(-1 & x, -2147483648); 1.453 + assertEq(x ^ -1, 2147483647); 1.454 + assertEq(-1 ^ x, 2147483647); 1.455 + assertEq(x >> -1, -1); 1.456 + assertEq(-1 >> x, -1); 1.457 + assertEq(x >>> -1, 1); 1.458 + assertEq(-1 >>> x, 4294967295); 1.459 + assertEq(x << -1, 0); 1.460 + assertEq(-1 << x, -1); 1.461 + assertEq(x | 1, -2147483647); 1.462 + assertEq(1 | x, -2147483647); 1.463 + assertEq(x & 1, 0); 1.464 + assertEq(1 & x, 0); 1.465 + assertEq(x ^ 1, -2147483647); 1.466 + assertEq(1 ^ x, -2147483647); 1.467 + assertEq(x >> 1, -1073741824); 1.468 + assertEq(1 >> x, 1); 1.469 + assertEq(x >>> 1, 1073741824); 1.470 + assertEq(1 >>> x, 1); 1.471 + assertEq(x << 1, 0); 1.472 + assertEq(1 << x, 1); 1.473 + assertEq(x | 0, -2147483648); 1.474 + assertEq(0 | x, -2147483648); 1.475 + assertEq(x & 0, 0); 1.476 + assertEq(0 & x, 0); 1.477 + assertEq(x ^ 0, -2147483648); 1.478 + assertEq(0 ^ x, -2147483648); 1.479 + assertEq(x >> 0, -2147483648); 1.480 + assertEq(0 >> x, 0); 1.481 + assertEq(x >>> 0, 2147483648); 1.482 + assertEq(0 >>> x, 0); 1.483 + assertEq(x << 0, -2147483648); 1.484 + assertEq(0 << x, 0); 1.485 + assertEq(x | 0xffffffff, -1); 1.486 + assertEq(0xffffffff | x, -1); 1.487 + assertEq(x & 0xffffffff, -2147483648); 1.488 + assertEq(0xffffffff & x, -2147483648); 1.489 + assertEq(x ^ 0xffffffff, 2147483647); 1.490 + assertEq(0xffffffff ^ x, 2147483647); 1.491 + assertEq(x >> 0xffffffff, -1); 1.492 + assertEq(0xffffffff >> x, -1); 1.493 + assertEq(x >>> 0xffffffff, 1); 1.494 + assertEq(0xffffffff >>> x, 4294967295); 1.495 + assertEq(x << 0xffffffff, 0); 1.496 + assertEq(0xffffffff << x, -1); 1.497 + assertEq(x | "10.6", -2147483638); 1.498 + assertEq("10.6" | x, -2147483638); 1.499 + assertEq(x & "10.6", 0); 1.500 + assertEq("10.6" & x, 0); 1.501 + assertEq(x ^ "10.6", -2147483638); 1.502 + assertEq("10.6" ^ x, -2147483638); 1.503 + assertEq(x >> "10.6", -2097152); 1.504 + assertEq("10.6" >> x, 10); 1.505 + assertEq(x >>> "10.6", 2097152); 1.506 + assertEq("10.6" >>> x, 10); 1.507 + assertEq(x << "10.6", 0); 1.508 + assertEq("10.6" << x, 10); 1.509 + assertEq(x | 2147483648, -2147483648); 1.510 + assertEq(2147483648 | x, -2147483648); 1.511 + assertEq(x & 2147483648, -2147483648); 1.512 + assertEq(2147483648 & x, -2147483648); 1.513 + assertEq(x ^ 2147483648, 0); 1.514 + assertEq(2147483648 ^ x, 0); 1.515 + assertEq(x >> 2147483648, -2147483648); 1.516 + assertEq(2147483648 >> x, -2147483648); 1.517 + assertEq(x >>> 2147483648, 2147483648); 1.518 + assertEq(2147483648 >>> x, 2147483648); 1.519 + assertEq(x << 2147483648, -2147483648); 1.520 + assertEq(2147483648 << x, -2147483648); 1.521 + assertEq(x | 4294967296, -2147483648); 1.522 + assertEq(4294967296 | x, -2147483648); 1.523 + assertEq(x & 4294967296, 0); 1.524 + assertEq(4294967296 & x, 0); 1.525 + assertEq(x ^ 4294967296, -2147483648); 1.526 + assertEq(4294967296 ^ x, -2147483648); 1.527 + assertEq(x >> 4294967296, -2147483648); 1.528 + assertEq(4294967296 >> x, 0); 1.529 + assertEq(x >>> 4294967296, 2147483648); 1.530 + assertEq(4294967296 >>> x, 0); 1.531 + assertEq(x << 4294967296, -2147483648); 1.532 + assertEq(4294967296 << x, 0); 1.533 + assertEq(x | undefined, -2147483648); 1.534 + assertEq(undefined | x, -2147483648); 1.535 + assertEq(x & undefined, 0); 1.536 + assertEq(undefined & x, 0); 1.537 + assertEq(x ^ undefined, -2147483648); 1.538 + assertEq(undefined ^ x, -2147483648); 1.539 + assertEq(x >> undefined, -2147483648); 1.540 + assertEq(undefined >> x, 0); 1.541 + assertEq(x >>> undefined, 2147483648); 1.542 + assertEq(undefined >>> x, 0); 1.543 + assertEq(x << undefined, -2147483648); 1.544 + assertEq(undefined << x, 0); 1.545 + assertEq(x | null, -2147483648); 1.546 + assertEq(null | x, -2147483648); 1.547 + assertEq(x & null, 0); 1.548 + assertEq(null & x, 0); 1.549 + assertEq(x ^ null, -2147483648); 1.550 + assertEq(null ^ x, -2147483648); 1.551 + assertEq(x >> null, -2147483648); 1.552 + assertEq(null >> x, 0); 1.553 + assertEq(x >>> null, 2147483648); 1.554 + assertEq(null >>> x, 0); 1.555 + assertEq(x << null, -2147483648); 1.556 + assertEq(null << x, 0); 1.557 + assertEq(x | false, -2147483648); 1.558 + assertEq(false | x, -2147483648); 1.559 + assertEq(x & false, 0); 1.560 + assertEq(false & x, 0); 1.561 + assertEq(x ^ false, -2147483648); 1.562 + assertEq(false ^ x, -2147483648); 1.563 + assertEq(x >> false, -2147483648); 1.564 + assertEq(false >> x, 0); 1.565 + assertEq(x >>> false, 2147483648); 1.566 + assertEq(false >>> x, 0); 1.567 + assertEq(x << false, -2147483648); 1.568 + assertEq(false << x, 0); 1.569 + assertEq(x | true, -2147483647); 1.570 + assertEq(true | x, -2147483647); 1.571 + assertEq(x & true, 0); 1.572 + assertEq(true & x, 0); 1.573 + assertEq(x ^ true, -2147483647); 1.574 + assertEq(true ^ x, -2147483647); 1.575 + assertEq(x >> true, -1073741824); 1.576 + assertEq(true >> x, 1); 1.577 + assertEq(x >>> true, 1073741824); 1.578 + assertEq(true >>> x, 1); 1.579 + assertEq(x << true, 0); 1.580 + assertEq(true << x, 1); 1.581 + assertEq(x | -1.5, -1); 1.582 + assertEq(-1.5 | x, -1); 1.583 + assertEq(x & -1.5, -2147483648); 1.584 + assertEq(-1.5 & x, -2147483648); 1.585 + assertEq(x ^ -1.5, 2147483647); 1.586 + assertEq(-1.5 ^ x, 2147483647); 1.587 + assertEq(x >> -1.5, -1); 1.588 + assertEq(-1.5 >> x, -1); 1.589 + assertEq(x >>> -1.5, 1); 1.590 + assertEq(-1.5 >>> x, 4294967295); 1.591 + assertEq(x << -1.5, 0); 1.592 + assertEq(-1.5 << x, -1); 1.593 +} 1.594 +test4(2147483648) 1.595 + 1.596 +function test5 (x) { 1.597 + assertEq(x | -1, -1); 1.598 + assertEq(-1 | x, -1); 1.599 + assertEq(x & -1, -2147483648); 1.600 + assertEq(-1 & x, -2147483648); 1.601 + assertEq(x ^ -1, 2147483647); 1.602 + assertEq(-1 ^ x, 2147483647); 1.603 + assertEq(x >> -1, -1); 1.604 + assertEq(-1 >> x, -1); 1.605 + assertEq(x >>> -1, 1); 1.606 + assertEq(-1 >>> x, 4294967295); 1.607 + assertEq(x << -1, 0); 1.608 + assertEq(-1 << x, -1); 1.609 + assertEq(x | 1, -2147483647); 1.610 + assertEq(1 | x, -2147483647); 1.611 + assertEq(x & 1, 0); 1.612 + assertEq(1 & x, 0); 1.613 + assertEq(x ^ 1, -2147483647); 1.614 + assertEq(1 ^ x, -2147483647); 1.615 + assertEq(x >> 1, -1073741824); 1.616 + assertEq(1 >> x, 1); 1.617 + assertEq(x >>> 1, 1073741824); 1.618 + assertEq(1 >>> x, 1); 1.619 + assertEq(x << 1, 0); 1.620 + assertEq(1 << x, 1); 1.621 + assertEq(x | 0, -2147483648); 1.622 + assertEq(0 | x, -2147483648); 1.623 + assertEq(x & 0, 0); 1.624 + assertEq(0 & x, 0); 1.625 + assertEq(x ^ 0, -2147483648); 1.626 + assertEq(0 ^ x, -2147483648); 1.627 + assertEq(x >> 0, -2147483648); 1.628 + assertEq(0 >> x, 0); 1.629 + assertEq(x >>> 0, 2147483648); 1.630 + assertEq(0 >>> x, 0); 1.631 + assertEq(x << 0, -2147483648); 1.632 + assertEq(0 << x, 0); 1.633 + assertEq(x | 0xffffffff, -1); 1.634 + assertEq(0xffffffff | x, -1); 1.635 + assertEq(x & 0xffffffff, -2147483648); 1.636 + assertEq(0xffffffff & x, -2147483648); 1.637 + assertEq(x ^ 0xffffffff, 2147483647); 1.638 + assertEq(0xffffffff ^ x, 2147483647); 1.639 + assertEq(x >> 0xffffffff, -1); 1.640 + assertEq(0xffffffff >> x, -1); 1.641 + assertEq(x >>> 0xffffffff, 1); 1.642 + assertEq(0xffffffff >>> x, 4294967295); 1.643 + assertEq(x << 0xffffffff, 0); 1.644 + assertEq(0xffffffff << x, -1); 1.645 + assertEq(x | "10.6", -2147483638); 1.646 + assertEq("10.6" | x, -2147483638); 1.647 + assertEq(x & "10.6", 0); 1.648 + assertEq("10.6" & x, 0); 1.649 + assertEq(x ^ "10.6", -2147483638); 1.650 + assertEq("10.6" ^ x, -2147483638); 1.651 + assertEq(x >> "10.6", -2097152); 1.652 + assertEq("10.6" >> x, 10); 1.653 + assertEq(x >>> "10.6", 2097152); 1.654 + assertEq("10.6" >>> x, 10); 1.655 + assertEq(x << "10.6", 0); 1.656 + assertEq("10.6" << x, 10); 1.657 + assertEq(x | 2147483648, -2147483648); 1.658 + assertEq(2147483648 | x, -2147483648); 1.659 + assertEq(x & 2147483648, -2147483648); 1.660 + assertEq(2147483648 & x, -2147483648); 1.661 + assertEq(x ^ 2147483648, 0); 1.662 + assertEq(2147483648 ^ x, 0); 1.663 + assertEq(x >> 2147483648, -2147483648); 1.664 + assertEq(2147483648 >> x, -2147483648); 1.665 + assertEq(x >>> 2147483648, 2147483648); 1.666 + assertEq(2147483648 >>> x, 2147483648); 1.667 + assertEq(x << 2147483648, -2147483648); 1.668 + assertEq(2147483648 << x, -2147483648); 1.669 + assertEq(x | 4294967296, -2147483648); 1.670 + assertEq(4294967296 | x, -2147483648); 1.671 + assertEq(x & 4294967296, 0); 1.672 + assertEq(4294967296 & x, 0); 1.673 + assertEq(x ^ 4294967296, -2147483648); 1.674 + assertEq(4294967296 ^ x, -2147483648); 1.675 + assertEq(x >> 4294967296, -2147483648); 1.676 + assertEq(4294967296 >> x, 0); 1.677 + assertEq(x >>> 4294967296, 2147483648); 1.678 + assertEq(4294967296 >>> x, 0); 1.679 + assertEq(x << 4294967296, -2147483648); 1.680 + assertEq(4294967296 << x, 0); 1.681 + assertEq(x | undefined, -2147483648); 1.682 + assertEq(undefined | x, -2147483648); 1.683 + assertEq(x & undefined, 0); 1.684 + assertEq(undefined & x, 0); 1.685 + assertEq(x ^ undefined, -2147483648); 1.686 + assertEq(undefined ^ x, -2147483648); 1.687 + assertEq(x >> undefined, -2147483648); 1.688 + assertEq(undefined >> x, 0); 1.689 + assertEq(x >>> undefined, 2147483648); 1.690 + assertEq(undefined >>> x, 0); 1.691 + assertEq(x << undefined, -2147483648); 1.692 + assertEq(undefined << x, 0); 1.693 + assertEq(x | null, -2147483648); 1.694 + assertEq(null | x, -2147483648); 1.695 + assertEq(x & null, 0); 1.696 + assertEq(null & x, 0); 1.697 + assertEq(x ^ null, -2147483648); 1.698 + assertEq(null ^ x, -2147483648); 1.699 + assertEq(x >> null, -2147483648); 1.700 + assertEq(null >> x, 0); 1.701 + assertEq(x >>> null, 2147483648); 1.702 + assertEq(null >>> x, 0); 1.703 + assertEq(x << null, -2147483648); 1.704 + assertEq(null << x, 0); 1.705 + assertEq(x | false, -2147483648); 1.706 + assertEq(false | x, -2147483648); 1.707 + assertEq(x & false, 0); 1.708 + assertEq(false & x, 0); 1.709 + assertEq(x ^ false, -2147483648); 1.710 + assertEq(false ^ x, -2147483648); 1.711 + assertEq(x >> false, -2147483648); 1.712 + assertEq(false >> x, 0); 1.713 + assertEq(x >>> false, 2147483648); 1.714 + assertEq(false >>> x, 0); 1.715 + assertEq(x << false, -2147483648); 1.716 + assertEq(false << x, 0); 1.717 + assertEq(x | true, -2147483647); 1.718 + assertEq(true | x, -2147483647); 1.719 + assertEq(x & true, 0); 1.720 + assertEq(true & x, 0); 1.721 + assertEq(x ^ true, -2147483647); 1.722 + assertEq(true ^ x, -2147483647); 1.723 + assertEq(x >> true, -1073741824); 1.724 + assertEq(true >> x, 1); 1.725 + assertEq(x >>> true, 1073741824); 1.726 + assertEq(true >>> x, 1); 1.727 + assertEq(x << true, 0); 1.728 + assertEq(true << x, 1); 1.729 + assertEq(x | -1.5, -1); 1.730 + assertEq(-1.5 | x, -1); 1.731 + assertEq(x & -1.5, -2147483648); 1.732 + assertEq(-1.5 & x, -2147483648); 1.733 + assertEq(x ^ -1.5, 2147483647); 1.734 + assertEq(-1.5 ^ x, 2147483647); 1.735 + assertEq(x >> -1.5, -1); 1.736 + assertEq(-1.5 >> x, -1); 1.737 + assertEq(x >>> -1.5, 1); 1.738 + assertEq(-1.5 >>> x, 4294967295); 1.739 + assertEq(x << -1.5, 0); 1.740 + assertEq(-1.5 << x, -1); 1.741 +} 1.742 +test5(-2147483648) 1.743 + 1.744 +