Home | History | Annotate | Download | only in asm
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 var stdlib = this;
      6 var foreign = {};
      7 var heap = new ArrayBuffer(64 * 1024);
      8 
      9 
     10 var switch1 = (function(stdlib, foreign, heap) {
     11   "use asm";
     12   function switch1(i) {
     13     i = i|0;
     14     switch (i) {
     15       case 0: return 1;
     16       case 1: return 2;
     17       default: return i|0;
     18     }
     19   }
     20   return { switch1: switch1 };
     21 })(stdlib, foreign, heap).switch1;
     22 
     23 assertEquals(1, switch1(0));
     24 assertEquals(2, switch1(1));
     25 for (var i = -2147483648; i < 2147483648; i += 3999773) {
     26   assertEquals(i, switch1(i));
     27 }
     28 
     29 
     30 var switch2 = (function(stdlib, foreign, heap) {
     31   "use asm";
     32   function switch2(i) {
     33     i = i|0;
     34     var j = 0;
     35     switch (i) {
     36       case 0: j = 1; break;
     37       case 1: j = 2; break;
     38       case 2: j = 3; break;
     39       default: j = i|0; break;
     40     }
     41     return j|0;
     42   }
     43   return { switch2: switch2 };
     44 })(stdlib, foreign, heap).switch2;
     45 
     46 assertEquals(1, switch2(0));
     47 assertEquals(2, switch2(1));
     48 assertEquals(3, switch2(2));
     49 for (var i = -2147483648; i < 2147483648; i += 3999773) {
     50   assertEquals(i, switch2(i));
     51 }
     52 
     53 
     54 var switch3 = (function(stdlib, foreign, heap) {
     55   "use asm";
     56   function switch3(i) {
     57     i = i|0;
     58     var j = 0;
     59     switch (i) {
     60       case 0:
     61       case 1: j = 1; break;
     62       case 2:
     63       case 3: j = 2; break;
     64       case 4:
     65       case 5: j = 3; break;
     66       default: j = 0; break;
     67     }
     68     return j|0;
     69   }
     70   return { switch3: switch3 };
     71 })(stdlib, foreign, heap).switch3;
     72 
     73 assertEquals(1, switch3(0));
     74 assertEquals(1, switch3(1));
     75 assertEquals(2, switch3(2));
     76 assertEquals(2, switch3(3));
     77 assertEquals(3, switch3(4));
     78 assertEquals(3, switch3(5));
     79 for (var i = -2147483648; i < 2147483648; i += 3999773) {
     80   assertEquals(0, switch3(i));
     81 }
     82 
     83 
     84 var switch4 = (function(stdlib, foreign, heap) {
     85   "use asm";
     86   function switch4(i) {
     87     i = i|0;
     88     switch (i) {
     89       case -1:
     90       case 1:
     91         return 0;
     92 
     93       case -2:
     94       case 2:
     95         return 1;
     96 
     97       case -3:
     98       case 3:
     99         return 2;
    100 
    101       case -8:
    102       case 8:
    103         return 3;
    104 
    105       default:
    106         return 4;
    107     }
    108   }
    109   return { switch4: switch4 };
    110 })(stdlib, foreign, heap).switch4;
    111 
    112 assertEquals(4, switch4(0));
    113 assertEquals(0, switch4(-1));
    114 assertEquals(0, switch4(1));
    115 assertEquals(1, switch4(-2));
    116 assertEquals(1, switch4(2));
    117 assertEquals(3, switch4(-8));
    118 assertEquals(3, switch4(8));
    119 assertEquals(4, switch4(-123456789));
    120 assertEquals(4, switch4(123456789));
    121