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