summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-10-05 22:52:15 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2013-10-05 22:52:15 -0700
commite1986d04336ce8580a5766f70a3fa09af28c0456 (patch)
tree94a55771272152cca03236db939bf30612a638aa
parenta4a1053d9851cf9ef52a5b52818e66b9c1bdba4d (diff)
downloadabc-e1986d04336ce8580a5766f70a3fa09af28c0456.tar.gz
abc-e1986d04336ce8580a5766f70a3fa09af28c0456.tar.bz2
abc-e1986d04336ce8580a5766f70a3fa09af28c0456.zip
Towards better Boolean matching.
-rw-r--r--src/map/if/ifDec07.c4
-rw-r--r--src/misc/util/utilTruth.h13
-rw-r--r--src/opt/dau/dauNonDsd.c17
3 files changed, 17 insertions, 17 deletions
diff --git a/src/map/if/ifDec07.c b/src/map/if/ifDec07.c
index 6059b772..725b532f 100644
--- a/src/map/if/ifDec07.c
+++ b/src/map/if/ifDec07.c
@@ -988,13 +988,13 @@ word If_Dec5PerformEx()
{
word z;
// find one
- z = 0x17ac & 0xFFFF;
+ z = (word)(0x17ac & 0xFFFF);
z |= (((word)3) << (16 + 4*0));
z |= (((word)4) << (16 + 4*1));
z |= (((word)1) << (16 + 4*2));
z |= (((word)2) << (16 + 4*3));
// second one
- z |= ((0x179a & 0xFFFF) << 32);
+ z |= (((word)(0x179a & 0xFFFF)) << 32);
z |= (((word)0) << (48 + 4*0));
z |= (((word)7) << (48 + 4*1));
z |= (((word)1) << (48 + 4*2));
diff --git a/src/misc/util/utilTruth.h b/src/misc/util/utilTruth.h
index cded2ce8..14b13234 100644
--- a/src/misc/util/utilTruth.h
+++ b/src/misc/util/utilTruth.h
@@ -61,6 +61,19 @@ static word s_PMasks[5][3] = {
{ ABC_CONST(0xFFFF00000000FFFF), ABC_CONST(0x00000000FFFF0000), ABC_CONST(0x0000FFFF00000000) }
};
+// the bit count for the first 256 integer numbers
+static int Abc_TtBitCount8[256] = {
+ 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
+ 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
+ 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
+ 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
+ 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
+ 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
+ 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
+ 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8
+};
+static inline int Abc_TtBitCount16( int i ) { return Abc_TtBitCount8[i & 0xFF] + Abc_TtBitCount8[i >> 8]; }
+
////////////////////////////////////////////////////////////////////////
/// MACRO DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
diff --git a/src/opt/dau/dauNonDsd.c b/src/opt/dau/dauNonDsd.c
index 65821027..c923d3eb 100644
--- a/src/opt/dau/dauNonDsd.c
+++ b/src/opt/dau/dauNonDsd.c
@@ -27,19 +27,6 @@ ABC_NAMESPACE_IMPL_START
/// DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
-// the bit count for the first 256 integer numbers
-static int BitCount8[256] = {
- 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
- 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
- 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
- 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
- 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
- 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
- 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
- 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8
-};
-static inline BitCount16( int i ) { return BitCount8[i & 0xFF] + BitCount8[i >> 8]; }
-
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
@@ -323,7 +310,7 @@ Vec_Int_t * Dau_DecFindSets( word * p, int nVars )
// iterate through bound sets of each size in increasing order
for ( sizeB = 2; sizeB < nVars; sizeB++ ) // bound set size
for ( maskB = 0; maskB < Limit; maskB++ ) // bound set
- if ( BitCount16(maskB) == sizeB )
+ if ( Abc_TtBitCount16(maskB) == sizeB )
{
// permute variables to have bound set on top
Dau_DecMoveFreeToLSB( p, nVars, V2P, P2V, maskB, sizeB );
@@ -342,7 +329,7 @@ Vec_Int_t * Dau_DecFindSets( word * p, int nVars )
for ( sizeS = 1; sizeS <= sizeB - 2; sizeS++ ) // shared set size
// sizeS = 1;
for ( maskS = 0; maskS < (1 << sizeB); maskS++ ) // shared set
- if ( BitCount16(maskS) == sizeS )
+ if ( Abc_TtBitCount16(maskS) == sizeS )
{
setMixed = Dau_DecCreateSet( pVarsB, sizeB, maskS );
// printf( "Considering %10d ", setMixed );