Commit 905a6277 by Alan Mishchenko

Experiments with function enumeration.

parent cc4e0be7
...@@ -28,7 +28,7 @@ ABC_NAMESPACE_IMPL_START ...@@ -28,7 +28,7 @@ ABC_NAMESPACE_IMPL_START
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
#define USE4VARS 1 //#define USE4VARS 1
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS /// /// FUNCTION DEFINITIONS ///
...@@ -154,13 +154,14 @@ void Dau_AddFunction( word tCur, int nVars, unsigned * pTable, Vec_Int_t * vNpns ...@@ -154,13 +154,14 @@ void Dau_AddFunction( word tCur, int nVars, unsigned * pTable, Vec_Int_t * vNpns
int Digit = (1 << nVars)-1; int Digit = (1 << nVars)-1;
word tMask = Abc_Tt6Mask( 1 << nVars ); word tMask = Abc_Tt6Mask( 1 << nVars );
word tNorm = (tCur >> Digit) & 1 ? ~tCur : tCur; word tNorm = (tCur >> Digit) & 1 ? ~tCur : tCur;
unsigned t = (unsigned)tNorm & tMask; unsigned t = (unsigned)(tNorm & tMask);
unsigned tRep = pTable[t]; unsigned tRep = pTable[t];
unsigned tRep2 = pTable[tRep & 0x7FFFFFFF];
assert( ((tNorm >> Digit) & 1) == 0 ); assert( ((tNorm >> Digit) & 1) == 0 );
if ( (tRep >> 31) == 0 ) // first time if ( (tRep2 >> 31) == 0 ) // first time
{ {
Vec_IntPush( vNpns, tRep ); Vec_IntPush( vNpns, tRep2 );
pTable[tRep] |= (1 << 31); pTable[tRep & 0x7FFFFFFF] = tRep2 | (1 << 31);
} }
} }
...@@ -263,7 +264,7 @@ void Dau_NetworkEnum() ...@@ -263,7 +264,7 @@ void Dau_NetworkEnum()
} }
void Dau_NetworkEnumTest() void Dau_NetworkEnumTest()
{ {
Dau_TruthEnum(); //Dau_TruthEnum();
Dau_NetworkEnum(); Dau_NetworkEnum();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment