test03.cpp revision 12855:588919e0e4aa
17635SBrad.Beckmann@amd.com/***************************************************************************** 27635SBrad.Beckmann@amd.com 37635SBrad.Beckmann@amd.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 47635SBrad.Beckmann@amd.com more contributor license agreements. See the NOTICE file distributed 57635SBrad.Beckmann@amd.com with this work for additional information regarding copyright ownership. 67635SBrad.Beckmann@amd.com Accellera licenses this file to you under the Apache License, Version 2.0 77635SBrad.Beckmann@amd.com (the "License"); you may not use this file except in compliance with the 87635SBrad.Beckmann@amd.com License. You may obtain a copy of the License at 97635SBrad.Beckmann@amd.com 107635SBrad.Beckmann@amd.com http://www.apache.org/licenses/LICENSE-2.0 117635SBrad.Beckmann@amd.com 127635SBrad.Beckmann@amd.com Unless required by applicable law or agreed to in writing, software 137635SBrad.Beckmann@amd.com distributed under the License is distributed on an "AS IS" BASIS, 147635SBrad.Beckmann@amd.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 157635SBrad.Beckmann@amd.com implied. See the License for the specific language governing 167635SBrad.Beckmann@amd.com permissions and limitations under the License. 177635SBrad.Beckmann@amd.com 187635SBrad.Beckmann@amd.com *****************************************************************************/ 197635SBrad.Beckmann@amd.com 207635SBrad.Beckmann@amd.com/***************************************************************************** 217635SBrad.Beckmann@amd.com 227635SBrad.Beckmann@amd.com test03.cpp -- 237635SBrad.Beckmann@amd.com 247635SBrad.Beckmann@amd.com Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 257635SBrad.Beckmann@amd.com 267635SBrad.Beckmann@amd.com *****************************************************************************/ 277635SBrad.Beckmann@amd.com 287635SBrad.Beckmann@amd.com/***************************************************************************** 297635SBrad.Beckmann@amd.com 307635SBrad.Beckmann@amd.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 3112564Sgabeblack@google.com changes you are making here. 3213774Sandreas.sandberg@arm.com 3312564Sgabeblack@google.com Name, Affiliation, Date: Andy Goodrich, Forte Design Systems 2006-08-17 347635SBrad.Beckmann@amd.com Description of Modification: Converted over to test sc_big types. 357635SBrad.Beckmann@amd.com 367635SBrad.Beckmann@amd.com *****************************************************************************/ 377635SBrad.Beckmann@amd.com 387635SBrad.Beckmann@amd.com// test of the reduce methods in the sc_big[u]int datatypes -- method notation 3911682Sandreas.hansson@arm.com 4011670Sandreas.hansson@arm.com#include "systemc.h" 417635SBrad.Beckmann@amd.com 4211682Sandreas.hansson@arm.comint 4311670Sandreas.hansson@arm.comsc_main( int, char*[] ) 447635SBrad.Beckmann@amd.com{ 457635SBrad.Beckmann@amd.com // 1) check the existence of the reduce methods 467635SBrad.Beckmann@amd.com 477635SBrad.Beckmann@amd.com sc_bigint<42> a = 42; 487635SBrad.Beckmann@amd.com 497635SBrad.Beckmann@amd.com // sc_signed 507635SBrad.Beckmann@amd.com cout << endl; 5111688Sandreas.hansson@arm.com cout << a.and_reduce() << endl; 527635SBrad.Beckmann@amd.com cout << a.or_reduce() << endl; 5310083Snilay@cs.wisc.edu cout << a.xor_reduce() << endl; 5410083Snilay@cs.wisc.edu cout << a.nand_reduce() << endl; 557635SBrad.Beckmann@amd.com cout << a.nor_reduce() << endl; 567635SBrad.Beckmann@amd.com cout << a.xnor_reduce() << endl; 577635SBrad.Beckmann@amd.com 587635SBrad.Beckmann@amd.com // sc_signed_subref 597635SBrad.Beckmann@amd.com cout << endl; 607635SBrad.Beckmann@amd.com cout << a( 7, 0 ).and_reduce() << endl; 617635SBrad.Beckmann@amd.com cout << a( 7, 0 ).or_reduce() << endl; 627635SBrad.Beckmann@amd.com cout << a( 7, 0 ).xor_reduce() << endl; 6313731Sandreas.sandberg@arm.com cout << a( 7, 0 ).nand_reduce() << endl; 6413731Sandreas.sandberg@arm.com cout << a( 7, 0 ).nor_reduce() << endl; 6513731Sandreas.sandberg@arm.com cout << a( 7, 0 ).xnor_reduce() << endl; 667635SBrad.Beckmann@amd.com 677635SBrad.Beckmann@amd.com // concatenation 687635SBrad.Beckmann@amd.com cout << endl; 697635SBrad.Beckmann@amd.com cout << ( a( 7, 0 ), a( 15, 8 ) ).and_reduce() << endl; 707635SBrad.Beckmann@amd.com cout << ( a( 7, 0 ), a( 15, 8 ) ).or_reduce() << endl; 717635SBrad.Beckmann@amd.com cout << ( a( 7, 0 ), a( 15, 8 ) ).xor_reduce() << endl; 727635SBrad.Beckmann@amd.com cout << ( a( 7, 0 ), a( 15, 8 ) ).nand_reduce() << endl; 737635SBrad.Beckmann@amd.com cout << ( a( 7, 0 ), a( 15, 8 ) ).nor_reduce() << endl; 747635SBrad.Beckmann@amd.com cout << ( a( 7, 0 ), a( 15, 8 ) ).xnor_reduce() << endl; 757635SBrad.Beckmann@amd.com 767635SBrad.Beckmann@amd.com sc_biguint<42> b = 42; 777635SBrad.Beckmann@amd.com 787635SBrad.Beckmann@amd.com // sc_unsigned 797635SBrad.Beckmann@amd.com cout << endl; 807635SBrad.Beckmann@amd.com cout << b.and_reduce() << endl; 817635SBrad.Beckmann@amd.com cout << b.or_reduce() << endl; 827635SBrad.Beckmann@amd.com cout << b.xor_reduce() << endl; 8312564Sgabeblack@google.com cout << b.nand_reduce() << endl; 847635SBrad.Beckmann@amd.com cout << b.nor_reduce() << endl; 857635SBrad.Beckmann@amd.com cout << b.xnor_reduce() << endl; 867635SBrad.Beckmann@amd.com 877635SBrad.Beckmann@amd.com // sc_unsigned_subref 887635SBrad.Beckmann@amd.com cout << endl; 898184Ssomayeh@cs.wisc.edu cout << b( 7, 0 ).and_reduce() << endl; 908184Ssomayeh@cs.wisc.edu cout << b( 7, 0 ).or_reduce() << endl; 918184Ssomayeh@cs.wisc.edu cout << b( 7, 0 ).xor_reduce() << endl; 928184Ssomayeh@cs.wisc.edu cout << b( 7, 0 ).nand_reduce() << endl; 938184Ssomayeh@cs.wisc.edu cout << b( 7, 0 ).nor_reduce() << endl; 948184Ssomayeh@cs.wisc.edu cout << b( 7, 0 ).xnor_reduce() << endl; 958184Ssomayeh@cs.wisc.edu 9610083Snilay@cs.wisc.edu // concatenation 979108SBrad.Beckmann@amd.com cout << endl; 987635SBrad.Beckmann@amd.com cout << ( b( 7, 0 ), b( 15, 8 ) ).and_reduce() << endl; 997635SBrad.Beckmann@amd.com cout << ( b( 7, 0 ), b( 15, 8 ) ).or_reduce() << endl; 1008931Sandreas.hansson@arm.com cout << ( b( 7, 0 ), b( 15, 8 ) ).xor_reduce() << endl; 1017635SBrad.Beckmann@amd.com cout << ( b( 7, 0 ), b( 15, 8 ) ).nand_reduce() << endl; 1027635SBrad.Beckmann@amd.com cout << ( b( 7, 0 ), b( 15, 8 ) ).nor_reduce() << endl; 1037635SBrad.Beckmann@amd.com cout << ( b( 7, 0 ), b( 15, 8 ) ).xnor_reduce() << endl; 10410524Snilay@cs.wisc.edu 1059870Sandreas.hansson@arm.com // 2) check the functionality of the reduce methods 1069870Sandreas.hansson@arm.com 1079870Sandreas.hansson@arm.com sc_bigint<2> c2 = -1; 1089870Sandreas.hansson@arm.com cout << endl; 1099870Sandreas.hansson@arm.com cout << c2.and_reduce() << endl; 1109870Sandreas.hansson@arm.com cout << c2.xor_reduce() << endl; 1117635SBrad.Beckmann@amd.com 11210519Snilay@cs.wisc.edu sc_bigint<3> c3 = -1; 1137635SBrad.Beckmann@amd.com cout << endl; 1149793Sakash.bagdia@arm.com cout << c3.and_reduce() << endl; 1159870Sandreas.hansson@arm.com cout << c3.xor_reduce() << endl; 1169870Sandreas.hansson@arm.com 1179793Sakash.bagdia@arm.com sc_biguint<2> d2 = sc_dt::uint_type( -1 ); 11810120Snilay@cs.wisc.edu cout << endl; 1197635SBrad.Beckmann@amd.com cout << d2.and_reduce() << endl; 12010120Snilay@cs.wisc.edu cout << d2.xor_reduce() << endl; 1219108SBrad.Beckmann@amd.com 1227635SBrad.Beckmann@amd.com sc_biguint<3> d3 = sc_dt::uint_type( -1 ); 1237635SBrad.Beckmann@amd.com cout << endl; 1247635SBrad.Beckmann@amd.com cout << d3.and_reduce() << endl; 1257635SBrad.Beckmann@amd.com cout << d3.xor_reduce() << endl; 1267635SBrad.Beckmann@amd.com 1277635SBrad.Beckmann@amd.com sc_bigint<6> e; 12810120Snilay@cs.wisc.edu sc_biguint<6> f; 1297635SBrad.Beckmann@amd.com cout << endl; 1308932SBrad.Beckmann@amd.com for( int i = 0; i >= -10; -- i ) { 1317635SBrad.Beckmann@amd.com e = i; 13211266SBrad.Beckmann@amd.com f = i; 13311266SBrad.Beckmann@amd.com cout << e.xor_reduce() << endl; 13411266SBrad.Beckmann@amd.com cout << f.xor_reduce() << endl; 13511266SBrad.Beckmann@amd.com } 13611266SBrad.Beckmann@amd.com 13711266SBrad.Beckmann@amd.com return 0; 13811266SBrad.Beckmann@amd.com} 13911266SBrad.Beckmann@amd.com