source: trunk/lib_ir/test_pack.cpp @ 3919

Last change on this file since 3919 was 3919, checked in by linmengl, 5 years ago

adding more unittests

File size: 2.1 KB
Line 
1#include "utility.h"
2#include "s2p.h"
3#include <iostream>
4#include <cstdlib>
5using namespace std;
6
7int main(int argc, char **argv)
8{
9  SIMD_type a, b, c, d, e;
10
11  //Test packh_16
12  a = mvmd<32>::fill((int)rand() % 10000);
13  b = mvmd<32>::fill((int)rand() % 1000);
14  c = hsimd<16>::packh(a, b);
15  d = packh_16(a, b);
16
17  if (Store2String(c,1) != Store2String(d,1)) {
18    cout << Store2String(c,1) << endl;
19    cout << Store2String(d,1) << endl;
20    cout << "packh_16 faild." << endl;
21    return 1;
22  }
23
24  //Test packl_16
25  a = mvmd<32>::fill((int)rand() % 10000);
26  b = mvmd<32>::fill((int)rand() % 1000);
27  c = hsimd<16>::packl(a, b);
28  d = packl_16(a, b);
29
30  if (Store2String(c,1) != Store2String(d,1)) {
31    cout << Store2String(c,1) << endl;
32    cout << Store2String(d,1) << endl;
33    cout << "packl_16 faild." << endl;
34    return 1;
35  }
36
37  //Test ifh_1
38  a = mvmd<32>::fill((int)rand() % 10000);
39  b = mvmd<32>::fill((int)rand() % 1000);
40  c = mvmd<32>::fill((int)rand() % 1000);
41  d = ifh_1(a, b, c);
42  e = simd<1>::ifh(a, b, c);
43  if (Store2String(d,1) != Store2String(e,1)) {
44    cout << "ifh_1 faild." << endl;
45    return 1;
46  }
47
48  //Test srli_16
49  a = mvmd<32>::fill((int)rand() % 10000);
50  b = mvmd<16>::fill(1);
51  c = simd<16>::srli<1>(a);
52  d = srli_16(a, b);
53  if (Store2String(d,1) != Store2String(c,1)) {
54    cout << "srli_16 faild." << endl;
55    return 1;
56  }
57  a = mvmd<32>::fill((int)rand() % 10000);
58  b = mvmd<16>::fill(2);
59  c = simd<16>::srli<2>(a);
60  d = srli_16(a, b);
61  if (Store2String(d,1) != Store2String(c,1)) {
62    cout << "srli_16 faild." << endl;
63    return 1;
64  }
65
66  //Test slli_16
67  a = mvmd<32>::fill((int)rand() % 10000);
68  b = mvmd<16>::fill(1);
69  c = simd<16>::slli<1>(a);
70  d = slli_16(a, b);
71  if (Store2String(d,1) != Store2String(c,1)) {
72    cout << "slli_16 faild." << endl;
73    return 1;
74  }
75  a = mvmd<32>::fill((int)rand() % 10000);
76  b = mvmd<16>::fill(2);
77  c = simd<16>::slli<2>(a);
78  d = slli_16(a, b);
79  if (Store2String(d,1) != Store2String(c,1)) {
80    cout << "slli_16 faild." << endl;
81    return 1;
82  }
83
84
85  cout << "Test passed." << endl;
86  return 0;
87}
88
Note: See TracBrowser for help on using the repository browser.