gem5
v20.1.0.0
systemc
ext
dt
int
sc_biguint.hh
Go to the documentation of this file.
1
/*****************************************************************************
2
3
Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
4
more contributor license agreements. See the NOTICE file distributed
5
with this work for additional information regarding copyright ownership.
6
Accellera licenses this file to you under the Apache License, Version 2.0
7
(the "License"); you may not use this file except in compliance with the
8
License. You may obtain a copy of the License at
9
10
http://www.apache.org/licenses/LICENSE-2.0
11
12
Unless required by applicable law or agreed to in writing, software
13
distributed under the License is distributed on an "AS IS" BASIS,
14
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
implied. See the License for the specific language governing
16
permissions and limitations under the License.
17
18
*****************************************************************************/
19
20
/*****************************************************************************
21
22
sc_biguint.h -- Template version of sc_unsigned. This class
23
enables compile-time bit widths for sc_unsigned numbers.
24
25
Original Author: Ali Dasdan, Synopsys, Inc.
26
27
*****************************************************************************/
28
29
/*****************************************************************************
30
31
MODIFICATION LOG - modifiers, enter your name, affiliation, date and
32
changes you are making here.
33
34
Name, Affiliation, Date: Gene Bushayev, Synopsys, Inc.
35
Description of Modification: - Interface between sc_bigint and sc_bv/sc_lv.
36
37
Name, Affiliation, Date:
38
Description of Modification:
39
40
*****************************************************************************/
41
42
// $Log: sc_biguint.h,v $
43
// Revision 1.2 2011/02/18 20:19:14 acg
44
// Andy Goodrich: updating Copyright notice.
45
//
46
// Revision 1.1.1.1 2006/12/15 20:20:05 acg
47
// SystemC 2.3
48
//
49
// Revision 1.3 2006/01/13 18:49:31 acg
50
// Added $Log command so that CVS check in comments are reproduced in the
51
// source.
52
//
53
54
#ifndef __SYSTEMC_EXT_DT_INT_SC_BIGUINT_HH__
55
#define __SYSTEMC_EXT_DT_INT_SC_BIGUINT_HH__
56
57
#include "
sc_signed.hh
"
58
#include "
sc_unsigned.hh
"
59
60
namespace
sc_dt
61
{
62
63
// classes defined in this module
64
template
<
int
W>
65
class
sc_biguint;
66
67
// forward class declarations
68
class
sc_bv_base;
69
class
sc_lv_base;
70
class
sc_fxval
;
71
class
sc_fxval_fast;
72
class
sc_fxnum;
73
class
sc_fxnum_fast;
74
75
76
// ----------------------------------------------------------------------------
77
// CLASS TEMPLATE : sc_biguint<W>
78
//
79
// Arbitrary size unsigned integer type.
80
// ----------------------------------------------------------------------------
81
82
#ifdef SC_MAX_NBITS
83
template
<
int
W=SC_MAX_NBITS>
84
#else
85
template
<
int
W>
86
#endif
87
class
sc_biguint :
public
sc_unsigned
88
{
89
public
:
90
// constructors
91
sc_biguint
() : sc_unsigned(W) {}
92
sc_biguint
(
const
sc_biguint<W> &
v
) : sc_unsigned(W) { *
this
=
v
; }
93
sc_biguint
(
const
sc_unsigned &
v
) : sc_unsigned(W) { *
this
=
v
; }
94
sc_biguint
(
const
sc_unsigned_subref &
v
) : sc_unsigned(W) { *
this
=
v
; }
95
96
template
<
class
T>
97
sc_biguint
(
const
sc_generic_base<T> &
a
) : sc_unsigned(W)
98
{
99
a
->to_sc_unsigned(*
this
);
100
}
101
102
sc_biguint
(
const
sc_signed
&
v
) :
sc_unsigned
(W) { *
this
=
v
; }
103
sc_biguint
(
const
sc_signed_subref &
v
) : sc_unsigned(W) { *
this
=
v
; }
104
sc_biguint
(
const
char
*
v
) : sc_unsigned(W) { *
this
=
v
; }
105
sc_biguint
(
int64
v
) : sc_unsigned(W) { *
this
=
v
; }
106
sc_biguint
(
uint64
v
) : sc_unsigned(W) { *
this
=
v
; }
107
sc_biguint
(
long
v
) : sc_unsigned(W) { *
this
=
v
; }
108
sc_biguint
(
unsigned
long
v
) : sc_unsigned(W) { *
this
=
v
; }
109
sc_biguint
(
int
v
) : sc_unsigned(W) { *
this
=
v
; }
110
sc_biguint
(
unsigned
int
v
) : sc_unsigned(W) { *
this
=
v
; }
111
sc_biguint
(
double
v
) : sc_unsigned(W) { *
this
=
v
; }
112
sc_biguint
(
const
sc_bv_base &
v
) : sc_unsigned(W) { *
this
=
v
; }
113
sc_biguint
(
const
sc_lv_base &
v
) : sc_unsigned(W) { *
this
=
v
; }
114
115
explicit
sc_biguint
(
const
sc_fxval
&
v
) : sc_unsigned(W) { *
this
=
v
; }
116
explicit
sc_biguint
(
const
sc_fxval_fast &
v
) : sc_unsigned(W) { *
this
=
v
; }
117
explicit
sc_biguint
(
const
sc_fxnum &
v
) : sc_unsigned(W) { *
this
=
v
; }
118
explicit
sc_biguint
(
const
sc_fxnum_fast &
v
) : sc_unsigned(W) { *
this
=
v
; }
119
120
#ifndef SC_MAX_NBITS
121
// destructor
122
~sc_biguint
() {}
123
#endif
124
125
// assignment operators
126
sc_biguint<W>
&
127
operator =
(
const
sc_biguint<W>
&
v
)
128
{
129
sc_unsigned::operator =
(
v
);
130
return
*
this
;
131
}
132
133
sc_biguint<W>
&
134
operator =
(
const
sc_unsigned
&
v
)
135
{
136
sc_unsigned::operator =
(
v
);
137
return
*
this
;
138
}
139
140
sc_biguint<W>
&
141
operator =
(
const
sc_unsigned_subref
&
v
)
142
{
143
sc_unsigned::operator =
(
v
);
144
return
*
this
;
145
}
146
147
template
<
class
T >
148
sc_biguint<W>
&
149
operator =
(
const
sc_generic_base<T>
&
a
)
150
{
a
->to_sc_unsigned(*
this
);
151
return
*
this
;
152
}
153
154
sc_biguint<W>
&
155
operator =
(
const
sc_signed
&
v
)
156
{
157
sc_unsigned::operator =
(
v
);
158
return
*
this
;
159
}
160
161
sc_biguint<W>
&
162
operator =
(
const
sc_signed_subref
&
v
)
163
{
164
sc_unsigned::operator =
(
v
);
165
return
*
this
;
166
}
167
168
sc_biguint<W>
&
169
operator =
(
const
char
*
v
)
170
{
171
sc_unsigned::operator =
(
v
);
172
return
*
this
;
173
}
174
175
sc_biguint<W>
&
176
operator =
(
int64
v
)
177
{
178
sc_unsigned::operator =
(
v
);
179
return
*
this
;
180
}
181
182
sc_biguint<W>
&
183
operator =
(
uint64
v
)
184
{
185
sc_unsigned::operator =
(
v
);
186
return
*
this
;
187
}
188
189
sc_biguint<W>
&
190
operator =
(
long
v
)
191
{
192
sc_unsigned::operator =
(
v
);
193
return
*
this
;
194
}
195
196
sc_biguint<W>
&
197
operator =
(
unsigned
long
v
)
198
{
199
sc_unsigned::operator =
(
v
);
200
return
*
this
;
201
}
202
203
sc_biguint<W>
&
204
operator =
(
int
v
)
205
{
206
sc_unsigned::operator =
(
v
);
207
return
*
this
;
208
}
209
210
sc_biguint<W>
&
211
operator =
(
unsigned
int
v
)
212
{
213
sc_unsigned::operator =
(
v
);
214
return
*
this
;
215
}
216
217
sc_biguint<W>
&
218
operator =
(
double
v
)
219
{
220
sc_unsigned::operator =
(
v
);
221
return
*
this
;
222
}
223
224
225
sc_biguint<W>
&
226
operator =
(
const
sc_bv_base
&
v
)
227
{
228
sc_unsigned::operator =
(
v
);
229
return
*
this
;
230
}
231
232
sc_biguint<W>
&
233
operator =
(
const
sc_lv_base
&
v
)
234
{
235
sc_unsigned::operator =
(
v
);
236
return
*
this
;
237
}
238
239
sc_biguint<W>
&
240
operator =
(
const
sc_int_base
&
v
)
241
{
242
sc_unsigned::operator =
(
v
);
243
return
*
this
;
244
}
245
246
sc_biguint<W>
&
247
operator =
(
const
sc_uint_base
&
v
)
248
{
249
sc_unsigned::operator =
(
v
);
250
return
*
this
;
251
}
252
253
sc_biguint<W>
&
254
operator =
(
const
sc_fxval
&
v
)
255
{
256
sc_unsigned::operator =
(
v
);
257
return
*
this
;
258
}
259
260
sc_biguint<W>
&
261
operator =
(
const
sc_fxval_fast
&
v
)
262
{
263
sc_unsigned::operator =
(
v
);
264
return
*
this
;
265
}
266
267
sc_biguint<W>
&
268
operator =
(
const
sc_fxnum
&
v
)
269
{
270
sc_unsigned::operator =
(
v
);
271
return
*
this
;
272
}
273
274
sc_biguint<W>
&
275
operator =
(
const
sc_fxnum_fast
&
v
)
276
{
277
sc_unsigned::operator =
(
v
);
278
return
*
this
;
279
}
280
};
281
282
}
// namespace sc_dt
283
284
#endif // __SYSTEMC_EXT_DT_INT_SC_BIGUINT_HH__
sc_dt
Definition:
sc_bit.cc:67
sc_dt::sc_fxnum_fast
Definition:
sc_fxnum.hh:844
sc_dt::sc_fxval
Definition:
sc_fxval.hh:86
sc_dt::sc_bv_base
Definition:
sc_bv_base.hh:105
sc_dt::sc_int_base
Definition:
sc_int_base.hh:494
sc_dt::sc_biguint::sc_biguint
sc_biguint()
Definition:
sc_biguint.hh:126
sc_dt::sc_signed
Definition:
sc_signed.hh:984
sc_dt::sc_biguint::~sc_biguint
~sc_biguint()
Definition:
sc_biguint.hh:157
ArmISA::a
Bitfield< 8 > a
Definition:
miscregs_types.hh:62
sc_dt::uint64
uint64_t uint64
Definition:
sc_nbdefs.hh:206
sc_dt::sc_biguint::operator=
sc_biguint< W > & operator=(const sc_biguint< W > &v)
Definition:
sc_biguint.hh:162
sc_dt::sc_signed_subref
Definition:
sc_signed.hh:912
sc_dt::sc_fxnum
Definition:
sc_fxnum.hh:483
sc_dt::sc_biguint
Definition:
sc_biguint.hh:100
sc_dt::int64
int64_t int64
Definition:
sc_nbdefs.hh:205
sc_dt::sc_generic_base
Definition:
sc_value_base.hh:145
sc_dt::sc_uint_base
Definition:
sc_uint_base.hh:465
sc_signed.hh
sc_dt::sc_lv_base
Definition:
sc_lv_base.hh:118
sc_fxval
#define sc_fxval
Definition:
fx_precision_double.h:65
sc_unsigned.hh
sc_dt::sc_fxval_fast
Definition:
sc_fxval.hh:376
sc_dt::sc_unsigned
Definition:
sc_unsigned.hh:890
sc_dt::sc_unsigned::operator=
const sc_unsigned & operator=(const sc_unsigned &v)
sc_dt::sc_unsigned_subref
Definition:
sc_unsigned.hh:822
ArmISA::v
Bitfield< 28 > v
Definition:
miscregs_types.hh:51
Generated on Wed Sep 30 2020 14:02:16 for gem5 by
doxygen
1.8.17