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