Ignore:
Timestamp:
Aug 19, 2014, 8:09:59 PM (5 years ago)
Author:
linmengl
Message:

add p2s.ll file, p2s_step works now

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib_ir/test_pack.cpp

    r3922 r4050  
    22#include "s2p.h"
    33#include "s2p_back.hpp"
     4#include "p2s.h"
     5#include "p2s_back.hpp"
     6#include "ir_common.h"
    47#include <iostream>
    58#include <cstdlib>
     
    1013  SIMD_type a, b, c, d, e;
    1114
    12   //Test packh_16
    13   a = mvmd<32>::fill((int)rand() % 10000);
    14   b = mvmd<32>::fill((int)rand() % 1000);
    15   c = hsimd<16>::packh(a, b);
    16   d = packh_16(a, b);
     15  for (unsigned i = 0; i < 50; i++) {
     16    //Test packh_16
     17    a = mvmd<32>::fill((int)rand() % 10000);
     18    b = mvmd<32>::fill((int)rand() % 1000);
     19    c = hsimd<16>::packh(a, b);
     20    d = packh_16(a, b);
    1721
    18   if (Store2String(c,1) != Store2String(d,1)) {
    19     cout << Store2String(c,1) << endl;
    20     cout << Store2String(d,1) << endl;
    21     cout << "packh_16 faild." << endl;
    22     return 1;
    23   }
     22    if (Store2String(c,1) != Store2String(d,1)) {
     23      cout << Store2String(c,1) << endl;
     24      cout << Store2String(d,1) << endl;
     25      cout << "packh_16 faild." << endl;
     26      return 1;
     27    }
    2428
    25   //Test packl_16
    26   a = mvmd<32>::fill((int)rand() % 10000);
    27   b = mvmd<32>::fill((int)rand() % 1000);
    28   c = hsimd<16>::packl(a, b);
    29   d = packl_16(a, b);
     29    //Test packl_16
     30    a = mvmd<32>::fill((int)rand() % 10000);
     31    b = mvmd<32>::fill((int)rand() % 1000);
     32    c = hsimd<16>::packl(a, b);
     33    d = packl_16(a, b);
    3034
    31   if (Store2String(c,1) != Store2String(d,1)) {
    32     cout << Store2String(c,1) << endl;
    33     cout << Store2String(d,1) << endl;
    34     cout << "packl_16 faild." << endl;
    35     return 1;
    36   }
     35    if (Store2String(c,1) != Store2String(d,1)) {
     36      cout << Store2String(c,1) << endl;
     37      cout << Store2String(d,1) << endl;
     38      cout << "packl_16 faild." << endl;
     39      return 1;
     40    }
    3741
    38   //Test ifh_1
    39   a = mvmd<32>::fill((int)rand() % 10000);
    40   b = mvmd<32>::fill((int)rand() % 1000);
    41   c = mvmd<32>::fill((int)rand() % 1000);
    42   d = ifh_1(a, b, c);
    43   e = simd<1>::ifh(a, b, c);
    44   if (Store2String(d,1) != Store2String(e,1)) {
    45     cout << "ifh_1 faild." << endl;
    46     return 1;
    47   }
     42    //Test ifh_1
     43    a = mvmd<32>::fill((int)rand() % 10000);
     44    b = mvmd<32>::fill((int)rand() % 1000);
     45    c = mvmd<32>::fill((int)rand() % 1000);
     46    d = ifh_1(a, b, c);
     47    e = simd<1>::ifh(a, b, c);
     48    if (Store2String(d,1) != Store2String(e,1)) {
     49      cout << "ifh_1 faild." << endl;
     50      return 1;
     51    }
    4852
    49   //Test srli_16
    50   a = mvmd<32>::fill((int)rand() % 10000);
    51   b = mvmd<16>::fill(1);
    52   c = simd<16>::srli<1>(a);
    53   d = srli_16(a, b);
    54   if (Store2String(d,1) != Store2String(c,1)) {
    55     cout << "srli_16 faild." << endl;
    56     return 1;
    57   }
    58   a = mvmd<32>::fill((int)rand() % 10000);
    59   b = mvmd<16>::fill(2);
    60   c = simd<16>::srli<2>(a);
    61   d = srli_16(a, b);
    62   if (Store2String(d,1) != Store2String(c,1)) {
    63     cout << "srli_16 faild." << endl;
    64     return 1;
    65   }
     53    //Test srli_16
     54    a = mvmd<32>::fill((int)rand() % 10000);
     55    b = mvmd<16>::fill(1);
     56    c = simd<16>::srli<1>(a);
     57    d = srli_16(a, b);
     58    if (Store2String(d,1) != Store2String(c,1)) {
     59      cout << "srli_16 faild." << endl;
     60      return 1;
     61    }
     62    a = mvmd<32>::fill((int)rand() % 10000);
     63    b = mvmd<16>::fill(2);
     64    c = simd<16>::srli<2>(a);
     65    d = srli_16(a, b);
     66    if (Store2String(d,1) != Store2String(c,1)) {
     67      cout << "srli_16 faild." << endl;
     68      return 1;
     69    }
    6670
    67   //Test slli_16
    68   a = mvmd<32>::fill((int)rand() % 10000);
    69   b = mvmd<16>::fill(1);
    70   c = simd<16>::slli<1>(a);
    71   d = slli_16(a, b);
    72   if (Store2String(d,1) != Store2String(c,1)) {
    73     cout << "slli_16 faild." << endl;
    74     return 1;
    75   }
    76   a = mvmd<32>::fill((int)rand() % 10000);
    77   b = mvmd<16>::fill(2);
    78   c = simd<16>::slli<2>(a);
    79   d = slli_16(a, b);
    80   if (Store2String(d,1) != Store2String(c,1)) {
    81     cout << "slli_16 faild." << endl;
    82     return 1;
    83   }
     71    //Test slli_16
     72    a = mvmd<32>::fill((int)rand() % 10000);
     73    b = mvmd<16>::fill(1);
     74    c = simd<16>::slli<1>(a);
     75    d = slli_16(a, b);
     76    if (Store2String(d,1) != Store2String(c,1)) {
     77      cout << "slli_16 faild." << endl;
     78      return 1;
     79    }
     80    a = mvmd<32>::fill((int)rand() % 10000);
     81    b = mvmd<16>::fill(2);
     82    c = simd<16>::slli<2>(a);
     83    d = slli_16(a, b);
     84    if (Store2String(d,1) != Store2String(c,1)) {
     85      cout << "slli_16 faild." << endl;
     86      return 1;
     87    }
    8488
    85   //Test s2p_step
    86   SIMD_type hi_mask = simd<2>::himask(), p0, p1, q0, q1;
    87   a = mvmd<32>::fill((int)rand() % 10000);
    88   b = mvmd<32>::fill((int)rand() % 10000);
    89   c = mvmd<16>::fill(2);
    90   s2p_step(a, b, hi_mask, 2, p0, p1);
    91   s2p_step_ir(a, b, hi_mask, c, &q0, &q1);
    92   if (Store2String(p0,1) != Store2String(q0,1) ||
    93       Store2String(p1,1) != Store2String(q1,1)) {
    94     cout << "s2p_step failed." << endl;
    95     return 1;
    96   }
    97   a = mvmd<32>::fill((int)rand() % 10000);
    98   b = mvmd<32>::fill((int)rand() % 10000);
    99   c = mvmd<16>::fill(4);
    100   s2p_step(a, b, hi_mask, 4, p0, p1);
    101   s2p_step_ir(a, b, hi_mask, c, &q0, &q1);
    102   if (Store2String(p0,1) != Store2String(q0,1) ||
    103       Store2String(p1,1) != Store2String(q1,1)) {
    104     cout << "s2p_step failed." << endl;
    105     return 1;
     89    //Test s2p_step
     90    SIMD_type hi_mask = simd<2>::himask(), p0, p1, q0, q1;
     91    a = mvmd<32>::fill((int)rand() % 10000);
     92    b = mvmd<32>::fill((int)rand() % 10000);
     93    c = mvmd<16>::fill(2);
     94    s2p_step(a, b, hi_mask, 2, p0, p1);
     95    s2p_step_ir(a, b, hi_mask, c, &q0, &q1);
     96    if (Store2String(p0,1) != Store2String(q0,1) ||
     97        Store2String(p1,1) != Store2String(q1,1)) {
     98      cout << "s2p_step failed." << endl;
     99      return 1;
     100    }
     101    a = mvmd<32>::fill((int)rand() % 10000);
     102    b = mvmd<32>::fill((int)rand() % 10000);
     103    c = mvmd<16>::fill(4);
     104    s2p_step(a, b, hi_mask, 4, p0, p1);
     105    s2p_step_ir(a, b, hi_mask, c, &q0, &q1);
     106    if (Store2String(p0,1) != Store2String(q0,1) ||
     107        Store2String(p1,1) != Store2String(q1,1)) {
     108      cout << "s2p_step failed." << endl;
     109      return 1;
     110    }
     111
     112    //Test esimd<8>::mergeh
     113    c = mergeh_8(a, b);
     114    d = esimd<8>::mergeh(a, b);
     115    if (Store2String(c,1) != Store2String(d,1)) {
     116      cout << "mergh8 failed." << endl;
     117      return 1;
     118    }
     119
     120    //Test esimd<8>::mergel
     121    c = mergel_8(a, b);
     122    d = esimd<8>::mergel(a, b);
     123    if (Store2String(c,1) != Store2String(d,1)) {
     124      cout << "mergl8 failed." << endl;
     125      return 1;
     126    }
     127
     128    //Test p2s_step
     129    p2s_step_ir(a, b, simd<8>::himask(), mvmd<16>::fill(1), &p0, &p1);
     130    p2s_step(a, b, simd<8>::himask(), 1, q0, q1);
     131    if (Store2String(p0,1) != Store2String(q0,1) ||
     132        Store2String(p1,1) != Store2String(q1,1)) {
     133      cout << "p2s_step failed." << endl;
     134      return 1;
     135    }
     136    p2s_step_ir(a, b, simd<8>::himask(), mvmd<16>::fill(2), &p0, &p1);
     137    p2s_step(a, b, simd<8>::himask(), 2, q0, q1);
     138    if (Store2String(p0,1) != Store2String(q0,1) ||
     139        Store2String(p1,1) != Store2String(q1,1)) {
     140      cout << "p2s_step failed." << endl;
     141      return 1;
     142    }
     143    p2s_step_ir(a, b, simd<8>::himask(), mvmd<16>::fill(4), &p0, &p1);
     144    p2s_step(a, b, simd<8>::himask(), 4, q0, q1);
     145    if (Store2String(p0,1) != Store2String(q0,1) ||
     146        Store2String(p1,1) != Store2String(q1,1)) {
     147      cout << "p2s_step failed." << endl;
     148      return 1;
     149    }
    106150  }
    107151
Note: See TracChangeset for help on using the changeset viewer.