sc_int32_mask.cpp revision 12027
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 sc_int32_mask.cpp -- Fills the mask_int lookup table to enable efficient 23 part-selection on 32-bit sc_ints and sc_uints. 24 25 Original Author: Amit Rao, Synopsys, Inc. 26 27 *****************************************************************************/ 28 29/***************************************************************************** 30 31 MODIFICATION LOG - modifiers, enter your name, affiliation, date and 32 changes you are making here. 33 34 Name, Affiliation, Date: Ali Dasdan, Synopsys, Inc. 35 Description of Modification: - Resolved ambiguity with sc_(un)signed. 36 - Merged the code for 64- and 32-bit versions 37 via the constants in sc_nbdefs.h. 38 - Eliminated redundant file inclusions. 39 40 Name, Affiliation, Date: 41 Description of Modification: 42 43 *****************************************************************************/ 44 45 46// $Log: sc_int32_mask.cpp,v $ 47// Revision 1.2 2011/02/18 20:19:14 acg 48// Andy Goodrich: updating Copyright notice. 49// 50// Revision 1.1.1.1 2006/12/15 20:20:05 acg 51// SystemC 2.3 52// 53// Revision 1.3 2006/01/13 18:49:31 acg 54// Added $Log command so that CVS check in comments are reproduced in the 55// source. 56// 57 58#ifdef _32BIT_ 59 60#include "sysc/datatypes/int/sc_int_base.h" 61#include "sysc/datatypes/int/sc_uint_base.h" 62 63 64namespace sc_dt 65{ 66 67const uint_type mask_int[SC_INTWIDTH][SC_INTWIDTH] = 68{ 69{ 700xfffffffeU 71}, 72{ 730xfffffffcU, 740xfffffffdU 75}, 76{ 770xfffffff8U, 780xfffffff9U, 790xfffffffbU 80}, 81{ 820xfffffff0U, 830xfffffff1U, 840xfffffff3U, 850xfffffff7U 86}, 87{ 880xffffffe0U, 890xffffffe1U, 900xffffffe3U, 910xffffffe7U, 920xffffffefU 93}, 94{ 950xffffffc0U, 960xffffffc1U, 970xffffffc3U, 980xffffffc7U, 990xffffffcfU, 1000xffffffdfU 101}, 102{ 1030xffffff80U, 1040xffffff81U, 1050xffffff83U, 1060xffffff87U, 1070xffffff8fU, 1080xffffff9fU, 1090xffffffbfU 110}, 111{ 1120xffffff00U, 1130xffffff01U, 1140xffffff03U, 1150xffffff07U, 1160xffffff0fU, 1170xffffff1fU, 1180xffffff3fU, 1190xffffff7fU 120}, 121{ 1220xfffffe00U, 1230xfffffe01U, 1240xfffffe03U, 1250xfffffe07U, 1260xfffffe0fU, 1270xfffffe1fU, 1280xfffffe3fU, 1290xfffffe7fU, 1300xfffffeffU 131}, 132{ 1330xfffffc00U, 1340xfffffc01U, 1350xfffffc03U, 1360xfffffc07U, 1370xfffffc0fU, 1380xfffffc1fU, 1390xfffffc3fU, 1400xfffffc7fU, 1410xfffffcffU, 1420xfffffdffU 143}, 144{ 1450xfffff800U, 1460xfffff801U, 1470xfffff803U, 1480xfffff807U, 1490xfffff80fU, 1500xfffff81fU, 1510xfffff83fU, 1520xfffff87fU, 1530xfffff8ffU, 1540xfffff9ffU, 1550xfffffbffU 156}, 157{ 1580xfffff000U, 1590xfffff001U, 1600xfffff003U, 1610xfffff007U, 1620xfffff00fU, 1630xfffff01fU, 1640xfffff03fU, 1650xfffff07fU, 1660xfffff0ffU, 1670xfffff1ffU, 1680xfffff3ffU, 1690xfffff7ffU 170}, 171{ 1720xffffe000U, 1730xffffe001U, 1740xffffe003U, 1750xffffe007U, 1760xffffe00fU, 1770xffffe01fU, 1780xffffe03fU, 1790xffffe07fU, 1800xffffe0ffU, 1810xffffe1ffU, 1820xffffe3ffU, 1830xffffe7ffU, 1840xffffefffU 185}, 186{ 1870xffffc000U, 1880xffffc001U, 1890xffffc003U, 1900xffffc007U, 1910xffffc00fU, 1920xffffc01fU, 1930xffffc03fU, 1940xffffc07fU, 1950xffffc0ffU, 1960xffffc1ffU, 1970xffffc3ffU, 1980xffffc7ffU, 1990xffffcfffU, 2000xffffdfffU 201}, 202{ 2030xffff8000U, 2040xffff8001U, 2050xffff8003U, 2060xffff8007U, 2070xffff800fU, 2080xffff801fU, 2090xffff803fU, 2100xffff807fU, 2110xffff80ffU, 2120xffff81ffU, 2130xffff83ffU, 2140xffff87ffU, 2150xffff8fffU, 2160xffff9fffU, 2170xffffbfffU 218}, 219{ 2200xffff0000U, 2210xffff0001U, 2220xffff0003U, 2230xffff0007U, 2240xffff000fU, 2250xffff001fU, 2260xffff003fU, 2270xffff007fU, 2280xffff00ffU, 2290xffff01ffU, 2300xffff03ffU, 2310xffff07ffU, 2320xffff0fffU, 2330xffff1fffU, 2340xffff3fffU, 2350xffff7fffU 236}, 237{ 2380xfffe0000U, 2390xfffe0001U, 2400xfffe0003U, 2410xfffe0007U, 2420xfffe000fU, 2430xfffe001fU, 2440xfffe003fU, 2450xfffe007fU, 2460xfffe00ffU, 2470xfffe01ffU, 2480xfffe03ffU, 2490xfffe07ffU, 2500xfffe0fffU, 2510xfffe1fffU, 2520xfffe3fffU, 2530xfffe7fffU, 2540xfffeffffU 255}, 256{ 2570xfffc0000U, 2580xfffc0001U, 2590xfffc0003U, 2600xfffc0007U, 2610xfffc000fU, 2620xfffc001fU, 2630xfffc003fU, 2640xfffc007fU, 2650xfffc00ffU, 2660xfffc01ffU, 2670xfffc03ffU, 2680xfffc07ffU, 2690xfffc0fffU, 2700xfffc1fffU, 2710xfffc3fffU, 2720xfffc7fffU, 2730xfffcffffU, 2740xfffdffffU 275}, 276{ 2770xfff80000U, 2780xfff80001U, 2790xfff80003U, 2800xfff80007U, 2810xfff8000fU, 2820xfff8001fU, 2830xfff8003fU, 2840xfff8007fU, 2850xfff800ffU, 2860xfff801ffU, 2870xfff803ffU, 2880xfff807ffU, 2890xfff80fffU, 2900xfff81fffU, 2910xfff83fffU, 2920xfff87fffU, 2930xfff8ffffU, 2940xfff9ffffU, 2950xfffbffffU 296}, 297{ 2980xfff00000U, 2990xfff00001U, 3000xfff00003U, 3010xfff00007U, 3020xfff0000fU, 3030xfff0001fU, 3040xfff0003fU, 3050xfff0007fU, 3060xfff000ffU, 3070xfff001ffU, 3080xfff003ffU, 3090xfff007ffU, 3100xfff00fffU, 3110xfff01fffU, 3120xfff03fffU, 3130xfff07fffU, 3140xfff0ffffU, 3150xfff1ffffU, 3160xfff3ffffU, 3170xfff7ffffU 318}, 319{ 3200xffe00000U, 3210xffe00001U, 3220xffe00003U, 3230xffe00007U, 3240xffe0000fU, 3250xffe0001fU, 3260xffe0003fU, 3270xffe0007fU, 3280xffe000ffU, 3290xffe001ffU, 3300xffe003ffU, 3310xffe007ffU, 3320xffe00fffU, 3330xffe01fffU, 3340xffe03fffU, 3350xffe07fffU, 3360xffe0ffffU, 3370xffe1ffffU, 3380xffe3ffffU, 3390xffe7ffffU, 3400xffefffffU 341}, 342{ 3430xffc00000U, 3440xffc00001U, 3450xffc00003U, 3460xffc00007U, 3470xffc0000fU, 3480xffc0001fU, 3490xffc0003fU, 3500xffc0007fU, 3510xffc000ffU, 3520xffc001ffU, 3530xffc003ffU, 3540xffc007ffU, 3550xffc00fffU, 3560xffc01fffU, 3570xffc03fffU, 3580xffc07fffU, 3590xffc0ffffU, 3600xffc1ffffU, 3610xffc3ffffU, 3620xffc7ffffU, 3630xffcfffffU, 3640xffdfffffU 365}, 366{ 3670xff800000U, 3680xff800001U, 3690xff800003U, 3700xff800007U, 3710xff80000fU, 3720xff80001fU, 3730xff80003fU, 3740xff80007fU, 3750xff8000ffU, 3760xff8001ffU, 3770xff8003ffU, 3780xff8007ffU, 3790xff800fffU, 3800xff801fffU, 3810xff803fffU, 3820xff807fffU, 3830xff80ffffU, 3840xff81ffffU, 3850xff83ffffU, 3860xff87ffffU, 3870xff8fffffU, 3880xff9fffffU, 3890xffbfffffU 390}, 391{ 3920xff000000U, 3930xff000001U, 3940xff000003U, 3950xff000007U, 3960xff00000fU, 3970xff00001fU, 3980xff00003fU, 3990xff00007fU, 4000xff0000ffU, 4010xff0001ffU, 4020xff0003ffU, 4030xff0007ffU, 4040xff000fffU, 4050xff001fffU, 4060xff003fffU, 4070xff007fffU, 4080xff00ffffU, 4090xff01ffffU, 4100xff03ffffU, 4110xff07ffffU, 4120xff0fffffU, 4130xff1fffffU, 4140xff3fffffU, 4150xff7fffffU 416}, 417{ 4180xfe000000U, 4190xfe000001U, 4200xfe000003U, 4210xfe000007U, 4220xfe00000fU, 4230xfe00001fU, 4240xfe00003fU, 4250xfe00007fU, 4260xfe0000ffU, 4270xfe0001ffU, 4280xfe0003ffU, 4290xfe0007ffU, 4300xfe000fffU, 4310xfe001fffU, 4320xfe003fffU, 4330xfe007fffU, 4340xfe00ffffU, 4350xfe01ffffU, 4360xfe03ffffU, 4370xfe07ffffU, 4380xfe0fffffU, 4390xfe1fffffU, 4400xfe3fffffU, 4410xfe7fffffU, 4420xfeffffffU 443}, 444{ 4450xfc000000U, 4460xfc000001U, 4470xfc000003U, 4480xfc000007U, 4490xfc00000fU, 4500xfc00001fU, 4510xfc00003fU, 4520xfc00007fU, 4530xfc0000ffU, 4540xfc0001ffU, 4550xfc0003ffU, 4560xfc0007ffU, 4570xfc000fffU, 4580xfc001fffU, 4590xfc003fffU, 4600xfc007fffU, 4610xfc00ffffU, 4620xfc01ffffU, 4630xfc03ffffU, 4640xfc07ffffU, 4650xfc0fffffU, 4660xfc1fffffU, 4670xfc3fffffU, 4680xfc7fffffU, 4690xfcffffffU, 4700xfdffffffU 471}, 472{ 4730xf8000000U, 4740xf8000001U, 4750xf8000003U, 4760xf8000007U, 4770xf800000fU, 4780xf800001fU, 4790xf800003fU, 4800xf800007fU, 4810xf80000ffU, 4820xf80001ffU, 4830xf80003ffU, 4840xf80007ffU, 4850xf8000fffU, 4860xf8001fffU, 4870xf8003fffU, 4880xf8007fffU, 4890xf800ffffU, 4900xf801ffffU, 4910xf803ffffU, 4920xf807ffffU, 4930xf80fffffU, 4940xf81fffffU, 4950xf83fffffU, 4960xf87fffffU, 4970xf8ffffffU, 4980xf9ffffffU, 4990xfbffffffU 500}, 501{ 5020xf0000000U, 5030xf0000001U, 5040xf0000003U, 5050xf0000007U, 5060xf000000fU, 5070xf000001fU, 5080xf000003fU, 5090xf000007fU, 5100xf00000ffU, 5110xf00001ffU, 5120xf00003ffU, 5130xf00007ffU, 5140xf0000fffU, 5150xf0001fffU, 5160xf0003fffU, 5170xf0007fffU, 5180xf000ffffU, 5190xf001ffffU, 5200xf003ffffU, 5210xf007ffffU, 5220xf00fffffU, 5230xf01fffffU, 5240xf03fffffU, 5250xf07fffffU, 5260xf0ffffffU, 5270xf1ffffffU, 5280xf3ffffffU, 5290xf7ffffffU 530}, 531{ 5320xe0000000U, 5330xe0000001U, 5340xe0000003U, 5350xe0000007U, 5360xe000000fU, 5370xe000001fU, 5380xe000003fU, 5390xe000007fU, 5400xe00000ffU, 5410xe00001ffU, 5420xe00003ffU, 5430xe00007ffU, 5440xe0000fffU, 5450xe0001fffU, 5460xe0003fffU, 5470xe0007fffU, 5480xe000ffffU, 5490xe001ffffU, 5500xe003ffffU, 5510xe007ffffU, 5520xe00fffffU, 5530xe01fffffU, 5540xe03fffffU, 5550xe07fffffU, 5560xe0ffffffU, 5570xe1ffffffU, 5580xe3ffffffU, 5590xe7ffffffU, 5600xefffffffU 561}, 562{ 5630xc0000000U, 5640xc0000001U, 5650xc0000003U, 5660xc0000007U, 5670xc000000fU, 5680xc000001fU, 5690xc000003fU, 5700xc000007fU, 5710xc00000ffU, 5720xc00001ffU, 5730xc00003ffU, 5740xc00007ffU, 5750xc0000fffU, 5760xc0001fffU, 5770xc0003fffU, 5780xc0007fffU, 5790xc000ffffU, 5800xc001ffffU, 5810xc003ffffU, 5820xc007ffffU, 5830xc00fffffU, 5840xc01fffffU, 5850xc03fffffU, 5860xc07fffffU, 5870xc0ffffffU, 5880xc1ffffffU, 5890xc3ffffffU, 5900xc7ffffffU, 5910xcfffffffU, 5920xdfffffffU 593}, 594{ 5950x80000000U, 5960x80000001U, 5970x80000003U, 5980x80000007U, 5990x8000000fU, 6000x8000001fU, 6010x8000003fU, 6020x8000007fU, 6030x800000ffU, 6040x800001ffU, 6050x800003ffU, 6060x800007ffU, 6070x80000fffU, 6080x80001fffU, 6090x80003fffU, 6100x80007fffU, 6110x8000ffffU, 6120x8001ffffU, 6130x8003ffffU, 6140x8007ffffU, 6150x800fffffU, 6160x801fffffU, 6170x803fffffU, 6180x807fffffU, 6190x80ffffffU, 6200x81ffffffU, 6210x83ffffffU, 6220x87ffffffU, 6230x8fffffffU, 6240x9fffffffU, 6250xbfffffffU 626}, 627{ 6280x0U, 6290x1U, 6300x3U, 6310x7U, 6320xfU, 6330x1fU, 6340x3fU, 6350x7fU, 6360xffU, 6370x1ffU, 6380x3ffU, 6390x7ffU, 6400xfffU, 6410x1fffU, 6420x3fffU, 6430x7fffU, 6440xffffU, 6450x1ffffU, 6460x3ffffU, 6470x7ffffU, 6480xfffffU, 6490x1fffffU, 6500x3fffffU, 6510x7fffffU, 6520xffffffU, 6530x1ffffffU, 6540x3ffffffU, 6550x7ffffffU, 6560xfffffffU, 6570x1fffffffU, 6580x3fffffffU, 6590x7fffffffU 660} 661}; 662 663} // namespace sc_dt 664 665#endif 666