source: trunk/libtest/bitscantest.cpp @ 3341

Last change on this file since 3341 was 2013, checked in by ksherdy, 7 years ago

Updated Scanner tests.

File size: 1.8 KB
Line 
1#include "../lib/idisa.hpp"
2#include "../lib/bitblock.hpp"
3#include "../lib/bitblock_scan.hpp"
4#include <iostream>
5using namespace std;
6
7int main() {
8        int failed_tests = 0;
9
10        BitBlock t = simd<128>::constant<1>();
11       
12        for (int i = 1; i < sizeof(BitBlock)*8; i++) {
13                t = bitblock::slli<1>(t);
14
15                int count_f = count_forward_zeroes(t);
16                int count_b = count_reverse_zeroes(t);
17                if (count_forward_zeroes(t) != i) {
18                        failed_tests++;
19                        cout << "Test failure: count_forward_zeroes(bitblock::sll(one, " << i << ") == " << count_f << endl;
20                }
21                if (count_reverse_zeroes(t) != (sizeof(BitBlock)*8-i-1)) {
22                        failed_tests++;
23                        cout << "Test failure: count_reverse_zeroes(bitblock::sll(one, " << i << ") == " << count_b << endl;
24                }
25        }
26
27        t = simd<128>::constant<0>();
28
29        ForwardScanner<BitBlock, scanword_t> f(&t);
30
31        f.scan_to_next();               
32        if (f.get_pos() != -1) {
33                failed_tests++;
34                cout << "Test failure: ForwardScanner Expected: " << -1 << " Actual: " << f.get_pos() << endl;
35        }
36
37        ReverseScanner<BitBlock, scanword_t> r(&t);
38
39        r.scan_to_next();               
40        if (r.get_pos() != -1) {
41                failed_tests++;
42                cout << "Test failure: ReverseScanner Expected: " << -1 << " Actual: " << r.get_pos() << endl;
43        }
44
45
46
47        t = simd<128>::constant<1>();
48
49        for (int i = 1; i < sizeof(BitBlock)*8; i++) {
50                t = bitblock::slli<1>(t);
51
52                ForwardScanner<BitBlock, scanword_t> f(&t);
53                ReverseScanner<BitBlock, scanword_t> r(&t);
54
55                f.scan_to_next();               
56                if (f.get_pos() != i) {
57                        failed_tests++;
58                        cout << "Test failure: ForwardScanner Expected: " << i << " Actual: " << f.get_pos() << endl;
59                }
60
61                r.scan_to_next();
62                if (r.get_pos() != i) {
63                        failed_tests++;
64                        cout << "Test failure: ReverseScanner Expected: " << i << " Actual: " << f.get_pos() << endl;
65
66                }
67        }
68
69        if (failed_tests == 0) cout << "All tests succeeded." << endl;
70
71}
72
73
Note: See TracBrowser for help on using the repository browser.