test02.cpp revision 12855:588919e0e4aa
112810Sandreas.sandberg@arm.com/***************************************************************************** 214054Stiago.muck@arm.com 312810Sandreas.sandberg@arm.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 412810Sandreas.sandberg@arm.com more contributor license agreements. See the NOTICE file distributed 512810Sandreas.sandberg@arm.com with this work for additional information regarding copyright ownership. 612810Sandreas.sandberg@arm.com Accellera licenses this file to you under the Apache License, Version 2.0 712810Sandreas.sandberg@arm.com (the "License"); you may not use this file except in compliance with the 812810Sandreas.sandberg@arm.com License. You may obtain a copy of the License at 912810Sandreas.sandberg@arm.com 1012810Sandreas.sandberg@arm.com http://www.apache.org/licenses/LICENSE-2.0 1112810Sandreas.sandberg@arm.com 1212810Sandreas.sandberg@arm.com Unless required by applicable law or agreed to in writing, software 1312810Sandreas.sandberg@arm.com distributed under the License is distributed on an "AS IS" BASIS, 1412810Sandreas.sandberg@arm.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1512810Sandreas.sandberg@arm.com implied. See the License for the specific language governing 1612810Sandreas.sandberg@arm.com permissions and limitations under the License. 1712810Sandreas.sandberg@arm.com 1812810Sandreas.sandberg@arm.com *****************************************************************************/ 1912810Sandreas.sandberg@arm.com 2012810Sandreas.sandberg@arm.com/***************************************************************************** 2112810Sandreas.sandberg@arm.com 2212810Sandreas.sandberg@arm.com test02.cpp -- 2312810Sandreas.sandberg@arm.com 2412810Sandreas.sandberg@arm.com Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 2512810Sandreas.sandberg@arm.com 2612810Sandreas.sandberg@arm.com *****************************************************************************/ 2712810Sandreas.sandberg@arm.com 2812810Sandreas.sandberg@arm.com/***************************************************************************** 2912810Sandreas.sandberg@arm.com 3012810Sandreas.sandberg@arm.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 3112810Sandreas.sandberg@arm.com changes you are making here. 3212810Sandreas.sandberg@arm.com 3312810Sandreas.sandberg@arm.com Name, Affiliation, Date: 3412810Sandreas.sandberg@arm.com Description of Modification: 3512810Sandreas.sandberg@arm.com 3612810Sandreas.sandberg@arm.com *****************************************************************************/ 3712810Sandreas.sandberg@arm.com 3812810Sandreas.sandberg@arm.com// test of the reduce methods in the sc_[u]int datatypes -- functional notation 3912810Sandreas.sandberg@arm.com 4012810Sandreas.sandberg@arm.com#include "systemc.h" 4112810Sandreas.sandberg@arm.com 4212810Sandreas.sandberg@arm.comint 4312810Sandreas.sandberg@arm.comsc_main( int, char*[] ) 4412810Sandreas.sandberg@arm.com{ 4512810Sandreas.sandberg@arm.com // 1) check the existence of the reduce methods 4612810Sandreas.sandberg@arm.com 4714054Stiago.muck@arm.com sc_int<42> a = 42; 4812810Sandreas.sandberg@arm.com 4912810Sandreas.sandberg@arm.com // sc_int_base 5012810Sandreas.sandberg@arm.com cout << endl; 5113892Sgabeblack@google.com cout << and_reduce( a ) << endl; 5212810Sandreas.sandberg@arm.com cout << or_reduce( a ) << endl; 5312810Sandreas.sandberg@arm.com cout << xor_reduce( a ) << endl; 5412919Sgiacomo.travaglini@arm.com cout << nand_reduce( a ) << endl; 5512810Sandreas.sandberg@arm.com cout << nor_reduce( a ) << endl; 5612810Sandreas.sandberg@arm.com cout << xnor_reduce( a ) << endl; 5712810Sandreas.sandberg@arm.com 5812810Sandreas.sandberg@arm.com // sc_int_subref 5912810Sandreas.sandberg@arm.com cout << endl; 6012810Sandreas.sandberg@arm.com cout << and_reduce( a( 7, 0 ) ) << endl; 6112810Sandreas.sandberg@arm.com cout << or_reduce( a( 7, 0 ) ) << endl; 6212810Sandreas.sandberg@arm.com cout << xor_reduce( a( 7, 0 ) ) << endl; 6312810Sandreas.sandberg@arm.com cout << nand_reduce( a( 7, 0 ) ) << endl; 6412810Sandreas.sandberg@arm.com cout << nor_reduce( a( 7, 0 ) ) << endl; 6512810Sandreas.sandberg@arm.com cout << xnor_reduce( a( 7, 0 ) ) << endl; 6612810Sandreas.sandberg@arm.com 6713892Sgabeblack@google.com // sc_int_concref<T1,T2> 6812810Sandreas.sandberg@arm.com cout << endl; 6912811Sandreas.sandberg@arm.com cout << and_reduce( ( a( 7, 0 ), a( 15, 8 ) ) ) << endl; 7012811Sandreas.sandberg@arm.com cout << or_reduce( ( a( 7, 0 ), a( 15, 8 ) ) ) << endl; 7112810Sandreas.sandberg@arm.com cout << xor_reduce( ( a( 7, 0 ), a( 15, 8 ) ) ) << endl; 7212810Sandreas.sandberg@arm.com cout << nand_reduce( ( a( 7, 0 ), a( 15, 8 ) ) ) << endl; 7312810Sandreas.sandberg@arm.com cout << nor_reduce( ( a( 7, 0 ), a( 15, 8 ) ) ) << endl; 7412810Sandreas.sandberg@arm.com cout << xnor_reduce( ( a( 7, 0 ), a( 15, 8 ) ) ) << endl; 7512810Sandreas.sandberg@arm.com 7612810Sandreas.sandberg@arm.com sc_uint<42> b = 42; 7712810Sandreas.sandberg@arm.com 7812810Sandreas.sandberg@arm.com // sc_uint_base 7912810Sandreas.sandberg@arm.com cout << endl; 8012810Sandreas.sandberg@arm.com cout << and_reduce( b ) << endl; 8112810Sandreas.sandberg@arm.com cout << or_reduce( b ) << endl; 8212810Sandreas.sandberg@arm.com cout << xor_reduce( b ) << endl; 8312810Sandreas.sandberg@arm.com cout << nand_reduce( b ) << endl; 8412810Sandreas.sandberg@arm.com cout << nor_reduce( b ) << endl; 8512810Sandreas.sandberg@arm.com cout << xnor_reduce( b ) << endl; 8612810Sandreas.sandberg@arm.com 8712810Sandreas.sandberg@arm.com // sc_uint_subref 8812810Sandreas.sandberg@arm.com cout << endl; 8912810Sandreas.sandberg@arm.com cout << and_reduce( b( 7, 0 ) ) << endl; 9012810Sandreas.sandberg@arm.com cout << or_reduce( b( 7, 0 ) ) << endl; 9112810Sandreas.sandberg@arm.com cout << xor_reduce( b( 7, 0 ) ) << endl; 9212810Sandreas.sandberg@arm.com cout << nand_reduce( b( 7, 0 ) ) << endl; 9312810Sandreas.sandberg@arm.com cout << nor_reduce( b( 7, 0 ) ) << endl; 9412810Sandreas.sandberg@arm.com cout << xnor_reduce( b( 7, 0 ) ) << endl; 9512810Sandreas.sandberg@arm.com 9612810Sandreas.sandberg@arm.com // sc_uint_concref<T1,T2> 9714054Stiago.muck@arm.com cout << endl; 9814054Stiago.muck@arm.com cout << and_reduce( ( b( 7, 0 ), b( 15, 8 ) ) ) << endl; 9914054Stiago.muck@arm.com cout << or_reduce( ( b( 7, 0 ), b( 15, 8 ) ) ) << endl; 10014054Stiago.muck@arm.com cout << xor_reduce( ( b( 7, 0 ), b( 15, 8 ) ) ) << endl; 10112810Sandreas.sandberg@arm.com cout << nand_reduce( ( b( 7, 0 ), b( 15, 8 ) ) ) << endl; 10212810Sandreas.sandberg@arm.com cout << nor_reduce( ( b( 7, 0 ), b( 15, 8 ) ) ) << endl; 10312810Sandreas.sandberg@arm.com cout << xnor_reduce( ( b( 7, 0 ), b( 15, 8 ) ) ) << endl; 10412810Sandreas.sandberg@arm.com 10512810Sandreas.sandberg@arm.com // 2) check the functionality of the reduce methods 10612810Sandreas.sandberg@arm.com 10712810Sandreas.sandberg@arm.com sc_int<2> c2 = -1; 10812810Sandreas.sandberg@arm.com cout << endl; 10912810Sandreas.sandberg@arm.com cout << and_reduce( c2 ) << endl; 11012810Sandreas.sandberg@arm.com cout << xor_reduce( c2 ) << endl; 11112810Sandreas.sandberg@arm.com 11212810Sandreas.sandberg@arm.com sc_int<3> c3 = -1; 11312810Sandreas.sandberg@arm.com cout << endl; 11412810Sandreas.sandberg@arm.com cout << and_reduce( c3 ) << endl; 11512810Sandreas.sandberg@arm.com cout << xor_reduce( c3 ) << endl; 11612810Sandreas.sandberg@arm.com 11712810Sandreas.sandberg@arm.com sc_uint<2> d2 = sc_dt::uint_type( -1 ); 11812810Sandreas.sandberg@arm.com cout << endl; 11912810Sandreas.sandberg@arm.com cout << and_reduce( d2 ) << endl; 12012810Sandreas.sandberg@arm.com cout << xor_reduce( d2 ) << endl; 12112810Sandreas.sandberg@arm.com 12212810Sandreas.sandberg@arm.com sc_uint<3> d3 = sc_dt::uint_type( -1 ); 12312810Sandreas.sandberg@arm.com cout << endl; 12412810Sandreas.sandberg@arm.com cout << and_reduce( d3 ) << endl; 12512810Sandreas.sandberg@arm.com cout << xor_reduce( d3 ) << endl; 12614054Stiago.muck@arm.com 12714054Stiago.muck@arm.com sc_int<6> e; 12812810Sandreas.sandberg@arm.com sc_uint<6> f; 12912810Sandreas.sandberg@arm.com cout << endl; 13012810Sandreas.sandberg@arm.com for( int i = 0; i >= -10; -- i ) { 13112810Sandreas.sandberg@arm.com e = i; 13212810Sandreas.sandberg@arm.com f = i; 13312810Sandreas.sandberg@arm.com cout << xor_reduce( e ) << endl; 13412810Sandreas.sandberg@arm.com cout << xor_reduce( f ) << endl; 13512810Sandreas.sandberg@arm.com } 13612810Sandreas.sandberg@arm.com 13712810Sandreas.sandberg@arm.com return 0; 13812810Sandreas.sandberg@arm.com} 13912810Sandreas.sandberg@arm.com