53 for ( i = 0; i < nLeaves - 1; i++ )
55 if ( pDelays[i] >= pDelays[i+1] )
57 ABC_SWAP(
float, pDelays[i], pDelays[i+1] );
58 ABC_SWAP(
int, pVars[i], pVars[i+1] );
100 int fCompl, truthId, nLeavesNew, PrevSize, RetValue = 0;
112 fCompl = (pTruth0[0] & pTruth1[0] & 1);
127 assert( (pTruth[0] & 1) == 0 );
145 vLevel->nCap ^= (1<<16);
168 int v, Place, fCompl, truthId, nLeavesNew, RetValue = 0;
187 for ( v = 0; v < (int)pCut0->
nLeaves; v++ )
189 for ( v = 0; v < (int)pCut1->
nLeaves; v++ )
197 for ( v = 0; v < (int)pCut1->
nLeaves; v++ )
199 Place = p->
pPerm[1][v];
200 if ( Place == v || Place == -1 )
204 p->
pPerm[1][Place] = Place;
232 for ( v = 0; v < (int)pCut->
nLeaves; v++ )
235 for ( v = 0; v < (int)pCut->
nLeaves; v++ )
266 int i, Num, nEntriesOld, RetValue;
286 for ( v = 0; v < (int)pCut->
nLeaves; v++ )
293 for ( v = 0; v < (int)pCut->
nLeaves; v++ )
297 for ( v = 0; v < (int)pCut->
nLeaves; v++ )
319 for ( i = 0; i < (int)pCut->
nLeaves; i++ )
int nTruth6Words[IF_MAX_FUNC_LUTSIZE+1]
int If_CutComputeTruthPerm(If_Man_t *p, If_Cut_t *pCut, If_Cut_t *pCut0, If_Cut_t *pCut1, int iCutFunc0, int iCutFunc1)
static int Hash_IntManEntryNum(Hash_IntMan_t *p)
static int Abc_TtMinBase(word *pTruth, int *pVars, int nVars, int nVarsAll)
Vec_Wec_t * vTtIsops[IF_MAX_FUNC_LUTSIZE+1]
ABC_NAMESPACE_IMPL_START void If_CutTruthPermute(word *pTruth, int nLeaves, int nVars, int nWords, float *pDelays, int *pVars)
DECLARATIONS ///.
Vec_Mem_t * vTtMem[IF_MAX_FUNC_LUTSIZE+1]
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int If_CutComputeTruth(If_Man_t *p, If_Cut_t *pCut, If_Cut_t *pCut0, If_Cut_t *pCut1, int fCompl0, int fCompl1)
#define If_CutForEachLeaf(p, pCut, pLeaf, i)
int pPerm[3][IF_MAX_LUTSIZE]
static int If_CutLeaveNum(If_Cut_t *pCut)
static Vec_Int_t * Vec_WecPushLevel(Vec_Wec_t *p)
static int Abc_Var2Lit(int Var, int fCompl)
static int Vec_MemEntryNum(Vec_Mem_t *p)
Hash_IntMan_t * vPairHash
static If_Cut_t * If_ObjCutBest(If_Obj_t *pObj)
static abctime Abc_Clock()
static void Vec_StrPush(Vec_Str_t *p, char Entry)
static int Abc_LitNotCond(int Lit, int c)
static int Vec_WecSize(Vec_Wec_t *p)
#define ABC_SWAP(Type, a, b)
static int If_CutTruthIsCompl(If_Cut_t *pCut)
static void Vec_IntGrow(Vec_Int_t *p, int nCapMin)
static word * If_CutTruthW(If_Man_t *p, If_Cut_t *pCut)
static int Abc_LitIsCompl(int Lit)
static unsigned If_ObjCutSignCompute(If_Cut_t *p)
static void Abc_TtCopy(word *pOut, word *pIn, int nWords, int fCompl)
static word * If_CutTruthWR(If_Man_t *p, If_Cut_t *pCut)
#define IF_MAX_LUTSIZE
INCLUDES ///.
int Kit_TruthIsop(unsigned *puTruth, int nVars, Vec_Int_t *vMemory, int fTryBoth)
FUNCTION DEFINITIONS ///.
static int * If_CutLeaves(If_Cut_t *pCut)
static int Vec_IntEntry(Vec_Int_t *p, int i)
unsigned __int64 word
DECLARATIONS ///.
#define ABC_NAMESPACE_IMPL_END
int If_CutComputeTruthPerm_int(If_Man_t *p, If_Cut_t *pCut, If_Cut_t *pCut0, If_Cut_t *pCut1, int iCutFunc0, int iCutFunc1)
static void Abc_TtStretch6(word *pInOut, int nVarS, int nVarB)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Hash_Int2ManInsert(Hash_IntMan_t *p, int iData0, int iData1, int iData2)
static void Abc_TtFlip(word *pTruth, int nWords, int iVar)
#define ABC_NAMESPACE_IMPL_START
static int Vec_StrSize(Vec_Str_t *p)
static int If_CutLeafBit(If_Cut_t *pCut, int i)
static int Vec_IntSize(Vec_Int_t *p)
static void Abc_TtExpand(word *pTruth0, int nVars, int *pCut0, int nCutSize0, int *pCut, int nCutSize)
void If_CutRotatePins(If_Man_t *p, If_Cut_t *pCut)
char pCanonPerm[IF_MAX_LUTSIZE]
static int Abc_Lit2Var(int Lit)
unsigned Abc_TtCanonicize(word *pTruth, int nVars, char *pCanonPerm)
FUNCTION DECLARATIONS ///.
static int Vec_MemHashInsert(Vec_Mem_t *p, word *pEntry)
static void Abc_TtSwapVars(word *pTruth, int nVars, int iVar, int jVar)
static word * Vec_MemReadEntry(Vec_Mem_t *p, int i)
static void Abc_TtAnd(word *pOut, word *pIn1, word *pIn2, int nWords, int fCompl)
static char * Vec_StrEntryP(Vec_Str_t *p, int i)
static void Abc_TtSwapAdjacent(word *pTruth, int nWords, int iVar)