tor-browser

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

testShiftRightArithmetic.js (1355B)


      1 /* Test the proper operation of the arithmetic right shift operator. This is
      2 * especially important on ARM as an explicit mask is required at the native
      3 * instruction level. */
      4 
      5 /* Test different combinations of literals/variables. */
      6 var s = 4;
      7 var t = 100;
      8 assertEq(42 >> s, 2);
      9 assertEq(s >> 1, 2);
     10 assertEq(23 >> 3, 2);
     11 assertEq(t >> s, 6);
     12 
     13 
     14 function testShiftRightArithmetic()
     15 {
     16    var r = [];
     17    var i = 0;
     18    var j = 0;
     19 
     20    var shifts = [0,1,7,8,15,16,23,24,31];
     21 
     22    /* Samples from the simple shift range. */
     23    for (i = 0; i < shifts.length; i++)
     24        r[j++] = -2147483648 >> shifts[i];
     25 
     26    /* Samples outside the normal shift range. */
     27    for (i = 0; i < shifts.length; i++)
     28        r[j++] = -2147483648 >> (shifts[i] + 32);
     29 
     30    /* Samples far outside the normal shift range. */
     31    for (i = 0; i < shifts.length; i++)
     32        r[j++] = -2147483648 >> (shifts[i] + 224);
     33    for (i = 0; i < shifts.length; i++)
     34        r[j++] = -2147483648 >> (shifts[i] + 256);
     35 
     36    return r.join(",");
     37 }
     38 assertEq(testShiftRightArithmetic(), 
     39  "-2147483648,-1073741824,-16777216,-8388608,-65536,-32768,-256,-128,-1,"+
     40  "-2147483648,-1073741824,-16777216,-8388608,-65536,-32768,-256,-128,-1,"+
     41  "-2147483648,-1073741824,-16777216,-8388608,-65536,-32768,-256,-128,-1,"+
     42  "-2147483648,-1073741824,-16777216,-8388608,-65536,-32768,-256,-128,-1");