4 inline void dump(sc_signed
& value
)
6 sc_digit
* ptr
= value
.get_raw();
7 printf(" %08x_%08x_%08x_%08x\n",
8 (int)ptr
[3], (int)ptr
[2], (int)ptr
[1], (int)ptr
[0]);
9 cout
<< " " << value
<< endl
;
12 inline void dump(sc_unsigned
& value
)
14 sc_digit
* ptr
= value
.get_raw();
15 printf(" %08x_%08x_%08x_%08x\n",
16 (int)ptr
[3], (int)ptr
[2], (int)ptr
[1], (int)ptr
[0]);
17 cout
<< " " << value
<< endl
;
20 #define PARSE( SUBJECT ) \
23 cout << endl << #SUBJECT << ":" << endl; \
30 #define TEST(SUBJECT,EXPECTED) \
33 if ( value.to_uint64() != EXPECTED ) \
35 printf("%s(%d): %s: %llx != %llx\n", \
36 __FILE__, __LINE__, SUBJECT, value.to_uint64(), (uint64)EXPECTED);\
40 #define TESTs64(SUBJECT,EXPECTED) \
43 if ( svalue64 != (long long)EXPECTED ) \
45 printf("%s(%d): %s: %llx != %llx\n", \
46 __FILE__, __LINE__, SUBJECT, value.to_uint64(), (uint64)EXPECTED);\
50 #define TESTu64(SUBJECT,EXPECTED) \
53 if ( uvalue64 != EXPECTED ) \
55 printf("%s(%d): %s: %llx != %llx\n", \
56 __FILE__, __LINE__, SUBJECT, value.to_uint64(), (uint64)EXPECTED);\
61 int sc_main(int, char**)
64 unsigned long long expected
;
65 sc_bigint
<120> svalue
;
68 sc_biguint
<120> value
;
71 TESTs64("0xusffffffff", 0xffffffff);
72 TESTs64("0xusffffffff", 0xffffffff);
73 TESTs64("0xusfffffff", 0xfffffff);
74 TESTs64("0XUSfedcab876543210", 0xfedcab876543210ull
);
75 TESTs64("0ous77777777", 077777777);
76 TESTs64("0ous77777777", 077777777);
77 TESTs64("0Ous7654321076543", 07654321076543ull);
78 TESTs64("55555555555555", 55555555555555ull);
79 TESTs64("0bus1100110011001100", 0xcccc);
80 TESTs64("0bus1111111011011100101110101001100001110110010101000011001000010000",
81 0xfedcba9876543210ll
);
83 TESTu64("0xusffffffff", 0xffffffff);
84 TESTu64("0xusffffffff", 0xffffffff);
85 TESTu64("0xusfffffff", 0xfffffff);
86 TESTu64("0XUSfedcab876543210", 0xfedcab876543210ull
);
87 TESTu64("0ous77777777", 077777777);
88 TESTu64("0ous77777777", 077777777);
89 TESTu64("0Ous7654321076543", 07654321076543ull);
90 TESTu64("55555555555555", 55555555555555ull);
91 TESTu64("0bus1100110011001100", 0xcccc);
92 TESTu64("0bus1111111011011100101110101001100001110110010101000011001000010000",
93 0xfedcba9876543210ll
);
94 for ( int i
= 0; i
< 60; i
++ )
96 for ( int j
= 0; j
< 16; j
++ )
99 expected
= expected
<< i
;
100 sprintf(buffer
, "0Xus%llx", expected
);
101 TEST(buffer
, expected
);
102 TESTs64(buffer
, expected
);
103 TESTu64(buffer
, expected
);
104 sprintf(buffer
, "0ous%llo", expected
);
105 TEST(buffer
, expected
);
106 TESTs64(buffer
, expected
);
107 TESTu64(buffer
, expected
);
108 sprintf(buffer
, "%lld", expected
);
109 TEST(buffer
, expected
);
110 TESTs64(buffer
, expected
);
111 TESTu64(buffer
, expected
);
114 TEST("0xusffffffff", 0xffffffff);
115 TEST("0xusffffffff", 0xffffffff);
116 TEST("0xusfffffff", 0xfffffff);
117 TEST("0XUSfedcab876543210", 0xfedcab876543210ull
);
118 TEST("0ous77777777", 077777777);
119 TEST("0ous77777777", 077777777);
120 TEST("0Ous7654321076543", 07654321076543ull);
121 TEST("55555555555555", 55555555555555ull);
122 TEST("0bus1100110011001100", 0xcccc);
123 TEST("0bus1111111011011100101110101001100001110110010101000011001000010000",
124 0xfedcba9876543210ll
);
126 cout
<< "Program completed" << endl
;