34static word s_Truth6[6] = {
43static inline word * Gla_ObjTruthElem(
Gia_Man_t *
p,
int i ) {
return (
word *)Vec_PtrEntry(
p->vTtInputs, i ); }
44static inline word * Gla_ObjTruthNodeId(
Gia_Man_t *
p,
int Id ) {
return Vec_WrdArray(
p->vTtMemory) +
p->nTtWords * Id; }
45static inline word * Gla_ObjTruthNode(
Gia_Man_t *
p,
Gia_Obj_t * pObj ) {
return Vec_WrdArray(
p->vTtMemory) +
p->nTtWords * Gia_ObjNum(
p, pObj); }
46static inline word * Gla_ObjTruthFree1(
Gia_Man_t *
p ) {
return Vec_WrdArray(
p->vTtMemory) + Vec_WrdSize(
p->vTtMemory) -
p->nTtWords * 1; }
47static inline word * Gla_ObjTruthFree2(
Gia_Man_t *
p ) {
return Vec_WrdArray(
p->vTtMemory) + Vec_WrdSize(
p->vTtMemory) -
p->nTtWords * 2; }
48static inline word * Gla_ObjTruthConst0(
Gia_Man_t *
p,
word * pDst ) {
int w;
for ( w = 0; w <
p->nTtWords; w++ ) pDst[w] = 0;
return pDst; }
49static inline word * Gla_ObjTruthDup(
Gia_Man_t *
p,
word * pDst,
word * pSrc,
int c ) {
int w;
for ( w = 0; w <
p->nTtWords; w++ ) pDst[w] = c ? ~pSrc[w] : pSrc[w];
return pDst; }
68 word Truth0, Truth1, Truth;
70 if ( Gia_ObjIsConst0(pObj) )
72 if ( Gia_ObjIsCi(pObj) )
73 return s_Truths6[Gia_ObjCioId(pObj)];
76 Truth0 = Gia_ObjFaninC0(pObj) ? ~Truth0 : Truth0;
77 Truth1 = Gia_ObjFaninC1(pObj) ? ~Truth1 : Truth1;
78 Truth = Gia_ObjIsXor(pObj) ? Truth0 ^ Truth1 : Truth0 & Truth1;
85 return Gia_ObjFaninC0(pObj) ? ~Truth : Truth;
90 word Truth0, Truth1, Truth;
92 if ( Gia_ObjIsConst0(pObj) )
94 if ( Gia_ObjIsCi(pObj) )
95 return s_Truths6[Vec_IntEntry(vMap, Gia_ObjCioId(pObj))];
98 Truth0 = Gia_ObjFaninC0(pObj) ? ~Truth0 : Truth0;
99 Truth1 = Gia_ObjFaninC1(pObj) ? ~Truth1 : Truth1;
100 Truth = Gia_ObjIsXor(pObj) ? Truth0 ^ Truth1 : Truth0 & Truth1;
107 return Gia_ObjFaninC0(pObj) ? ~Truth : Truth;
131 if ( Abc_Tt5HasVar( Truth,
Var ) )
140 return Gia_ManAppendMux(
p, pVarLits[
Var], Lit1, Lit0 );
164 if ( Abc_Tt6HasVar( Truth,
Var ) )
173 return Gia_ManAppendMux(
p, pVarLits[
Var], Lit1, Lit0 );
178 word Truth, TruthNew;
179 Vec_Int_t * vMap = Vec_IntStartFull( Gia_ManCiNum(
p) );
181 int nCos = Gia_ManCoNum(
p), Count = 0;
182 int i, k, Id, ObjId, iLitNew;
187 if ( Vec_IntSize(vSupp) <= Size && i < nCos )
192 int CioId = Gia_ObjCioId(Gia_ManObj(
p, ObjId));
193 Vec_IntWriteEntry( vMap, CioId, k );
194 pVarLits[k] = Abc_Var2Lit( ObjId, 0 );
198 iLitNew =
Gia_Truth5ToGia(
p, pVarLits, Vec_IntSize(vSupp), (
unsigned)Truth, 1 );
201 Gia_ManAppendCo(
p, iLitNew );
205 int CioId = Gia_ObjCioId(Gia_ManObj(
p, ObjId));
206 Vec_IntWriteEntry( vMap, CioId, -1 );
208 if ( Truth != TruthNew )
209 printf(
"Error for output %d.\n", i );
215 printf(
"Finished processing %d outputs.\n", Count );
216 Vec_IntFree( vSupp );
235 if ( Gia_ObjIsTravIdCurrentId(
p, iNode) )
236 return Vec_WrdEntry(vTruths, iNode);
237 Gia_ObjSetTravIdCurrentId(
p, iNode);
238 pObj = Gia_ManObj(
p, iNode );
239 assert( Gia_ObjIsAnd(pObj) );
242 if ( Gia_ObjFaninC0(pObj) )
244 if ( Gia_ObjFaninC1(pObj) )
246 Vec_WrdWriteEntry( vTruths, iNode, Truth0 & Truth1 );
247 return Truth0 & Truth1;
252 assert( Gia_ObjIsLut(
p, iObj) );
256 Vec_WrdWriteEntry( vTruths, iFan, s_Truths6[k] );
257 Gia_ObjSetTravIdCurrentId(
p, iFan );
275 word uTruth0, uTruth1;
277 if ( Gia_ObjIsTravIdCurrentId(
p, iObj) )
279 Gia_ObjSetTravIdCurrentId(
p, iObj);
280 assert( Gia_ObjIsAnd(pObj) );
283 uTruth0 = Vec_WrdEntry( vTemp, Gia_ObjFaninId0p(
p, pObj) );
284 uTruth0 = Gia_ObjFaninC0(pObj) ? ~uTruth0 : uTruth0;
285 uTruth1 = Vec_WrdEntry( vTemp, Gia_ObjFaninId1p(
p, pObj) );
286 uTruth1 = Gia_ObjFaninC1(pObj) ? ~uTruth1 : uTruth1;
287 Vec_WrdWriteEntry( vTemp, iObj, uTruth0 & uTruth1 );
292 assert( Vec_WrdSize(vTemp) == Gia_ManObjNum(
p) );
293 assert( Gia_ObjIsLut(
p, iObj) );
297 Gia_ObjSetTravIdCurrentId(
p, Fanin );
298 Vec_WrdWriteEntry( vTemp, Fanin, s_Truth6[i] );
302 return Vec_WrdEntry( vTemp, iObj );
319 assert( Vec_WrdSize(vTemp) == Gia_ManObjNum(
p) );
320 assert( Vec_IntSize(vSupp) <= 6 );
324 Gia_ObjSetTravIdCurrentId(
p, Fanin );
325 Vec_WrdWriteEntry( vTemp, Fanin, s_Truth6[i] );
328 return Vec_WrdEntry( vTemp, iObj );
333 if ( Gia_ObjIsTravIdCurrentId(
p, iObj) )
335 Gia_ObjSetTravIdCurrentId(
p, iObj);
336 if ( Gia_ObjIsCi(pObj) )
338 Vec_IntPushOrder( vSupp, iObj );
341 assert( Gia_ObjIsAnd(pObj) );
347 int iObj = Abc_Lit2Var(iLit);
348 Vec_IntClear( vSupp );
349 if ( !iObj )
return Abc_LitIsCompl(iLit) ? ~(
word)0 : (
word)0;
352 if ( Vec_IntSize(vSupp) > 6 )
355 return Abc_LitIsCompl(iLit) ? ~Vec_WrdEntry(vTemp, iObj) : Vec_WrdEntry(vTemp, iObj);
371 word uTruth0, uTruth1;
372 if ( Gia_ObjIsTravIdCurrent(
p, pObj) )
374 Gia_ObjSetTravIdCurrent(
p, pObj);
376 assert( Gia_ObjIsAnd(pObj) );
379 uTruth0 = Vec_WrdEntry( vTruths, Gia_ObjFanin0(pObj)->Value );
380 uTruth0 = Gia_ObjFaninC0(pObj) ? ~uTruth0 : uTruth0;
381 uTruth1 = Vec_WrdEntry( vTruths, Gia_ObjFanin1(pObj)->Value );
382 uTruth1 = Gia_ObjFaninC1(pObj) ? ~uTruth1 : uTruth1;
383 pObj->
Value = Vec_WrdSize(vTruths);
384 Vec_WrdPush( vTruths, uTruth0 & uTruth1 );
390 assert( Vec_IntSize(vSupp) <= 6 );
391 assert( Gia_ObjIsAnd(pObj) );
393 Vec_WrdClear( vTruths );
398 pLeaf->
Value = Vec_WrdSize(vTruths);
399 Vec_WrdPush( vTruths, s_Truth6[i] );
400 Gia_ObjSetTravIdCurrent(
p, pLeaf);
403 return Vec_WrdEntryLast( vTruths );
419 if ( !Gia_ObjIsAnd(pObj) )
426 Gia_ObjSetNum(
p, pObj, Vec_IntSize(
p->vTtNodes) );
427 Vec_IntPush(
p->vTtNodes, Gia_ObjId(
p, pObj) );
431 Vec_IntClear(
p->vTtNodes );
450 word * pTruth, * pTruthL, * pTruth0, * pTruth1;
452 if (
p->vTtMemory == NULL )
454 p->nTtVars = Gia_ManPiNum(
p );
455 p->nTtWords = Abc_Truth6WordNum(
p->nTtVars );
456 p->vTtNums = Vec_IntStart( Gia_ManObjNum(
p) + 1000 );
457 p->vTtNodes = Vec_IntAlloc( 256 );
458 p->vTtInputs = Vec_PtrAllocTruthTables( Abc_MaxInt(6,
p->nTtVars) );
459 p->vTtMemory = Vec_WrdStart(
p->nTtWords * 256 );
465 assert(
p->nTtVars == Gia_ManPiNum(
p) );
468 if ( Vec_IntSize(
p->vTtNums) < Gia_ManObjNum(
p) )
469 Vec_IntFillExtra(
p->vTtNums, Gia_ManObjNum(
p), 0 );
471 pRoot = Gia_ObjIsCo(pObj) ? Gia_ObjFanin0(pObj) : pObj;
474 if ( Vec_WrdSize(
p->vTtMemory) <
p->nTtWords * (Vec_IntSize(
p->vTtNodes) + 2) )
475 Vec_WrdFillExtra(
p->vTtMemory,
p->nTtWords * (Vec_IntSize(
p->vTtNodes) + 2), 0 );
480 pTruth = Gla_ObjTruthNode(
p, pTemp);
481 pTruthL = pTruth +
p->nTtWords;
482 pTruth0 = Gia_ObjIsAnd(Gia_ObjFanin0(pTemp)) ? Gla_ObjTruthNode(
p, Gia_ObjFanin0(pTemp)) : Gla_ObjTruthElem(
p, Gia_ObjCioId(Gia_ObjFanin0(pTemp)) );
483 pTruth1 = Gia_ObjIsAnd(Gia_ObjFanin1(pTemp)) ? Gla_ObjTruthNode(
p, Gia_ObjFanin1(pTemp)) : Gla_ObjTruthElem(
p, Gia_ObjCioId(Gia_ObjFanin1(pTemp)) );
484 if ( Gia_ObjFaninC0(pTemp) )
486 if ( Gia_ObjFaninC1(pTemp) )
487 while ( pTruth < pTruthL )
488 *pTruth++ = ~*pTruth0++ & ~*pTruth1++;
490 while ( pTruth < pTruthL )
491 *pTruth++ = ~*pTruth0++ & *pTruth1++;
495 if ( Gia_ObjFaninC1(pTemp) )
496 while ( pTruth < pTruthL )
497 *pTruth++ = *pTruth0++ & ~*pTruth1++;
499 while ( pTruth < pTruthL )
500 *pTruth++ = *pTruth0++ & *pTruth1++;
504 if ( Gia_ObjIsConst0(pRoot) )
505 pTruth = Gla_ObjTruthConst0(
p, Gla_ObjTruthFree1(
p) );
506 else if ( Gia_ObjIsPi(
p, pRoot) )
507 pTruth = Gla_ObjTruthElem(
p, Gia_ObjCioId(pRoot) );
508 else if ( Gia_ObjIsAnd(pRoot) )
509 pTruth = Gla_ObjTruthNode(
p, pRoot );
512 return Gla_ObjTruthDup(
p, Gla_ObjTruthFree2(
p), pTruth, Gia_ObjIsCo(pObj) && Gia_ObjFaninC0(pObj) );
537 Abc_PrintTime( 1,
"Time", Abc_Clock() - clk );
554 assert(
p->vTtMemory == NULL );
555 p->nTtVars = nVarsMax;
556 p->nTtWords = Abc_Truth6WordNum(
p->nTtVars );
557 p->vTtNodes = Vec_IntAlloc( 256 );
558 p->vTtInputs = Vec_PtrAllocTruthTables( Abc_MaxInt(6,
p->nTtVars) );
559 p->vTtMemory = Vec_WrdStart(
p->nTtWords * 64 );
560 p->vTtNums = Vec_IntAlloc( Gia_ManObjNum(
p) + 1000 );
562 if ( nVarsMax >= 6 ) {
563 word * pTruth;
int i;
565 Abc_TtFlipVar5( pTruth, nVarsMax );
572 Vec_IntFreeP( &
p->vTtNums );
573 Vec_IntFreeP( &
p->vTtNodes );
574 Vec_PtrFreeP( &
p->vTtInputs );
575 Vec_WrdFreeP( &
p->vTtMemory );
591 if ( Gia_ObjHasNumId(
p, iObj) )
593 assert( Gia_ObjIsAnd(Gia_ManObj(
p, iObj)) );
596 Gia_ObjSetNumId(
p, iObj, Vec_IntSize(
p->vTtNodes) );
597 Vec_IntPush(
p->vTtNodes, iObj );
602 assert( !Gia_ObjHasNumId(
p, iRoot) );
603 assert( Gia_ObjIsAnd(Gia_ManObj(
p, iRoot)) );
606 if ( Gia_ObjHasNumId(
p, iObj) )
608 assert( !Gia_ObjHasNumId(
p, iObj) );
609 Gia_ObjSetNumId(
p, iObj, -i );
611 assert( !Gia_ObjHasNumId(
p, iRoot) );
612 Vec_IntClear(
p->vTtNodes );
613 Vec_IntPush(
p->vTtNodes, -1 );
631 word * pTruth, * pTruthL, * pTruth0, * pTruth1;
632 int i, iObj, Id0, Id1, Index = Vec_IntFind(vLeaves, Gia_ObjId(
p, pRoot));
633 assert(
p->vTtMemory != NULL );
634 assert( Vec_IntSize(vLeaves) <=
p->nTtVars );
636 return Gla_ObjTruthElem(
p, Index );
637 if ( Gia_ObjIsConst0(pRoot) )
639 if ( Vec_WrdSize(
p->vTtMemory) <
p->nTtWords )
640 Vec_WrdFillExtra(
p->vTtMemory,
p->nTtWords, 0 );
641 return Gla_ObjTruthConst0(
p, Gla_ObjTruthFree1(
p) );
643 assert( Gia_ObjIsAnd(pRoot) );
645 if ( Vec_IntSize(
p->vTtNums) < Gia_ManObjNum(
p) )
650 if ( Vec_WrdSize(
p->vTtMemory) <
p->nTtWords * (Vec_IntSize(
p->vTtNodes) + 2) )
651 Vec_WrdFillExtra(
p->vTtMemory,
p->nTtWords * (Vec_IntSize(
p->vTtNodes) + 2), 0 );
655 assert( i == Gia_ObjNumId(
p, iObj) );
656 pTemp = Gia_ManObj(
p, iObj );
657 pTruth = Gla_ObjTruthNodeId(
p, i );
658 pTruthL = pTruth +
p->nTtWords;
659 Id0 = Gia_ObjNumId(
p, Gia_ObjFaninId0(pTemp, iObj) );
660 Id1 = Gia_ObjNumId(
p, Gia_ObjFaninId1(pTemp, iObj) );
661 pTruth0 = (Id0 > 0) ? Gla_ObjTruthNodeId(
p, Id0) : Gla_ObjTruthElem(
p, -Id0);
662 pTruth1 = (Id1 > 0) ? Gla_ObjTruthNodeId(
p, Id1) : Gla_ObjTruthElem(
p, -Id1);
663 if ( Gia_ObjFaninC0(pTemp) )
665 if ( Gia_ObjFaninC1(pTemp) )
666 while ( pTruth < pTruthL )
667 *pTruth++ = ~*pTruth0++ & ~*pTruth1++;
669 while ( pTruth < pTruthL )
670 *pTruth++ = ~*pTruth0++ & *pTruth1++;
674 if ( Gia_ObjFaninC1(pTemp) )
675 while ( pTruth < pTruthL )
676 *pTruth++ = *pTruth0++ & ~*pTruth1++;
678 while ( pTruth < pTruthL )
679 *pTruth++ = *pTruth0++ & *pTruth1++;
682 pTruth = Gla_ObjTruthNode(
p, pRoot );
685 Gia_ObjResetNumId(
p, iObj );
687 Gia_ObjResetNumId(
p, iObj );
705 int i, iObj, uCanonPhase, nVars, lastId, truthId;
706 int IndexCon = -1, IndexVar = -1;
707 Vec_Wec_t * vPosEquivs = Vec_WecAlloc( 100 );
712 Vec_Int_t * vLeaves = Vec_IntAlloc( 16 );
715 for ( i = 0; i < 17; i++ )
717 vTtMem[i] = Vec_MemAlloc( Abc_TtWordNum(i), 10 );
718 Vec_MemHashAlloc( vTtMem[i], 1000 );
719 vTt2Class[i] = Vec_IntStartFull( Gia_ManCoNum(
p)+1 );
724 iObj = Gia_ObjId(
p, pObj);
726 if ( Vec_IntSize(vLeaves) > 16 )
728 Vec_IntPush( Vec_WecPushLevel(vPosEquivs), i );
731 pObj = Gia_ObjFanin0(pObj);
732 if ( Gia_ObjIsConst0(pObj) )
734 if ( IndexCon == -1 )
736 IndexCon = Vec_WecSize(vPosEquivs);
737 Vec_WecPushLevel(vPosEquivs);
739 Vec_WecPush( vPosEquivs, IndexCon, i );
742 if ( Gia_ObjIsCi(pObj) )
744 if ( IndexVar == -1 )
746 IndexVar = Vec_WecSize(vPosEquivs);
747 Vec_WecPushLevel(vPosEquivs);
749 Vec_WecPush( vPosEquivs, IndexVar, i );
752 assert( Gia_ObjIsAnd(pObj) );
754 Abc_TtMinimumBase( pTruth, NULL, Vec_IntSize(vLeaves), &nVars );
757 if ( IndexCon == -1 )
759 IndexCon = Vec_WecSize(vPosEquivs);
760 Vec_WecPushLevel(vPosEquivs);
762 Vec_WecPush( vPosEquivs, IndexCon, i );
767 if ( IndexVar == -1 )
769 IndexVar = Vec_WecSize(vPosEquivs);
770 Vec_WecPushLevel(vPosEquivs);
772 Vec_WecPush( vPosEquivs, IndexVar, i );
776 lastId = Vec_MemEntryNum( vTtMem[nVars] );
777 truthId = Vec_MemHashInsert( vTtMem[nVars], pTruth );
778 if ( lastId != Vec_MemEntryNum( vTtMem[nVars] ) )
780 assert( Vec_IntEntry(vTt2Class[nVars], truthId) == -1 );
781 Vec_IntWriteEntry( vTt2Class[nVars], truthId, Vec_WecSize(vPosEquivs) );
782 Vec_WecPushLevel(vPosEquivs);
784 assert( Vec_IntEntry(vTt2Class[nVars], truthId) >= 0 );
785 Vec_WecPush( vPosEquivs, Vec_IntEntry(vTt2Class[nVars], truthId), i );
788 Vec_IntFree( vLeaves );
789 for ( i = 0; i < 17; i++ )
791 Vec_MemHashFree( vTtMem[i] );
792 Vec_MemFree( vTtMem[i] );
793 Vec_IntFree( vTt2Class[i] );
797 vFirsts = Vec_WecCollectFirsts( vPosEquivs );
798 pNew =
Gia_ManDupCones(
p, Vec_IntArray(vFirsts), Vec_IntSize(vFirsts), 0 );
799 Vec_IntFree( vFirsts );
803 printf(
"Nontrivial classes:\n" );
804 Vec_WecPrint( vPosEquivs, 1 );
807 *pvPosEquivs = Vec_WecConvertToVecPtr( vPosEquivs );
808 Vec_WecFree( vPosEquivs );
#define ABC_INFINITY
MACRO DEFINITIONS ///.
#define ABC_CONST(number)
PARAMETERS ///.
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
unsigned Abc_TtCanonicize(word *pTruth, int nVars, char *pCanonPerm)
FUNCTION DECLARATIONS ///.
void Gia_ObjComputeTruth6CisSupport_rec(Gia_Man_t *p, int iObj, Vec_Int_t *vSupp)
word Gia_LutComputeTruth6Map_rec(Gia_Man_t *p, int iObj, Vec_Int_t *vMap)
word Gia_ObjComputeTruthTable6(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vSupp, Vec_Wrd_t *vTruths)
word Gia_ObjComputeTruth6(Gia_Man_t *p, int iObj, Vec_Int_t *vSupp, Vec_Wrd_t *vTemp)
word Gia_LutComputeTruth6Simple(Gia_Man_t *p, int iPo)
word Gia_LutComputeTruth6Simple_rec(Gia_Man_t *p, int iObj)
FUNCTION DEFINITIONS ///.
int Gia_Truth5ToGia(Gia_Man_t *p, int *pVarLits, int nVars, unsigned Truth, int fHash)
void Gia_ObjCollectInternal_rec(Gia_Man_t *p, Gia_Obj_t *pObj)
word Gia_LutComputeTruth6(Gia_Man_t *p, int iObj, Vec_Wrd_t *vTruths)
void Gia_Truth6ToGiaTest(Gia_Man_t *p)
word Gia_LutComputeTruth6Map(Gia_Man_t *p, int iPo, Vec_Int_t *vMap)
void Gia_ObjComputeTruthTableStart(Gia_Man_t *p, int nVarsMax)
void Gia_ObjComputeTruthTable6_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Wrd_t *vTruths)
word * Gia_ObjComputeTruthTableCut(Gia_Man_t *p, Gia_Obj_t *pRoot, Vec_Int_t *vLeaves)
void Gia_ObjComputeTruthTable6Lut_rec(Gia_Man_t *p, int iObj, Vec_Wrd_t *vTemp)
void Gia_ObjCollectInternalCut_rec(Gia_Man_t *p, int iObj)
void Gia_ObjComputeTruthTableStop(Gia_Man_t *p)
word Gia_ObjComputeTruth6Cis(Gia_Man_t *p, int iLit, Vec_Int_t *vSupp, Vec_Wrd_t *vTemp)
void Gia_ObjCollectInternal(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ObjCollectInternalCut(Gia_Man_t *p, int iRoot, Vec_Int_t *vLeaves)
int Gia_Truth6ToGia(Gia_Man_t *p, int *pVarLits, int nVars, word Truth, int fHash)
void Gia_ObjComputeTruthTableTest(Gia_Man_t *p)
word * Gia_ObjComputeTruthTable(Gia_Man_t *p, Gia_Obj_t *pObj)
word Gia_ObjComputeTruthTable6Lut(Gia_Man_t *p, int iObj, Vec_Wrd_t *vTemp)
word Gia_LutComputeTruth6_rec(Gia_Man_t *p, int iNode, Vec_Wrd_t *vTruths)
Gia_Man_t * Gia_ManIsoNpnReduce(Gia_Man_t *p, Vec_Ptr_t **pvPosEquivs, int fVerbose)
#define Gia_ManForEachPo(p, pObj, i)
#define Gia_ManForEachCoId(p, Id, i)
void Gia_ManHashAlloc(Gia_Man_t *p)
struct Gia_Obj_t_ Gia_Obj_t
#define Gia_LutForEachFanin(p, i, iFan, k)
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
int Gia_ManHashMux(Gia_Man_t *p, int iCtrl, int iData1, int iData0)
Gia_Man_t * Gia_ManDupCones(Gia_Man_t *p, int *pPos, int nPos, int fTrimPis)
void Gia_ManIncrementTravId(Gia_Man_t *p)
void Gia_ManHashStop(Gia_Man_t *p)
void Gia_ManCollectCis(Gia_Man_t *p, int *pNodes, int nNodes, Vec_Int_t *vSupp)
unsigned __int64 word
DECLARATIONS ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Mem_t_ Vec_Mem_t
DECLARATIONS ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.