diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2014-03-22 19:59:47 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2014-03-22 19:59:47 -0700 |
commit | b46ac51a6fb2cc7455730ebb61bb54089aaad921 (patch) | |
tree | e7b0334a8e37412e325fca69d06dac163cd261b1 /src | |
parent | b5df218dc4c4efc277855e62aabbae363344fbec (diff) | |
download | abc-b46ac51a6fb2cc7455730ebb61bb54089aaad921.tar.gz abc-b46ac51a6fb2cc7455730ebb61bb54089aaad921.tar.bz2 abc-b46ac51a6fb2cc7455730ebb61bb54089aaad921.zip |
Experiments with mapping.
Diffstat (limited to 'src')
-rw-r--r-- | src/aig/gia/giaKf.c | 30 |
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 |