From a495163f74ee677bf9199bd5be8118c32f65e66a Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Thu, 29 Aug 2013 14:41:01 -0700 Subject: Buf fixes and minor changes to the &if mapper. --- src/map/if/ifMap.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/map/if/ifMap.c') 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 ); -- cgit v1.2.3