test01.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  test01.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_abs<T> for all SystemC arithmetic datatypes
39
40#define SC_INCLUDE_FX
41#include "systemc.h"
42
43int
44sc_main( int, char*[] )
45{
46    cout << "\n*** fx" << endl;
47
48    // sc_fxval
49    {
50        sc_fxval a;
51        cout << endl;
52        a = 1;
53        cout << sc_abs( a ) << endl;
54        a = -1;
55        cout << sc_abs( a ) << endl;
56    }
57
58    // sc_fxval_fast
59    {
60        sc_fxval_fast a;
61        cout << endl;
62        a = 1;
63        cout << sc_abs( a ) << endl;
64        a = -1;
65        cout << sc_abs( a ) << endl;
66    }
67
68    // sc_fix
69    {
70        sc_fix a;
71        cout << endl;
72        a = 1;
73        cout << sc_abs( a ) << endl;
74        a = -1;
75        cout << sc_abs( a ) << endl;
76    }
77
78    // sc_fix_fast
79    {
80        sc_fix_fast a;
81        cout << endl;
82        a = 1;
83        cout << sc_abs( a ) << endl;
84        a = -1;
85        cout << sc_abs( a ) << endl;
86    }
87
88    // sc_ufix
89    {
90        sc_ufix a;
91        cout << endl;
92        a = 1;
93        cout << sc_abs( a ) << endl;
94        a = -1;
95        cout << sc_abs( a ) << endl;
96    }
97
98    // sc_ufix_fast
99    {
100        sc_ufix_fast a;
101        cout << endl;
102        a = 1;
103        cout << sc_abs( a ) << endl;
104        a = -1;
105        cout << sc_abs( a ) << endl;
106    }
107
108    // sc_fixed
109    {
110        sc_fixed<32,32> a;
111        cout << endl;
112        a = 1;
113        cout << sc_abs( a ) << endl;
114        a = -1;
115        cout << sc_abs( a ) << endl;
116    }
117
118    // sc_fixed_fast
119    {
120        sc_fixed_fast<32,32> a;
121        cout << endl;
122        a = 1;
123        cout << sc_abs( a ) << endl;
124        a = -1;
125        cout << sc_abs( a ) << endl;
126    }
127
128    // sc_ufixed
129    {
130        sc_ufixed<32,32> a;
131        cout << endl;
132        a = 1;
133        cout << sc_abs( a ) << endl;
134        a = -1;
135        cout << sc_abs( a ) << endl;
136    }
137
138    // sc_ufixed_fast
139    {
140        sc_ufixed_fast<32,32> a;
141        cout << endl;
142        a = 1;
143        cout << sc_abs( a ) << endl;
144        a = -1;
145        cout << sc_abs( a ) << endl;
146    }
147
148    cout << "\n*** int" << endl;
149
150    // sc_signed
151    {
152        sc_signed a( 32 );
153        cout << endl;
154        a = 1;
155        cout << sc_abs( a ) << endl;
156        a = -1;
157        cout << sc_abs( a ) << endl;
158    }
159
160    // sc_unsigned
161    {
162        sc_unsigned a( 32 );
163        cout << endl;
164        a = 1;
165        cout << sc_abs( a ) << endl;
166        a = -1;
167        cout << sc_abs( a ) << endl;
168    }
169
170    // sc_bigint
171    {
172        sc_bigint<32> a;
173        cout << endl;
174        a = 1;
175        cout << sc_abs( a ) << endl;
176        a = -1;
177        cout << sc_abs( a ) << endl;
178    }
179
180    // sc_biguint
181    {
182        sc_biguint<32> a;
183        cout << endl;
184        a = 1;
185        cout << sc_abs( a ) << endl;
186        a = -1;
187        cout << sc_abs( a ) << endl;
188    }
189
190    // sc_signed_subref
191    // sc_unsigned_subref
192
193    // sc_int_base
194    {
195        sc_int_base a( 32 );
196        cout << endl;
197        a = 1;
198        cout << sc_abs( a ) << endl;
199        a = -1;
200        cout << sc_abs( a ) << endl;
201    }
202
203    // sc_uint_base
204    {
205        sc_uint_base a( 32 );
206        cout << endl;
207        a = 1;
208        cout << sc_abs( a ) << endl;
209        a = -1;
210        cout << sc_abs( a ) << endl;
211    }
212
213    // sc_int
214    {
215        sc_int<32> a;
216        cout << endl;
217        a = 1;
218        cout << sc_abs( a ) << endl;
219        a = -1;
220        cout << sc_abs( a ) << endl;
221    }
222
223    // sc_uint
224    {
225        sc_uint<32> a;
226        cout << endl;
227        a = 1;
228        cout << sc_abs( a ) << endl;
229        a = -1;
230        cout << sc_abs( a ) << endl;
231    }
232
233    // sc_int_subref
234    // sc_uint_subref
235    // sc_int_concref
236    // sc_uint_concref
237
238    return 0;
239}
240