1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/compareAll.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,279 @@ 1.4 +load(libdir + 'array-compare.js'); 1.5 + 1.6 +function compareIAndSet(v) { 1.7 + var res = 0; 1.8 + var c; 1.9 + var i = 0; 1.10 + c = (v > 1); 1.11 + res |= (c << i); 1.12 + i++; 1.13 + c = (v >= 2); 1.14 + res |= (c << i); 1.15 + i++; 1.16 + c = (v < 3); 1.17 + res |= (c << i); 1.18 + i++; 1.19 + c = (v <= 4); 1.20 + res |= (c << i); 1.21 + i++; 1.22 + c = (v == 5); 1.23 + res |= (c << i); 1.24 + i++; 1.25 + c = (v != 6); 1.26 + res |= (c << i); 1.27 + i++; 1.28 + c = (v === 7); 1.29 + res |= (c << i); 1.30 + i++; 1.31 + c = (v !== 8); 1.32 + res |= (c << i); 1.33 + i++; 1.34 + return res; 1.35 +} 1.36 + 1.37 +function compareIAndBranch(v) { 1.38 + var res = 0; 1.39 + var c = 1; 1.40 + var i = 0; 1.41 + if (v > 1) 1.42 + res |= (c << i); 1.43 + i++; 1.44 + if (v >= 2) 1.45 + res |= (c << i); 1.46 + i++; 1.47 + if (v < 3) 1.48 + res |= (c << i); 1.49 + i++; 1.50 + if (v <= 4) 1.51 + res |= (c << i); 1.52 + i++; 1.53 + if (v == 5) 1.54 + res |= (c << i); 1.55 + i++; 1.56 + if (v != 6) 1.57 + res |= (c << i); 1.58 + i++; 1.59 + if (v === 7) 1.60 + res |= (c << i); 1.61 + i++; 1.62 + if (v !== 8) 1.63 + res |= (c << i); 1.64 + i++; 1.65 + if (v) 1.66 + res |= (c << i); 1.67 + i++; 1.68 + return res; 1.69 +} 1.70 + 1.71 +function compareDAndSet(v) { 1.72 + var res = 0; 1.73 + var c; 1.74 + var i = 0; 1.75 + c = (v > 1.5); 1.76 + res |= (c << i); 1.77 + i++; 1.78 + c = (v >= 2.5); 1.79 + res |= (c << i); 1.80 + i++; 1.81 + c = (v < 3.5); 1.82 + res |= (c << i); 1.83 + i++; 1.84 + c = (v <= 4.5); 1.85 + res |= (c << i); 1.86 + i++; 1.87 + c = (v == 5.5); 1.88 + res |= (c << i); 1.89 + i++; 1.90 + c = (v != 6.5); 1.91 + res |= (c << i); 1.92 + i++; 1.93 + c = (v === 7.5); 1.94 + res |= (c << i); 1.95 + i++; 1.96 + c = (v !== 8.5); 1.97 + res |= (c << i); 1.98 + i++; 1.99 + c = (v !== 0.0); 1.100 + res |= (c << i); 1.101 + i++; 1.102 + return res; 1.103 +} 1.104 + 1.105 +function compareDAndBranch(v) { 1.106 + var res = 0; 1.107 + var c = 1; 1.108 + var i = 0; 1.109 + if (v > 1.5) 1.110 + res |= (c << i); 1.111 + i++; 1.112 + if (v >= 2.5) 1.113 + res |= (c << i); 1.114 + i++; 1.115 + if (v < 3.5) 1.116 + res |= (c << i); 1.117 + i++; 1.118 + if (v <= 4.5) 1.119 + res |= (c << i); 1.120 + i++; 1.121 + if (v == 5.5) 1.122 + res |= (c << i); 1.123 + i++; 1.124 + if (v != 6.5) 1.125 + res |= (c << i); 1.126 + i++; 1.127 + if (v === 7.5) 1.128 + res |= (c << i); 1.129 + i++; 1.130 + if (v !== 8.5) 1.131 + res |= (c << i); 1.132 + i++; 1.133 + if (v) 1.134 + res |= (c << i); 1.135 + i++; 1.136 + return res; 1.137 +} 1.138 + 1.139 +function compareSAndSet(v) { 1.140 + var res = 0; 1.141 + var c; 1.142 + var i = 0; 1.143 + c = (v > "a"); 1.144 + res |= (c << i); 1.145 + i++; 1.146 + c = (v >= "b"); 1.147 + res |= (c << i); 1.148 + i++; 1.149 + c = (v < "c"); 1.150 + res |= (c << i); 1.151 + i++; 1.152 + c = (v <= "d"); 1.153 + res |= (c << i); 1.154 + i++; 1.155 + c = (v == "e"); 1.156 + res |= (c << i); 1.157 + i++; 1.158 + c = (v != "f"); 1.159 + res |= (c << i); 1.160 + i++; 1.161 + c = (v === "g"); 1.162 + res |= (c << i); 1.163 + i++; 1.164 + c = (v !== "h"); 1.165 + res |= (c << i); 1.166 + i++; 1.167 + return res; 1.168 +} 1.169 + 1.170 +function compareSAndBranch(v) { 1.171 + var res = 0; 1.172 + var c = 1; 1.173 + var i = 0; 1.174 + if (v > "a") 1.175 + res |= (c << i); 1.176 + i++; 1.177 + if (v >= "b") 1.178 + res |= (c << i); 1.179 + i++; 1.180 + if (v < "c") 1.181 + res |= (c << i); 1.182 + i++; 1.183 + if (v <= "d") 1.184 + res |= (c << i); 1.185 + i++; 1.186 + if (v == "e") 1.187 + res |= (c << i); 1.188 + i++; 1.189 + if (v != "f") 1.190 + res |= (c << i); 1.191 + i++; 1.192 + if (v === "g") 1.193 + res |= (c << i); 1.194 + i++; 1.195 + if (v !== "h") 1.196 + res |= (c << i); 1.197 + i++; 1.198 + if (v) 1.199 + res |= (c << i); 1.200 + i++; 1.201 + return res; 1.202 +} 1.203 + 1.204 +var expected = [ 1.205 + // compareIAndSet 1.206 + 172, 175, 171, 171, 179, 131, 227, 35, 1.207 + // compareIAndBranch 1.208 + 428, 431, 427, 427, 435, 387, 483, 291, 1.209 + // compareDAndSet 1.210 + 428, 428, 431, 427, 427, 435, 387, 483, 291, 416, 1.211 + // compareDAndBranch 1.212 + 428, 428, 431, 427, 427, 435, 387, 483, 291, 160, 172, 1.213 + // compareSAndSet 1.214 + 172, 175, 171, 171, 179, 131, 227, 35, 172, 1.215 + // compareSAndBranch 1.216 + 428, 431, 427, 427, 435, 387, 483, 291, 172 1.217 +]; 1.218 + 1.219 +var result = [ 1.220 + compareIAndSet(1), 1.221 + compareIAndSet(2), 1.222 + compareIAndSet(3), 1.223 + compareIAndSet(4), 1.224 + compareIAndSet(5), 1.225 + compareIAndSet(6), 1.226 + compareIAndSet(7), 1.227 + compareIAndSet(8), 1.228 + 1.229 + compareIAndBranch(1), 1.230 + compareIAndBranch(2), 1.231 + compareIAndBranch(3), 1.232 + compareIAndBranch(4), 1.233 + compareIAndBranch(5), 1.234 + compareIAndBranch(6), 1.235 + compareIAndBranch(7), 1.236 + compareIAndBranch(8), 1.237 + 1.238 + compareDAndSet(0.5), 1.239 + compareDAndSet(1.5), 1.240 + compareDAndSet(2.5), 1.241 + compareDAndSet(3.5), 1.242 + compareDAndSet(4.5), 1.243 + compareDAndSet(5.5), 1.244 + compareDAndSet(6.5), 1.245 + compareDAndSet(7.5), 1.246 + compareDAndSet(8.5), 1.247 + compareDAndSet(NaN), 1.248 + 1.249 + compareDAndBranch(0.5), 1.250 + compareDAndBranch(1.5), 1.251 + compareDAndBranch(2.5), 1.252 + compareDAndBranch(3.5), 1.253 + compareDAndBranch(4.5), 1.254 + compareDAndBranch(5.5), 1.255 + compareDAndBranch(6.5), 1.256 + compareDAndBranch(7.5), 1.257 + compareDAndBranch(8.5), 1.258 + compareDAndBranch(NaN), 1.259 + compareDAndBranch(0.0), 1.260 + 1.261 + compareSAndSet("a"), 1.262 + compareSAndSet("b"), 1.263 + compareSAndSet("c"), 1.264 + compareSAndSet("d"), 1.265 + compareSAndSet("e"), 1.266 + compareSAndSet("f"), 1.267 + compareSAndSet("g"), 1.268 + compareSAndSet("h"), 1.269 + compareSAndSet(""), 1.270 + 1.271 + compareSAndBranch("a"), 1.272 + compareSAndBranch("b"), 1.273 + compareSAndBranch("c"), 1.274 + compareSAndBranch("d"), 1.275 + compareSAndBranch("e"), 1.276 + compareSAndBranch("f"), 1.277 + compareSAndBranch("g"), 1.278 + compareSAndBranch("h"), 1.279 + compareSAndBranch("") 1.280 +]; 1.281 + 1.282 +assertEq(arraysEqual(result, expected), true);