diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-08-29 14:41:01 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-08-29 14:41:01 -0700 |
commit | a495163f74ee677bf9199bd5be8118c32f65e66a (patch) | |
tree | 4a92dc7d96fd149d65a3bd2c5dd041ee7aa8c3bf /src/map/if/ifMap.c | |
parent | eec022ea644ce0430d3f7c5259c72f850338f987 (diff) | |
download | abc-a495163f74ee677bf9199bd5be8118c32f65e66a.tar.gz abc-a495163f74ee677bf9199bd5be8118c32f65e66a.tar.bz2 abc-a495163f74ee677bf9199bd5be8118c32f65e66a.zip |
Buf fixes and minor changes to the &if mapper.
Diffstat (limited to 'src/map/if/ifMap.c')
-rw-r--r-- | src/map/if/ifMap.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/map/if/ifMap.c b/src/map/if/ifMap.c index 853e9cb0..5ac85807 100644 --- a/src/map/if/ifMap.c +++ b/src/map/if/ifMap.c @@ -273,7 +273,20 @@ void If_ObjPerformMappingAnd( If_Man_t * p, If_Obj_t * pObj, int Mode, int fPrep p->nCutsUseless[pCut->nLeaves] += pCut->fUseless; p->nCutsCountAll++; p->nCutsCount[pCut->nLeaves]++; - if ( p->pPars->fVerbose && pCut->nLeaves == 5 ) + // skip 5-input cuts, which cannot be decomposed + if ( (p->pPars->fEnableCheck75 || p->pPars->fEnableCheck75u) && pCut->nLeaves == 5 && pCut->nLimit == 5 ) + { + extern int If_CluCheckDecIn( word t, int nVars ); + extern int If_CluCheckDecOut( word t, int nVars ); + unsigned TruthU = *If_CutTruth(pCut); + word Truth = (((word)TruthU << 32) | (word)TruthU); + p->nCuts5++; + if ( If_CluCheckDecIn( Truth, 5 ) || If_CluCheckDecOut( Truth, 5 ) ) + p->nCuts5a++; + else + continue; + } + else if ( p->pPars->fVerbose && pCut->nLeaves == 5 ) { extern int If_CluCheckDecIn( word t, int nVars ); extern int If_CluCheckDecOut( word t, int nVars ); |