tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

idiv-by-constant.js (1828B)


      1 function int_seq(count) {
      2    var arr = [];
      3    var x = 0xfac83126;
      4    while (count--) {
      5        x ^= x << 13;
      6        x ^= x >> 17;
      7        x ^= x << 5;
      8        arr.push(x | 0);
      9    }
     10    return arr;
     11 }
     12 
     13 function test(name, asm, ion, int) {
     14    let count = 10000;
     15    let seq = int_seq(count);
     16    for (let x of seq) {
     17        let rint = int(x);
     18        let rasm = asm(x);
     19        let rion = ion(x);
     20        // console.log(name, x, rint, rasm, rion);
     21        assertEq(rasm, rint);
     22        assertEq(rion, rint);
     23    }
     24 }
     25 
     26 var asmdiv2 = (function(m) {
     27    "use asm"
     28    function f(x) {
     29        x = x|0;
     30        var z = 0;
     31        z = ((x|0) / 2)|0;
     32        return z|0;
     33    }
     34    return f;
     35 })()
     36 
     37 var plaindiv2 = function(x) {
     38    x = x|0;
     39    var z = 0;
     40    z = ((x|0) / 2)|0;
     41    return z|0;
     42 }
     43 
     44 var interpdiv2 = function(x) {
     45    with({}){};
     46    x = x|0;
     47    var z = 0;
     48    z = ((x|0) / 2)|0;
     49    return z|0;
     50 }
     51 
     52 test("div2", asmdiv2, plaindiv2, interpdiv2);
     53 
     54 var asmdiv3 = (function(m) {
     55    "use asm"
     56    function f(x) {
     57        x = x|0;
     58        var z = 0;
     59        z = ((x|0) / 3)|0;
     60        return z|0;
     61    }
     62    return f;
     63 })()
     64 
     65 var plaindiv3 = function(x) {
     66    x = x|0;
     67    var z = 0;
     68    z = ((x|0) / 3)|0;
     69    return z|0;
     70 }
     71 
     72 var interpdiv3 = function(x) {
     73    with({}){};
     74    x = x|0;
     75    var z = 0;
     76    z = ((x|0) / 3)|0;
     77    return z|0;
     78 }
     79 
     80 test("div3", asmdiv3, plaindiv3, interpdiv3);
     81 
     82 var asmdiv7 = (function(m) {
     83    "use asm"
     84    function f(x) {
     85        x = x|0;
     86        var z = 0;
     87        z = ((x|0) / 7)|0;
     88        return z|0;
     89    }
     90    return f;
     91 })()
     92 
     93 var plaindiv7 = function(x) {
     94    x = x|0;
     95    var z = 0;
     96    z = ((x|0) / 7)|0;
     97    return z|0;
     98 }
     99 
    100 var interpdiv7 = function(x) {
    101    with({}){};
    102    x = x|0;
    103    var z = 0;
    104    z = ((x|0) / 7)|0;
    105    return z|0;
    106 }
    107 
    108 test("div7", asmdiv7, plaindiv7, interpdiv7);