Commit c6b962ef by Alan Mishchenko

An improvement to 'twoexact' and 'lutexact'.

parent e37bbba7
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
ABC_NAMESPACE_HEADER_START ABC_NAMESPACE_HEADER_START
//#define USE_NODE_ORDER 1 //#define USE_NODE_ORDER 1
//#define USE_FIRST_SPECIAL 1
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// BASIC TYPES /// /// BASIC TYPES ///
......
...@@ -438,6 +438,7 @@ int Exa_ManMarkup( Exa_Man_t * p ) ...@@ -438,6 +438,7 @@ int Exa_ManMarkup( Exa_Man_t * p )
{ {
for ( k = 0; k < 2; k++ ) for ( k = 0; k < 2; k++ )
{ {
#ifdef USE_FIRST_SPECIAL
if ( i == p->nObjs - 1 && k == 0 ) if ( i == p->nObjs - 1 && k == 0 )
{ {
j = p->nObjs - 2; j = p->nObjs - 2;
...@@ -445,6 +446,7 @@ int Exa_ManMarkup( Exa_Man_t * p ) ...@@ -445,6 +446,7 @@ int Exa_ManMarkup( Exa_Man_t * p )
p->VarMarks[i][k][j] = p->iVar++; p->VarMarks[i][k][j] = p->iVar++;
continue; continue;
} }
#endif
for ( j = 1 - k; j < i - k; j++ ) for ( j = 1 - k; j < i - k; j++ )
{ {
Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) ); Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) );
...@@ -817,6 +819,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p ) ...@@ -817,6 +819,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p )
{ {
for ( k = 0; k < p->nLutSize; k++ ) for ( k = 0; k < p->nLutSize; k++ )
{ {
#ifdef USE_FIRST_SPECIAL
if ( i == p->nObjs - 1 && k == 0 ) if ( i == p->nObjs - 1 && k == 0 )
{ {
j = p->nObjs - 2; j = p->nObjs - 2;
...@@ -824,6 +827,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p ) ...@@ -824,6 +827,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p )
p->VarMarks[i][k][j] = p->iVar++; p->VarMarks[i][k][j] = p->iVar++;
continue; continue;
} }
#endif
for ( j = p->nLutSize - 1 - k; j < i - k; j++ ) for ( j = p->nLutSize - 1 - k; j < i - k; j++ )
{ {
Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) ); Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) );
......
...@@ -544,6 +544,7 @@ static int Exa_ManMarkup( Exa_Man_t * p ) ...@@ -544,6 +544,7 @@ static int Exa_ManMarkup( Exa_Man_t * p )
{ {
for ( k = 0; k < 2; k++ ) for ( k = 0; k < 2; k++ )
{ {
#ifdef USE_FIRST_SPECIAL
if ( i == p->nObjs - 1 && k == 0 ) if ( i == p->nObjs - 1 && k == 0 )
{ {
j = p->nObjs - 2; j = p->nObjs - 2;
...@@ -551,6 +552,7 @@ static int Exa_ManMarkup( Exa_Man_t * p ) ...@@ -551,6 +552,7 @@ static int Exa_ManMarkup( Exa_Man_t * p )
p->VarMarks[i][k][j] = p->iVar++; p->VarMarks[i][k][j] = p->iVar++;
continue; continue;
} }
#endif
for ( j = 1 - k; j < i - k; j++ ) for ( j = 1 - k; j < i - k; j++ )
{ {
Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) ); Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) );
...@@ -925,6 +927,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p ) ...@@ -925,6 +927,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p )
{ {
for ( k = 0; k < p->nLutSize; k++ ) for ( k = 0; k < p->nLutSize; k++ )
{ {
#ifdef USE_FIRST_SPECIAL
if ( i == p->nObjs - 1 && k == 0 ) if ( i == p->nObjs - 1 && k == 0 )
{ {
j = p->nObjs - 2; j = p->nObjs - 2;
...@@ -932,6 +935,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p ) ...@@ -932,6 +935,7 @@ static int Exa3_ManMarkup( Exa3_Man_t * p )
p->VarMarks[i][k][j] = p->iVar++; p->VarMarks[i][k][j] = p->iVar++;
continue; continue;
} }
#endif
for ( j = p->nLutSize - 1 - k; j < i - k; j++ ) for ( j = p->nLutSize - 1 - k; j < i - k; j++ )
{ {
Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) ); Vec_WecPush( p->vOutLits, j, Abc_Var2Lit(p->iVar, 0) );
......
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