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_int64()); \
612855Sgabeblack@google.com	bv64 = var; \
712855Sgabeblack@google.com	cout << #var << " = " << v << " : " << bv64 << " : " << buffer << " : " << var << endl;
812855Sgabeblack@google.com
912855Sgabeblack@google.com#define TEST(v) \
1012855Sgabeblack@google.com	cout << endl; \
1112855Sgabeblack@google.com	TEST_VAR(  bi01, v ); \
1212855Sgabeblack@google.com	TEST_VAR(  bi02, v ); \
1312855Sgabeblack@google.com	TEST_VAR(  bi03, v ); \
1412855Sgabeblack@google.com	TEST_VAR(  bi04, v ); \
1512855Sgabeblack@google.com	TEST_VAR(  bi05, v ); \
1612855Sgabeblack@google.com	TEST_VAR(  bi06, v ); \
1712855Sgabeblack@google.com	TEST_VAR(  bi07, v ); \
1812855Sgabeblack@google.com	TEST_VAR(  bi08, v ); \
1912855Sgabeblack@google.com	TEST_VAR(  bi09, v ); \
2012855Sgabeblack@google.com	TEST_VAR(  bi10, v ); \
2112855Sgabeblack@google.com	TEST_VAR(  bi11, v ); \
2212855Sgabeblack@google.com	TEST_VAR(  bi12, v ); \
2312855Sgabeblack@google.com	TEST_VAR(  bi13, v ); \
2412855Sgabeblack@google.com	TEST_VAR(  bi14, v ); \
2512855Sgabeblack@google.com	TEST_VAR(  bi15, v ); \
2612855Sgabeblack@google.com	TEST_VAR(  bi16, v ); \
2712855Sgabeblack@google.com	TEST_VAR(  bi17, v ); \
2812855Sgabeblack@google.com	TEST_VAR(  bi18, v ); \
2912855Sgabeblack@google.com	TEST_VAR(  bi19, v ); \
3012855Sgabeblack@google.com	TEST_VAR(  bi20, v ); \
3112855Sgabeblack@google.com	TEST_VAR(  bi21, v ); \
3212855Sgabeblack@google.com	TEST_VAR(  bi22, v ); \
3312855Sgabeblack@google.com	TEST_VAR(  bi23, v ); \
3412855Sgabeblack@google.com	TEST_VAR(  bi24, v ); \
3512855Sgabeblack@google.com	TEST_VAR(  bi25, v ); \
3612855Sgabeblack@google.com	TEST_VAR(  bi26, v ); \
3712855Sgabeblack@google.com	TEST_VAR(  bi27, v ); \
3812855Sgabeblack@google.com	TEST_VAR(  bi28, v ); \
3912855Sgabeblack@google.com	TEST_VAR(  bi29, v ); \
4012855Sgabeblack@google.com	TEST_VAR(  bi30, v ); \
4112855Sgabeblack@google.com	TEST_VAR(  bi31, v ); \
4212855Sgabeblack@google.com	TEST_VAR(  bi32, v ); \
4312855Sgabeblack@google.com	TEST_VAR(  bi33, v ); \
4412855Sgabeblack@google.com	TEST_VAR(  bi34, v ); \
4512855Sgabeblack@google.com	TEST_VAR(  bi35, v ); \
4612855Sgabeblack@google.com	TEST_VAR(  bi36, v ); \
4712855Sgabeblack@google.com	TEST_VAR(  bi37, v ); \
4812855Sgabeblack@google.com	TEST_VAR(  bi38, v ); \
4912855Sgabeblack@google.com	TEST_VAR(  bi39, v ); \
5012855Sgabeblack@google.com	TEST_VAR(  bi40, v ); \
5112855Sgabeblack@google.com	TEST_VAR(  bi41, v ); \
5212855Sgabeblack@google.com	TEST_VAR(  bi42, v ); \
5312855Sgabeblack@google.com	TEST_VAR(  bi43, v ); \
5412855Sgabeblack@google.com	TEST_VAR(  bi44, v ); \
5512855Sgabeblack@google.com	TEST_VAR(  bi45, v ); \
5612855Sgabeblack@google.com	TEST_VAR(  bi46, v ); \
5712855Sgabeblack@google.com	TEST_VAR(  bi47, v ); \
5812855Sgabeblack@google.com	TEST_VAR(  bi48, v ); \
5912855Sgabeblack@google.com	TEST_VAR(  bi49, v ); \
6012855Sgabeblack@google.com	TEST_VAR(  bi50, v ); \
6112855Sgabeblack@google.com	TEST_VAR(  bi51, v ); \
6212855Sgabeblack@google.com	TEST_VAR(  bi52, v ); \
6312855Sgabeblack@google.com	TEST_VAR(  bi53, v ); \
6412855Sgabeblack@google.com	TEST_VAR(  bi54, v ); \
6512855Sgabeblack@google.com	TEST_VAR(  bi55, v ); \
6612855Sgabeblack@google.com	TEST_VAR(  bi56, v ); \
6712855Sgabeblack@google.com	TEST_VAR(  bi57, v ); \
6812855Sgabeblack@google.com	TEST_VAR(  bi58, v ); \
6912855Sgabeblack@google.com	TEST_VAR(  bi59, v ); \
7012855Sgabeblack@google.com	TEST_VAR(  bi60, v ); \
7112855Sgabeblack@google.com	TEST_VAR(  bi61, v ); \
7212855Sgabeblack@google.com	TEST_VAR(  bi62, v ); \
7312855Sgabeblack@google.com	TEST_VAR(  bi63, v ); \
7412855Sgabeblack@google.com	TEST_VAR(  bi64, 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_bigint<1>  bi01;
8012855Sgabeblack@google.com	sc_bigint<2>  bi02;
8112855Sgabeblack@google.com	sc_bigint<3>  bi03;
8212855Sgabeblack@google.com	sc_bigint<4>  bi04;
8312855Sgabeblack@google.com	sc_bigint<5>  bi05;
8412855Sgabeblack@google.com	sc_bigint<6>  bi06;
8512855Sgabeblack@google.com	sc_bigint<7>  bi07;
8612855Sgabeblack@google.com	sc_bigint<8>  bi08;
8712855Sgabeblack@google.com	sc_bigint<9>  bi09;
8812855Sgabeblack@google.com	sc_bigint<10>  bi10;
8912855Sgabeblack@google.com	sc_bigint<11>  bi11;
9012855Sgabeblack@google.com	sc_bigint<12>  bi12;
9112855Sgabeblack@google.com	sc_bigint<13>  bi13;
9212855Sgabeblack@google.com	sc_bigint<14>  bi14;
9312855Sgabeblack@google.com	sc_bigint<15>  bi15;
9412855Sgabeblack@google.com	sc_bigint<16>  bi16;
9512855Sgabeblack@google.com	sc_bigint<17>  bi17;
9612855Sgabeblack@google.com	sc_bigint<18>  bi18;
9712855Sgabeblack@google.com	sc_bigint<19>  bi19;
9812855Sgabeblack@google.com	sc_bigint<20>  bi20;
9912855Sgabeblack@google.com	sc_bigint<21>  bi21;
10012855Sgabeblack@google.com	sc_bigint<22>  bi22;
10112855Sgabeblack@google.com	sc_bigint<23>  bi23;
10212855Sgabeblack@google.com	sc_bigint<24>  bi24;
10312855Sgabeblack@google.com	sc_bigint<25>  bi25;
10412855Sgabeblack@google.com	sc_bigint<26>  bi26;
10512855Sgabeblack@google.com	sc_bigint<27>  bi27;
10612855Sgabeblack@google.com	sc_bigint<28>  bi28;
10712855Sgabeblack@google.com	sc_bigint<29>  bi29;
10812855Sgabeblack@google.com	sc_bigint<30>  bi30;
10912855Sgabeblack@google.com	sc_bigint<31>  bi31;
11012855Sgabeblack@google.com	sc_bigint<32>  bi32;
11112855Sgabeblack@google.com	sc_bigint<33>  bi33;
11212855Sgabeblack@google.com	sc_bigint<34>  bi34;
11312855Sgabeblack@google.com	sc_bigint<35>  bi35;
11412855Sgabeblack@google.com	sc_bigint<36>  bi36;
11512855Sgabeblack@google.com	sc_bigint<37>  bi37;
11612855Sgabeblack@google.com	sc_bigint<38>  bi38;
11712855Sgabeblack@google.com	sc_bigint<39>  bi39;
11812855Sgabeblack@google.com	sc_bigint<40>  bi40;
11912855Sgabeblack@google.com	sc_bigint<41>  bi41;
12012855Sgabeblack@google.com	sc_bigint<42>  bi42;
12112855Sgabeblack@google.com	sc_bigint<43>  bi43;
12212855Sgabeblack@google.com	sc_bigint<44>  bi44;
12312855Sgabeblack@google.com	sc_bigint<45>  bi45;
12412855Sgabeblack@google.com	sc_bigint<46>  bi46;
12512855Sgabeblack@google.com	sc_bigint<47>  bi47;
12612855Sgabeblack@google.com	sc_bigint<48>  bi48;
12712855Sgabeblack@google.com	sc_bigint<49>  bi49;
12812855Sgabeblack@google.com	sc_bigint<50>  bi50;
12912855Sgabeblack@google.com	sc_bigint<51>  bi51;
13012855Sgabeblack@google.com	sc_bigint<52>  bi52;
13112855Sgabeblack@google.com	sc_bigint<53>  bi53;
13212855Sgabeblack@google.com	sc_bigint<54>  bi54;
13312855Sgabeblack@google.com	sc_bigint<55>  bi55;
13412855Sgabeblack@google.com	sc_bigint<56>  bi56;
13512855Sgabeblack@google.com	sc_bigint<57>  bi57;
13612855Sgabeblack@google.com	sc_bigint<58>  bi58;
13712855Sgabeblack@google.com	sc_bigint<59>  bi59;
13812855Sgabeblack@google.com	sc_bigint<60>  bi60;
13912855Sgabeblack@google.com	sc_bigint<61>  bi61;
14012855Sgabeblack@google.com	sc_bigint<62>  bi62;
14112855Sgabeblack@google.com	sc_bigint<63>  bi63;
14212855Sgabeblack@google.com	sc_bigint<64>  bi64;
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( bi64, &values[i]);
17412855Sgabeblack@google.com	}
17512855Sgabeblack@google.com
17612855Sgabeblack@google.com	return 0;
17712855Sgabeblack@google.com}
178