summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2014-03-22 19:59:47 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2014-03-22 19:59:47 -0700
commitb46ac51a6fb2cc7455730ebb61bb54089aaad921 (patch)
treee7b0334a8e37412e325fca69d06dac163cd261b1
parentb5df218dc4c4efc277855e62aabbae363344fbec (diff)
downloadabc-b46ac51a6fb2cc7455730ebb61bb54089aaad921.tar.gz
abc-b46ac51a6fb2cc7455730ebb61bb54089aaad921.tar.bz2
abc-b46ac51a6fb2cc7455730ebb61bb54089aaad921.zip
Experiments with mapping.
-rw-r--r--src/aig/gia/giaKf.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/aig/gia/giaKf.c b/src/aig/gia/giaKf.c
index e1f70b71..18832a76 100644
--- a/src/aig/gia/giaKf.c
+++ b/src/aig/gia/giaKf.c
@@ -1,6 +1,6 @@
/**CFile****************************************************************
- FileName [giaCutt.c]
+ FileName [giaKf.c]
SystemName [ABC: Logic synthesis and verification system.]
@@ -14,7 +14,7 @@
Date [Ver. 1.0. Started - June 20, 2005.]
- Revision [$Id: giaCutt.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
+ Revision [$Id: giaKf.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
***********************************************************************/
@@ -64,7 +64,7 @@ struct Kf_Set_t_
int pTable[1 << KF_LOG_TABLE];
int pValue[1 << KF_LOG_TABLE];
int pPlace[KF_LEAF_MAX];
- int pList [KF_LEAF_MAX];
+ int pList [KF_LEAF_MAX+1];
Kf_Cut_t pCuts0[KF_NUM_MAX];
Kf_Cut_t pCuts1[KF_NUM_MAX];
Kf_Cut_t pCutsR[KF_NUM_MAX*KF_NUM_MAX];
@@ -98,9 +98,9 @@ static inline int * Kf_ObjCuts0( Kf_Man_t * p, int i ) { ret
static inline int * Kf_ObjCuts1( Kf_Man_t * p, int i ) { return Kf_ObjCuts(p, Gia_ObjFaninId1(Gia_ManObj(p->pGia, i), i)); }
static inline int * Kf_ObjCutBest( Kf_Man_t * p, int i ) { int * pCuts = Kf_ObjCuts(p, i); return pCuts + pCuts[1]; }
-#define Kf_ObjForEachCutInt( pList, pCut, i ) for ( i = 0, pCut = pList + KF_ADD_ON1; i < pList[0]; i++, pCut += pCut[0] + KF_ADD_ON2 )
-#define Kf_ListForEachCutt( p, iList, pCut ) for ( pCut = Kf_SetCut(p, p->pList[iList]); pCut; pCut = Kf_SetCut(p, pCut->iNext) )
-#define Kf_ListForEachCuttP( p, iList, pCut, pPlace ) for ( pPlace = p->pList+iList, pCut = Kf_SetCut(p, *pPlace); pCut; pCut = Kf_SetCut(p, *pPlace) )
+#define Kf_ObjForEachCutInt( pList, pCut, i ) for ( i = 0, pCut = pList + KF_ADD_ON1; i < pList[0]; i++, pCut += pCut[0] + KF_ADD_ON2 )
+#define Kf_ListForEachCut( p, iList, pCut ) for ( pCut = Kf_SetCut(p, p->pList[iList]); pCut; pCut = Kf_SetCut(p, pCut->iNext) )
+#define Kf_ListForEachCutP( p, iList, pCut, pPlace ) for ( pPlace = p->pList+iList, pCut = Kf_SetCut(p, *pPlace); pCut; pCut = Kf_SetCut(p, *pPlace) )
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
@@ -217,7 +217,7 @@ static inline void Kf_SetAddToList( Kf_Set_t * p, Kf_Cut_t * pCut, int fSort )
int Value, * pPlace;
Kf_Cut_t * pTemp;
Vec_IntSelectSort( pCut->pLeaves, pCut->nLeaves );
- Kf_ListForEachCuttP( p, pCut->nLeaves, pTemp, pPlace )
+ Kf_ListForEachCutP( p, pCut->nLeaves, pTemp, pPlace )
{
if ( (Value = Kf_SetCompareCuts(pTemp, pCut)) > 0 )
break;
@@ -268,7 +268,7 @@ static inline Kf_Cut_t * Kf_SetSelectBest( Kf_Set_t * p, int fArea, int fSort )
Kf_Cut_t * pCut, * pCutBest;
int i, nCuts = 0;
for ( i = 0; i <= p->nLutSize; i++ )
- Kf_ListForEachCutt( p, i, pCut )
+ Kf_ListForEachCut( p, i, pCut )
nCuts = Kf_SetStoreAddOne( p, nCuts, p->nCutNum-1, pCut, fArea );
assert( nCuts > 0 && nCuts < p->nCutNum );
p->nCuts = nCuts;
@@ -282,7 +282,7 @@ static inline Kf_Cut_t * Kf_SetSelectBest( Kf_Set_t * p, int fArea, int fSort )
Kf_SetAddToList( p, p->ppCuts[i], 0 );
p->nCuts = 0;
for ( i = p->nLutSize; i >= 0; i-- )
- Kf_ListForEachCutt( p, i, pCut )
+ Kf_ListForEachCut( p, i, pCut )
p->ppCuts[p->nCuts++] = pCut;
assert( p->nCuts == nCuts );
return pCutBest;
@@ -360,7 +360,7 @@ static inline int Kf_SetCutDominatedByThis( Kf_Set_t * p, Kf_Cut_t * pCut )
static inline int Kf_SetRemoveDuplicates( Kf_Set_t * p, int nLeaves, word Sign )
{
Kf_Cut_t * pCut;
- Kf_ListForEachCutt( p, nLeaves, pCut )
+ Kf_ListForEachCut( p, nLeaves, pCut )
if ( pCut->Sign == Sign && Kf_SetCutDominatedByThis(p, pCut) )
return 1;
return 0;
@@ -371,11 +371,11 @@ static inline void Kf_SetFilter( Kf_Set_t * p )
int i, k, * pPlace;
assert( p->nCuts > 0 );
for ( i = 0; i <= p->nLutSize; i++ )
- Kf_ListForEachCuttP( p, i, pCut0, pPlace )
+ Kf_ListForEachCutP( p, i, pCut0, pPlace )
{
Kf_HashPopulate( p, pCut0 );
for ( k = 0; k < pCut0->nLeaves; k++ )
- Kf_ListForEachCutt( p, k, pCut1 )
+ Kf_ListForEachCut( p, k, pCut1 )
if ( (pCut0->Sign & pCut1->Sign) == pCut1->Sign && Kf_SetCutDominatedByThis(p, pCut1) )
{ k = pCut0->nLeaves + 1; p->nCuts--; break; }
if ( k == pCut0->nLeaves + 1 ) // remove pCut0
@@ -541,7 +541,7 @@ FlushCut1:
static inline int Kf_SetRemoveDuplicates2( Kf_Set_t * p, Kf_Cut_t * pCutNew )
{
Kf_Cut_t * pCut;
- Kf_ListForEachCutt( p, pCutNew->nLeaves, pCut )
+ Kf_ListForEachCut( p, pCutNew->nLeaves, pCut )
if ( pCut->Sign == pCutNew->Sign && Kf_SetCutIsContainedOrder(pCut, pCutNew) )
return 1;
return 0;
@@ -552,10 +552,10 @@ static inline void Kf_SetFilter2( Kf_Set_t * p )
int i, k, * pPlace;
assert( p->nCuts > 0 );
for ( i = 0; i <= p->nLutSize; i++ )
- Kf_ListForEachCuttP( p, i, pCut0, pPlace )
+ Kf_ListForEachCutP( p, i, pCut0, pPlace )
{
for ( k = 0; k < pCut0->nLeaves; k++ )
- Kf_ListForEachCutt( p, k, pCut1 )
+ Kf_ListForEachCut( p, k, pCut1 )
if ( (pCut0->Sign & pCut1->Sign) == pCut1->Sign && Kf_SetCutIsContainedOrder(pCut0, pCut1) )
{ k = pCut0->nLeaves + 1; p->nCuts--; break; }
if ( k == pCut0->nLeaves + 1 ) // remove pCut0