source: trunk/libtest/bitscantest.cpp @ 2012

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

Added test cases for Forward and Reverse scanners.

File size: 1.3 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<1>();
28
29        for (int i = 1; i < sizeof(BitBlock)*8; i++) {
30                t = bitblock::slli<1>(t);
31
32                ForwardScanner<BitBlock, scanword_t> f(&t);
33                ReverseScanner<BitBlock, scanword_t> r(&t);
34
35                f.scan_to_next();               
36                if (f.get_pos() != i) {
37                        failed_tests++;
38                        cout << "Test failure: count_forward_zeroes(bitblock::sll(one, " << i << ") == " << f.get_pos() << endl;
39                }
40
41                r.scan_to_next();
42                if (r.get_pos() != i) {
43                        failed_tests++;
44                        cout << "Test failure: count_reverse_zeroes(bitblock::sll(one, " << i << ") == " << r.get_pos() << endl;
45                }
46        }
47
48        if (failed_tests == 0) cout << "All tests succeeded." << endl;
49
50}
51
52
Note: See TracBrowser for help on using the repository browser.