copy_ctors.cpp revision 12855:588919e0e4aa
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  copy_ctors.cpp --
23
24  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
25
26 *****************************************************************************/
27
28/*****************************************************************************
29
30  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
31  changes you are making here.
32
33      Name, Affiliation, Date:
34  Description of Modification:
35
36 *****************************************************************************/
37
38// test of sc_[u]fix constructors with fixed-point type argument
39
40#define SC_INCLUDE_FX
41#include "systemc.h"
42
43#define WRITE(a) \
44    cout << a.type_params() << endl
45
46int
47sc_main( int, char*[] )
48{
49    sc_fixed<1,2,SC_RND,SC_SAT> fxd;
50    sc_fixed_fast<3,4,SC_RND_ZERO,SC_SAT_ZERO> fxdf;
51    sc_ufixed<5,6,SC_RND_MIN_INF,SC_SAT_SYM> ufxd;
52    sc_ufixed_fast<7,8,SC_RND_INF,SC_WRAP> ufxdf;
53
54    sc_fix fx( 9, 10, SC_RND_CONV, SC_SAT );
55    sc_fix_fast fxf( 11, 12, SC_TRN, SC_SAT_ZERO );
56    sc_ufix ufx( 13, 14, SC_TRN_ZERO, SC_SAT_SYM );
57    sc_ufix_fast ufxf( 15, 16, SC_RND, SC_WRAP );
58
59    WRITE(  fxd );
60    WRITE(  fxdf );
61    WRITE( ufxd );
62    WRITE( ufxdf );
63
64    WRITE(  fx );
65    WRITE(  fxf );
66    WRITE( ufx );
67    WRITE( ufxf );
68
69    // sc_fix
70    sc_fix fx01(  fxd );
71    sc_fix fx02(  fxdf );
72    sc_fix fx03( ufxd );
73    sc_fix fx04( ufxdf );
74    sc_fix fx05(  fx );
75    sc_fix fx06(  fxf );
76    sc_fix fx07( ufx );
77    sc_fix fx08( ufxf );
78
79    cout << endl;
80    WRITE( fx01 );
81    WRITE( fx02 );
82    WRITE( fx03 );
83    WRITE( fx04 );
84    WRITE( fx05 );
85    WRITE( fx06 );
86    WRITE( fx07 );
87    WRITE( fx08 );
88
89    // sc_fix_fast
90    sc_fix_fast fxf01(  fxd );
91    sc_fix_fast fxf02(  fxdf );
92    sc_fix_fast fxf03( ufxd );
93    sc_fix_fast fxf04( ufxdf );
94    sc_fix_fast fxf05(  fx );
95    sc_fix_fast fxf06(  fxf );
96    sc_fix_fast fxf07( ufx );
97    sc_fix_fast fxf08( ufxf );
98
99    cout << endl;
100    WRITE( fxf01 );
101    WRITE( fxf02 );
102    WRITE( fxf03 );
103    WRITE( fxf04 );
104    WRITE( fxf05 );
105    WRITE( fxf06 );
106    WRITE( fxf07 );
107    WRITE( fxf08 );
108
109    // sc_ufix
110    sc_ufix ufx01(  fxd );
111    sc_ufix ufx02(  fxdf );
112    sc_ufix ufx03( ufxd );
113    sc_ufix ufx04( ufxdf );
114    sc_ufix ufx05(  fx );
115    sc_ufix ufx06(  fxf );
116    sc_ufix ufx07( ufx );
117    sc_ufix ufx08( ufxf );
118
119    cout << endl;
120    WRITE( ufx01 );
121    WRITE( ufx02 );
122    WRITE( ufx03 );
123    WRITE( ufx04 );
124    WRITE( ufx05 );
125    WRITE( ufx06 );
126    WRITE( ufx07 );
127    WRITE( ufx08 );
128
129    // sc_ufix_fast
130    sc_ufix_fast ufxf01(  fxd );
131    sc_ufix_fast ufxf02(  fxdf );
132    sc_ufix_fast ufxf03( ufxd );
133    sc_ufix_fast ufxf04( ufxdf );
134    sc_ufix_fast ufxf05(  fx );
135    sc_ufix_fast ufxf06(  fxf );
136    sc_ufix_fast ufxf07( ufx );
137    sc_ufix_fast ufxf08( ufxf );
138
139    cout << endl;
140    WRITE( ufxf01 );
141    WRITE( ufxf02 );
142    WRITE( ufxf03 );
143    WRITE( ufxf04 );
144    WRITE( ufxf05 );
145    WRITE( ufxf06 );
146    WRITE( ufxf07 );
147    WRITE( ufxf08 );
148
149    // misc
150    sc_fix fx09( fx, 123, 456 );
151    sc_fix_fast fxf09( fxf, SC_RND, SC_SAT );
152    sc_ufix ufx09( ufx, 456, 123 );
153    sc_ufix_fast ufxf09( ufxf, SC_TRN, SC_WRAP );
154
155    cout << endl;
156    WRITE(  fx09 );
157    WRITE(  fxf09 );
158    WRITE( ufx09 );
159    WRITE( ufxf09 );
160
161    return 0;
162}
163