| load(libdir + 'array-compare.js'); |
| |
| function compareIAndSet(v) { |
| var res = 0; |
| var c; |
| var i = 0; |
| c = (v > 1); |
| res |= (c << i); |
| i++; |
| c = (v >= 2); |
| res |= (c << i); |
| i++; |
| c = (v < 3); |
| res |= (c << i); |
| i++; |
| c = (v <= 4); |
| res |= (c << i); |
| i++; |
| c = (v == 5); |
| res |= (c << i); |
| i++; |
| c = (v != 6); |
| res |= (c << i); |
| i++; |
| c = (v === 7); |
| res |= (c << i); |
| i++; |
| c = (v !== 8); |
| res |= (c << i); |
| i++; |
| return res; |
| } |
| |
| function compareIAndBranch(v) { |
| var res = 0; |
| var c = 1; |
| var i = 0; |
| if (v > 1) |
| res |= (c << i); |
| i++; |
| if (v >= 2) |
| res |= (c << i); |
| i++; |
| if (v < 3) |
| res |= (c << i); |
| i++; |
| if (v <= 4) |
| res |= (c << i); |
| i++; |
| if (v == 5) |
| res |= (c << i); |
| i++; |
| if (v != 6) |
| res |= (c << i); |
| i++; |
| if (v === 7) |
| res |= (c << i); |
| i++; |
| if (v !== 8) |
| res |= (c << i); |
| i++; |
| if (v) |
| res |= (c << i); |
| i++; |
| return res; |
| } |
| |
| function compareDAndSet(v) { |
| var res = 0; |
| var c; |
| var i = 0; |
| c = (v > 1.5); |
| res |= (c << i); |
| i++; |
| c = (v >= 2.5); |
| res |= (c << i); |
| i++; |
| c = (v < 3.5); |
| res |= (c << i); |
| i++; |
| c = (v <= 4.5); |
| res |= (c << i); |
| i++; |
| c = (v == 5.5); |
| res |= (c << i); |
| i++; |
| c = (v != 6.5); |
| res |= (c << i); |
| i++; |
| c = (v === 7.5); |
| res |= (c << i); |
| i++; |
| c = (v !== 8.5); |
| res |= (c << i); |
| i++; |
| c = (v !== 0.0); |
| res |= (c << i); |
| i++; |
| return res; |
| } |
| |
| function compareDAndBranch(v) { |
| var res = 0; |
| var c = 1; |
| var i = 0; |
| if (v > 1.5) |
| res |= (c << i); |
| i++; |
| if (v >= 2.5) |
| res |= (c << i); |
| i++; |
| if (v < 3.5) |
| res |= (c << i); |
| i++; |
| if (v <= 4.5) |
| res |= (c << i); |
| i++; |
| if (v == 5.5) |
| res |= (c << i); |
| i++; |
| if (v != 6.5) |
| res |= (c << i); |
| i++; |
| if (v === 7.5) |
| res |= (c << i); |
| i++; |
| if (v !== 8.5) |
| res |= (c << i); |
| i++; |
| if (v) |
| res |= (c << i); |
| i++; |
| return res; |
| } |
| |
| function compareSAndSet(v) { |
| var res = 0; |
| var c; |
| var i = 0; |
| c = (v > "a"); |
| res |= (c << i); |
| i++; |
| c = (v >= "b"); |
| res |= (c << i); |
| i++; |
| c = (v < "c"); |
| res |= (c << i); |
| i++; |
| c = (v <= "d"); |
| res |= (c << i); |
| i++; |
| c = (v == "e"); |
| res |= (c << i); |
| i++; |
| c = (v != "f"); |
| res |= (c << i); |
| i++; |
| c = (v === "g"); |
| res |= (c << i); |
| i++; |
| c = (v !== "h"); |
| res |= (c << i); |
| i++; |
| return res; |
| } |
| |
| function compareSAndBranch(v) { |
| var res = 0; |
| var c = 1; |
| var i = 0; |
| if (v > "a") |
| res |= (c << i); |
| i++; |
| if (v >= "b") |
| res |= (c << i); |
| i++; |
| if (v < "c") |
| res |= (c << i); |
| i++; |
| if (v <= "d") |
| res |= (c << i); |
| i++; |
| if (v == "e") |
| res |= (c << i); |
| i++; |
| if (v != "f") |
| res |= (c << i); |
| i++; |
| if (v === "g") |
| res |= (c << i); |
| i++; |
| if (v !== "h") |
| res |= (c << i); |
| i++; |
| if (v) |
| res |= (c << i); |
| i++; |
| return res; |
| } |
| |
| var expected = [ |
| // compareIAndSet |
| 172, 175, 171, 171, 179, 131, 227, 35, |
| // compareIAndBranch |
| 428, 431, 427, 427, 435, 387, 483, 291, |
| // compareDAndSet |
| 428, 428, 431, 427, 427, 435, 387, 483, 291, 416, |
| // compareDAndBranch |
| 428, 428, 431, 427, 427, 435, 387, 483, 291, 160, 172, |
| // compareSAndSet |
| 172, 175, 171, 171, 179, 131, 227, 35, 172, |
| // compareSAndBranch |
| 428, 431, 427, 427, 435, 387, 483, 291, 172 |
| ]; |
| |
| var result = [ |
| compareIAndSet(1), |
| compareIAndSet(2), |
| compareIAndSet(3), |
| compareIAndSet(4), |
| compareIAndSet(5), |
| compareIAndSet(6), |
| compareIAndSet(7), |
| compareIAndSet(8), |
| |
| compareIAndBranch(1), |
| compareIAndBranch(2), |
| compareIAndBranch(3), |
| compareIAndBranch(4), |
| compareIAndBranch(5), |
| compareIAndBranch(6), |
| compareIAndBranch(7), |
| compareIAndBranch(8), |
| |
| compareDAndSet(0.5), |
| compareDAndSet(1.5), |
| compareDAndSet(2.5), |
| compareDAndSet(3.5), |
| compareDAndSet(4.5), |
| compareDAndSet(5.5), |
| compareDAndSet(6.5), |
| compareDAndSet(7.5), |
| compareDAndSet(8.5), |
| compareDAndSet(NaN), |
| |
| compareDAndBranch(0.5), |
| compareDAndBranch(1.5), |
| compareDAndBranch(2.5), |
| compareDAndBranch(3.5), |
| compareDAndBranch(4.5), |
| compareDAndBranch(5.5), |
| compareDAndBranch(6.5), |
| compareDAndBranch(7.5), |
| compareDAndBranch(8.5), |
| compareDAndBranch(NaN), |
| compareDAndBranch(0.0), |
| |
| compareSAndSet("a"), |
| compareSAndSet("b"), |
| compareSAndSet("c"), |
| compareSAndSet("d"), |
| compareSAndSet("e"), |
| compareSAndSet("f"), |
| compareSAndSet("g"), |
| compareSAndSet("h"), |
| compareSAndSet(""), |
| |
| compareSAndBranch("a"), |
| compareSAndBranch("b"), |
| compareSAndBranch("c"), |
| compareSAndBranch("d"), |
| compareSAndBranch("e"), |
| compareSAndBranch("f"), |
| compareSAndBranch("g"), |
| compareSAndBranch("h"), |
| compareSAndBranch("") |
| ]; |
| |
| assertEq(arraysEqual(result, expected), true); |