source: trunk/lib_ir/test_pack.cpp @ 3923

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

copy xmlwf in and compile it with ir lib

File size: 2.8 KB
Line 
1#include "utility.h"
2#include "s2p.h"
3#include "s2p_back.hpp"
4#include <iostream>
5#include <cstdlib>
6using namespace std;
7
8int main(int argc, char **argv)
9{
10  SIMD_type a, b, c, d, e;
11
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);
17
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  }
24
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);
30
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  }
37
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  }
48
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  }
66
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  }
84
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;
106  }
107
108  cout << "Test passed." << endl;
109  return 0;
110}
111
Note: See TracBrowser for help on using the repository browser.