LCOV - code coverage report
Current view: top level - test/common/wasm - test-signatures.h (source / functions) Hit Total Coverage
Test: app.info Lines: 44 44 100.0 %
Date: 2019-03-21 Functions: 2 2 100.0 %

          Line data    Source code
       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             : #ifndef TEST_SIGNATURES_H
       6             : #define TEST_SIGNATURES_H
       7             : 
       8             : #include "src/signature.h"
       9             : #include "src/wasm/value-type.h"
      10             : #include "src/wasm/wasm-opcodes.h"
      11             : 
      12             : namespace v8 {
      13             : namespace internal {
      14             : namespace wasm {
      15             : 
      16             : // A helper class with many useful signatures in order to simplify tests.
      17             : class TestSignatures {
      18             :  public:
      19        1038 :   TestSignatures()
      20             :       : sig_i_v(1, 0, kIntTypes4),
      21             :         sig_i_i(1, 1, kIntTypes4),
      22             :         sig_i_ii(1, 2, kIntTypes4),
      23             :         sig_i_iii(1, 3, kIntTypes4),
      24             :         sig_i_f(1, 1, kIntFloatTypes4),
      25             :         sig_i_ff(1, 2, kIntFloatTypes4),
      26             :         sig_i_d(1, 1, kIntDoubleTypes4),
      27             :         sig_i_dd(1, 2, kIntDoubleTypes4),
      28             :         sig_i_r(1, 1, kIntRefTypes4),
      29             :         sig_i_rr(1, 2, kIntRefTypes4),
      30             :         sig_l_v(1, 0, kLongTypes4),
      31             :         sig_l_l(1, 1, kLongTypes4),
      32             :         sig_l_ll(1, 2, kLongTypes4),
      33             :         sig_i_ll(1, 2, kIntLongTypes4),
      34             :         sig_f_f(1, 1, kFloatTypes4),
      35             :         sig_f_ff(1, 2, kFloatTypes4),
      36             :         sig_d_d(1, 1, kDoubleTypes4),
      37             :         sig_d_dd(1, 2, kDoubleTypes4),
      38             :         sig_r_v(1, 0, kRefTypes4),
      39             :         sig_v_v(0, 0, kIntTypes4),
      40             :         sig_v_i(0, 1, kIntTypes4),
      41             :         sig_v_ii(0, 2, kIntTypes4),
      42             :         sig_v_iii(0, 3, kIntTypes4),
      43             :         sig_s_i(1, 1, kSimd128IntTypes4),
      44             :         sig_ii_v(2, 0, kIntTypes4),
      45       10380 :         sig_iii_v(3, 0, kIntTypes4) {
      46             :     // I used C++ and you won't believe what happened next....
      47        5190 :     for (int i = 0; i < 4; i++) kIntTypes4[i] = kWasmI32;
      48        5190 :     for (int i = 0; i < 4; i++) kLongTypes4[i] = kWasmI64;
      49        5190 :     for (int i = 0; i < 4; i++) kFloatTypes4[i] = kWasmF32;
      50        5190 :     for (int i = 0; i < 4; i++) kDoubleTypes4[i] = kWasmF64;
      51        5190 :     for (int i = 0; i < 4; i++) kRefTypes4[i] = kWasmAnyRef;
      52        5190 :     for (int i = 0; i < 4; i++) kIntLongTypes4[i] = kWasmI64;
      53        5190 :     for (int i = 0; i < 4; i++) kIntFloatTypes4[i] = kWasmF32;
      54        5190 :     for (int i = 0; i < 4; i++) kIntDoubleTypes4[i] = kWasmF64;
      55        5190 :     for (int i = 0; i < 4; i++) kIntRefTypes4[i] = kWasmAnyRef;
      56        5190 :     for (int i = 0; i < 4; i++) kSimd128IntTypes4[i] = kWasmS128;
      57        1038 :     kIntLongTypes4[0] = kWasmI32;
      58        1038 :     kIntFloatTypes4[0] = kWasmI32;
      59        1038 :     kIntDoubleTypes4[0] = kWasmI32;
      60        1038 :     kIntRefTypes4[0] = kWasmI32;
      61        1038 :     kSimd128IntTypes4[1] = kWasmI32;
      62        1038 :   }
      63             : 
      64          48 :   FunctionSig* i_v() { return &sig_i_v; }
      65        1309 :   FunctionSig* i_i() { return &sig_i_i; }
      66          22 :   FunctionSig* i_ii() { return &sig_i_ii; }
      67           1 :   FunctionSig* i_iii() { return &sig_i_iii; }
      68             : 
      69          16 :   FunctionSig* i_f() { return &sig_i_f; }
      70           1 :   FunctionSig* i_ff() { return &sig_i_ff; }
      71          14 :   FunctionSig* i_d() { return &sig_i_d; }
      72           1 :   FunctionSig* i_dd() { return &sig_i_dd; }
      73             : 
      74          28 :   FunctionSig* l_v() { return &sig_l_v; }
      75         963 :   FunctionSig* l_l() { return &sig_l_l; }
      76           4 :   FunctionSig* l_ll() { return &sig_l_ll; }
      77           1 :   FunctionSig* i_ll() { return &sig_i_ll; }
      78             :   FunctionSig* i_r() { return &sig_i_r; }
      79             :   FunctionSig* i_rr() { return &sig_i_rr; }
      80             : 
      81           3 :   FunctionSig* f_f() { return &sig_f_f; }
      82          52 :   FunctionSig* f_ff() { return &sig_f_ff; }
      83           3 :   FunctionSig* d_d() { return &sig_d_d; }
      84          46 :   FunctionSig* d_dd() { return &sig_d_dd; }
      85             : 
      86           1 :   FunctionSig* r_v() { return &sig_r_v; }
      87             : 
      88        1037 :   FunctionSig* v_v() { return &sig_v_v; }
      89         329 :   FunctionSig* v_i() { return &sig_v_i; }
      90           1 :   FunctionSig* v_ii() { return &sig_v_ii; }
      91             :   FunctionSig* v_iii() { return &sig_v_iii; }
      92             :   FunctionSig* s_i() { return &sig_s_i; }
      93             : 
      94           5 :   FunctionSig* ii_v() { return &sig_ii_v; }
      95             :   FunctionSig* iii_v() { return &sig_iii_v; }
      96             : 
      97        1440 :   FunctionSig* many(Zone* zone, ValueType ret, ValueType param, int count) {
      98        1440 :     FunctionSig::Builder builder(zone, ret == kWasmStmt ? 0 : 1, count);
      99        1440 :     if (ret != kWasmStmt) builder.AddReturn(ret);
     100       57600 :     for (int i = 0; i < count; i++) {
     101             :       builder.AddParam(param);
     102             :     }
     103        1440 :     return builder.Build();
     104             :   }
     105             : 
     106             :  private:
     107             :   ValueType kIntTypes4[4];
     108             :   ValueType kLongTypes4[4];
     109             :   ValueType kFloatTypes4[4];
     110             :   ValueType kDoubleTypes4[4];
     111             :   ValueType kRefTypes4[4];
     112             :   ValueType kIntLongTypes4[4];
     113             :   ValueType kIntFloatTypes4[4];
     114             :   ValueType kIntDoubleTypes4[4];
     115             :   ValueType kIntRefTypes4[4];
     116             :   ValueType kSimd128IntTypes4[4];
     117             : 
     118             :   FunctionSig sig_i_v;
     119             :   FunctionSig sig_i_i;
     120             :   FunctionSig sig_i_ii;
     121             :   FunctionSig sig_i_iii;
     122             : 
     123             :   FunctionSig sig_i_f;
     124             :   FunctionSig sig_i_ff;
     125             :   FunctionSig sig_i_d;
     126             :   FunctionSig sig_i_dd;
     127             :   FunctionSig sig_i_r;
     128             :   FunctionSig sig_i_rr;
     129             : 
     130             :   FunctionSig sig_l_v;
     131             :   FunctionSig sig_l_l;
     132             :   FunctionSig sig_l_ll;
     133             :   FunctionSig sig_i_ll;
     134             : 
     135             :   FunctionSig sig_f_f;
     136             :   FunctionSig sig_f_ff;
     137             :   FunctionSig sig_d_d;
     138             :   FunctionSig sig_d_dd;
     139             : 
     140             :   FunctionSig sig_r_v;
     141             : 
     142             :   FunctionSig sig_v_v;
     143             :   FunctionSig sig_v_i;
     144             :   FunctionSig sig_v_ii;
     145             :   FunctionSig sig_v_iii;
     146             :   FunctionSig sig_s_i;
     147             : 
     148             :   FunctionSig sig_ii_v;
     149             :   FunctionSig sig_iii_v;
     150             : };
     151             : }  // namespace wasm
     152             : }  // namespace internal
     153             : }  // namespace v8
     154             : 
     155             : #endif  // TEST_SIGNATURES_H

Generated by: LCOV version 1.10