112855Sgabeblack@google.com#include "systemc.h"
212855Sgabeblack@google.com
312855Sgabeblack@google.com#define TEST_VAR(var, v) \
412855Sgabeblack@google.com    var = v; \
512855Sgabeblack@google.com	sprintf(buffer, "%16llx", var.to_uint64()); \
612855Sgabeblack@google.com	bv64 = var; \
712855Sgabeblack@google.com	cout << #var << " = " << v << " : " << bv64 << " : " << buffer << endl;
812855Sgabeblack@google.com
912855Sgabeblack@google.com#define TEST(v) \
1012855Sgabeblack@google.com	cout << endl; \
1112855Sgabeblack@google.com	TEST_VAR(  bu01, v ); \
1212855Sgabeblack@google.com	TEST_VAR(  bu02, v ); \
1312855Sgabeblack@google.com	TEST_VAR(  bu03, v ); \
1412855Sgabeblack@google.com	TEST_VAR(  bu04, v ); \
1512855Sgabeblack@google.com	TEST_VAR(  bu05, v ); \
1612855Sgabeblack@google.com	TEST_VAR(  bu06, v ); \
1712855Sgabeblack@google.com	TEST_VAR(  bu07, v ); \
1812855Sgabeblack@google.com	TEST_VAR(  bu08, v ); \
1912855Sgabeblack@google.com	TEST_VAR(  bu09, v ); \
2012855Sgabeblack@google.com	TEST_VAR(  bu10, v ); \
2112855Sgabeblack@google.com	TEST_VAR(  bu11, v ); \
2212855Sgabeblack@google.com	TEST_VAR(  bu12, v ); \
2312855Sgabeblack@google.com	TEST_VAR(  bu13, v ); \
2412855Sgabeblack@google.com	TEST_VAR(  bu14, v ); \
2512855Sgabeblack@google.com	TEST_VAR(  bu15, v ); \
2612855Sgabeblack@google.com	TEST_VAR(  bu16, v ); \
2712855Sgabeblack@google.com	TEST_VAR(  bu17, v ); \
2812855Sgabeblack@google.com	TEST_VAR(  bu18, v ); \
2912855Sgabeblack@google.com	TEST_VAR(  bu19, v ); \
3012855Sgabeblack@google.com	TEST_VAR(  bu20, v ); \
3112855Sgabeblack@google.com	TEST_VAR(  bu21, v ); \
3212855Sgabeblack@google.com	TEST_VAR(  bu22, v ); \
3312855Sgabeblack@google.com	TEST_VAR(  bu23, v ); \
3412855Sgabeblack@google.com	TEST_VAR(  bu24, v ); \
3512855Sgabeblack@google.com	TEST_VAR(  bu25, v ); \
3612855Sgabeblack@google.com	TEST_VAR(  bu26, v ); \
3712855Sgabeblack@google.com	TEST_VAR(  bu27, v ); \
3812855Sgabeblack@google.com	TEST_VAR(  bu28, v ); \
3912855Sgabeblack@google.com	TEST_VAR(  bu29, v ); \
4012855Sgabeblack@google.com	TEST_VAR(  bu30, v ); \
4112855Sgabeblack@google.com	TEST_VAR(  bu31, v ); \
4212855Sgabeblack@google.com	TEST_VAR(  bu32, v ); \
4312855Sgabeblack@google.com	TEST_VAR(  bu33, v ); \
4412855Sgabeblack@google.com	TEST_VAR(  bu34, v ); \
4512855Sgabeblack@google.com	TEST_VAR(  bu35, v ); \
4612855Sgabeblack@google.com	TEST_VAR(  bu36, v ); \
4712855Sgabeblack@google.com	TEST_VAR(  bu37, v ); \
4812855Sgabeblack@google.com	TEST_VAR(  bu38, v ); \
4912855Sgabeblack@google.com	TEST_VAR(  bu39, v ); \
5012855Sgabeblack@google.com	TEST_VAR(  bu40, v ); \
5112855Sgabeblack@google.com	TEST_VAR(  bu41, v ); \
5212855Sgabeblack@google.com	TEST_VAR(  bu42, v ); \
5312855Sgabeblack@google.com	TEST_VAR(  bu43, v ); \
5412855Sgabeblack@google.com	TEST_VAR(  bu44, v ); \
5512855Sgabeblack@google.com	TEST_VAR(  bu45, v ); \
5612855Sgabeblack@google.com	TEST_VAR(  bu46, v ); \
5712855Sgabeblack@google.com	TEST_VAR(  bu47, v ); \
5812855Sgabeblack@google.com	TEST_VAR(  bu48, v ); \
5912855Sgabeblack@google.com	TEST_VAR(  bu49, v ); \
6012855Sgabeblack@google.com	TEST_VAR(  bu50, v ); \
6112855Sgabeblack@google.com	TEST_VAR(  bu51, v ); \
6212855Sgabeblack@google.com	TEST_VAR(  bu52, v ); \
6312855Sgabeblack@google.com	TEST_VAR(  bu53, v ); \
6412855Sgabeblack@google.com	TEST_VAR(  bu54, v ); \
6512855Sgabeblack@google.com	TEST_VAR(  bu55, v ); \
6612855Sgabeblack@google.com	TEST_VAR(  bu56, v ); \
6712855Sgabeblack@google.com	TEST_VAR(  bu57, v ); \
6812855Sgabeblack@google.com	TEST_VAR(  bu58, v ); \
6912855Sgabeblack@google.com	TEST_VAR(  bu59, v ); \
7012855Sgabeblack@google.com	TEST_VAR(  bu60, v ); \
7112855Sgabeblack@google.com	TEST_VAR(  bu61, v ); \
7212855Sgabeblack@google.com	TEST_VAR(  bu62, v ); \
7312855Sgabeblack@google.com	TEST_VAR(  bu63, v ); \
7412855Sgabeblack@google.com	TEST_VAR(  bu64, v );
7512855Sgabeblack@google.com
7612855Sgabeblack@google.comint sc_main(int argc, char* argv[])
7712855Sgabeblack@google.com{
7812855Sgabeblack@google.com	char           buffer[256];
7912855Sgabeblack@google.com	sc_biguint<1>  bu01;
8012855Sgabeblack@google.com	sc_biguint<2>  bu02;
8112855Sgabeblack@google.com	sc_biguint<3>  bu03;
8212855Sgabeblack@google.com	sc_biguint<4>  bu04;
8312855Sgabeblack@google.com	sc_biguint<5>  bu05;
8412855Sgabeblack@google.com	sc_biguint<6>  bu06;
8512855Sgabeblack@google.com	sc_biguint<7>  bu07;
8612855Sgabeblack@google.com	sc_biguint<8>  bu08;
8712855Sgabeblack@google.com	sc_biguint<9>  bu09;
8812855Sgabeblack@google.com	sc_biguint<10>  bu10;
8912855Sgabeblack@google.com	sc_biguint<11>  bu11;
9012855Sgabeblack@google.com	sc_biguint<12>  bu12;
9112855Sgabeblack@google.com	sc_biguint<13>  bu13;
9212855Sgabeblack@google.com	sc_biguint<14>  bu14;
9312855Sgabeblack@google.com	sc_biguint<15>  bu15;
9412855Sgabeblack@google.com	sc_biguint<16>  bu16;
9512855Sgabeblack@google.com	sc_biguint<17>  bu17;
9612855Sgabeblack@google.com	sc_biguint<18>  bu18;
9712855Sgabeblack@google.com	sc_biguint<19>  bu19;
9812855Sgabeblack@google.com	sc_biguint<20>  bu20;
9912855Sgabeblack@google.com	sc_biguint<21>  bu21;
10012855Sgabeblack@google.com	sc_biguint<22>  bu22;
10112855Sgabeblack@google.com	sc_biguint<23>  bu23;
10212855Sgabeblack@google.com	sc_biguint<24>  bu24;
10312855Sgabeblack@google.com	sc_biguint<25>  bu25;
10412855Sgabeblack@google.com	sc_biguint<26>  bu26;
10512855Sgabeblack@google.com	sc_biguint<27>  bu27;
10612855Sgabeblack@google.com	sc_biguint<28>  bu28;
10712855Sgabeblack@google.com	sc_biguint<29>  bu29;
10812855Sgabeblack@google.com	sc_biguint<30>  bu30;
10912855Sgabeblack@google.com	sc_biguint<31>  bu31;
11012855Sgabeblack@google.com	sc_biguint<32>  bu32;
11112855Sgabeblack@google.com	sc_biguint<33>  bu33;
11212855Sgabeblack@google.com	sc_biguint<34>  bu34;
11312855Sgabeblack@google.com	sc_biguint<35>  bu35;
11412855Sgabeblack@google.com	sc_biguint<36>  bu36;
11512855Sgabeblack@google.com	sc_biguint<37>  bu37;
11612855Sgabeblack@google.com	sc_biguint<38>  bu38;
11712855Sgabeblack@google.com	sc_biguint<39>  bu39;
11812855Sgabeblack@google.com	sc_biguint<40>  bu40;
11912855Sgabeblack@google.com	sc_biguint<41>  bu41;
12012855Sgabeblack@google.com	sc_biguint<42>  bu42;
12112855Sgabeblack@google.com	sc_biguint<43>  bu43;
12212855Sgabeblack@google.com	sc_biguint<44>  bu44;
12312855Sgabeblack@google.com	sc_biguint<45>  bu45;
12412855Sgabeblack@google.com	sc_biguint<46>  bu46;
12512855Sgabeblack@google.com	sc_biguint<47>  bu47;
12612855Sgabeblack@google.com	sc_biguint<48>  bu48;
12712855Sgabeblack@google.com	sc_biguint<49>  bu49;
12812855Sgabeblack@google.com	sc_biguint<50>  bu50;
12912855Sgabeblack@google.com	sc_biguint<51>  bu51;
13012855Sgabeblack@google.com	sc_biguint<52>  bu52;
13112855Sgabeblack@google.com	sc_biguint<53>  bu53;
13212855Sgabeblack@google.com	sc_biguint<54>  bu54;
13312855Sgabeblack@google.com	sc_biguint<55>  bu55;
13412855Sgabeblack@google.com	sc_biguint<56>  bu56;
13512855Sgabeblack@google.com	sc_biguint<57>  bu57;
13612855Sgabeblack@google.com	sc_biguint<58>  bu58;
13712855Sgabeblack@google.com	sc_biguint<59>  bu59;
13812855Sgabeblack@google.com	sc_biguint<60>  bu60;
13912855Sgabeblack@google.com	sc_biguint<61>  bu61;
14012855Sgabeblack@google.com	sc_biguint<62>  bu62;
14112855Sgabeblack@google.com	sc_biguint<63>  bu63;
14212855Sgabeblack@google.com	sc_biguint<64>  bu64;
14312855Sgabeblack@google.com
14412855Sgabeblack@google.com	sc_bv<64>       bv64;
14512855Sgabeblack@google.com
14612855Sgabeblack@google.com	int             i;
14712855Sgabeblack@google.com
14812855Sgabeblack@google.com	char values[]  = "1111"
14912855Sgabeblack@google.com					 "1110"
15012855Sgabeblack@google.com					 "1101"
15112855Sgabeblack@google.com					 "1100"
15212855Sgabeblack@google.com					 "1011"
15312855Sgabeblack@google.com					 "1010"
15412855Sgabeblack@google.com					 "1001"
15512855Sgabeblack@google.com					 "1000"
15612855Sgabeblack@google.com					 "0111"
15712855Sgabeblack@google.com					 "0110"
15812855Sgabeblack@google.com					 "0101"
15912855Sgabeblack@google.com					 "0100"
16012855Sgabeblack@google.com					 "0011"
16112855Sgabeblack@google.com					 "0010"
16212855Sgabeblack@google.com					 "0001"
16312855Sgabeblack@google.com					 "0000";
16412855Sgabeblack@google.com	TEST("101");
16512855Sgabeblack@google.com
16612855Sgabeblack@google.com	TEST( "11111110110111001011101010011000" );
16712855Sgabeblack@google.com	TEST( "1111111111111111111111111111111111111111111111111111111111111111" );
16812855Sgabeblack@google.com
16912855Sgabeblack@google.com	TEST( values );
17012855Sgabeblack@google.com
17112855Sgabeblack@google.com	for ( i = 0; i < (int)strlen(values); i++ )
17212855Sgabeblack@google.com	{
17312855Sgabeblack@google.com		TEST_VAR( bu64, &values[i]);
17412855Sgabeblack@google.com	}
17512855Sgabeblack@google.com
17612855Sgabeblack@google.com	return 0;
17712855Sgabeblack@google.com}
178