Commit a3a6002b by Alan Mishchenko

Compiler warnings.

parent 1d9d6814
...@@ -34,13 +34,14 @@ ABC_NAMESPACE_IMPL_START ...@@ -34,13 +34,14 @@ ABC_NAMESPACE_IMPL_START
#define BAL_CUT_MAX 8 #define BAL_CUT_MAX 8
#define BAL_SUPER 50 #define BAL_SUPER 50
#define BAL_NO_LEAF 31 #define BAL_NO_LEAF 31
#define BAL_NO_FUNC 134217727 // (1<<27)-1
typedef struct Bal_Cut_t_ Bal_Cut_t; typedef struct Bal_Cut_t_ Bal_Cut_t;
struct Bal_Cut_t_ struct Bal_Cut_t_
{ {
word Sign; // signature word Sign; // signature
int Delay; // delay int Delay; // delay
unsigned iFunc : 27; // function unsigned iFunc : 27; // function (BAL_NO_FUNC)
unsigned nLeaves : 5; // leaf number (Bal_NO_LEAF) unsigned nLeaves : 5; // leaf number (Bal_NO_LEAF)
int pLeaves[BAL_LEAF_MAX]; // leaves int pLeaves[BAL_LEAF_MAX]; // leaves
}; };
...@@ -235,7 +236,7 @@ static inline int Bal_CutMergeOrder( Bal_Cut_t * pCut0, Bal_Cut_t * pCut1, Bal_C ...@@ -235,7 +236,7 @@ static inline int Bal_CutMergeOrder( Bal_Cut_t * pCut0, Bal_Cut_t * pCut1, Bal_C
pC[i] = pC0[i]; pC[i] = pC0[i];
} }
pCut->nLeaves = nLutSize; pCut->nLeaves = nLutSize;
pCut->iFunc = -1; pCut->iFunc = BAL_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign;
pCut->Delay = Abc_MaxInt( pCut0->Delay, pCut1->Delay ); pCut->Delay = Abc_MaxInt( pCut0->Delay, pCut1->Delay );
return 1; return 1;
...@@ -268,7 +269,7 @@ FlushCut0: ...@@ -268,7 +269,7 @@ FlushCut0:
while ( i < nSize0 ) while ( i < nSize0 )
pC[c++] = pC0[i++]; pC[c++] = pC0[i++];
pCut->nLeaves = c; pCut->nLeaves = c;
pCut->iFunc = -1; pCut->iFunc = BAL_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign;
pCut->Delay = Abc_MaxInt( pCut0->Delay, pCut1->Delay ); pCut->Delay = Abc_MaxInt( pCut0->Delay, pCut1->Delay );
return 1; return 1;
...@@ -278,7 +279,7 @@ FlushCut1: ...@@ -278,7 +279,7 @@ FlushCut1:
while ( k < nSize1 ) while ( k < nSize1 )
pC[c++] = pC1[k++]; pC[c++] = pC1[k++];
pCut->nLeaves = c; pCut->nLeaves = c;
pCut->iFunc = -1; pCut->iFunc = BAL_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign;
pCut->Delay = Abc_MaxInt( pCut0->Delay, pCut1->Delay ); pCut->Delay = Abc_MaxInt( pCut0->Delay, pCut1->Delay );
return 1; return 1;
...@@ -303,7 +304,7 @@ static inline int Bal_CutMergeOrderMux( Bal_Cut_t * pCut0, Bal_Cut_t * pCut1, Ba ...@@ -303,7 +304,7 @@ static inline int Bal_CutMergeOrderMux( Bal_Cut_t * pCut0, Bal_Cut_t * pCut1, Ba
if (x2 == xMin) i2++; if (x2 == xMin) i2++;
} }
pCut->nLeaves = c; pCut->nLeaves = c;
pCut->iFunc = -1; pCut->iFunc = BAL_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign | pCut2->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign | pCut2->Sign;
pCut->Delay = Abc_MaxInt( pCut0->Delay, Abc_MaxInt(pCut1->Delay, pCut2->Delay) ); pCut->Delay = Abc_MaxInt( pCut0->Delay, Abc_MaxInt(pCut1->Delay, pCut2->Delay) );
return 1; return 1;
......
...@@ -35,6 +35,7 @@ ABC_NAMESPACE_IMPL_START ...@@ -35,6 +35,7 @@ ABC_NAMESPACE_IMPL_START
#define MF_LOG_PAGE 12 #define MF_LOG_PAGE 12
#define MF_NO_LEAF 31 #define MF_NO_LEAF 31
#define MF_TT_WORDS ((MF_LEAF_MAX > 6) ? 1 << (MF_LEAF_MAX-6) : 1) #define MF_TT_WORDS ((MF_LEAF_MAX > 6) ? 1 << (MF_LEAF_MAX-6) : 1)
#define MF_NO_FUNC 134217727 // (1<<27)-1
typedef struct Mf_Cut_t_ Mf_Cut_t; typedef struct Mf_Cut_t_ Mf_Cut_t;
struct Mf_Cut_t_ struct Mf_Cut_t_
...@@ -42,7 +43,7 @@ struct Mf_Cut_t_ ...@@ -42,7 +43,7 @@ struct Mf_Cut_t_
word Sign; // signature word Sign; // signature
int Delay; // delay int Delay; // delay
float Flow; // flow float Flow; // flow
unsigned iFunc : 27; // function unsigned iFunc : 27; // function (MF_NO_FUNC)
unsigned nLeaves : 5; // leaf number (MF_NO_LEAF) unsigned nLeaves : 5; // leaf number (MF_NO_LEAF)
int pLeaves[MF_LEAF_MAX+1]; // leaves int pLeaves[MF_LEAF_MAX+1]; // leaves
}; };
...@@ -785,7 +786,7 @@ static inline int Mf_CutMergeOrder( Mf_Cut_t * pCut0, Mf_Cut_t * pCut1, Mf_Cut_t ...@@ -785,7 +786,7 @@ static inline int Mf_CutMergeOrder( Mf_Cut_t * pCut0, Mf_Cut_t * pCut1, Mf_Cut_t
pC[i] = pC0[i]; pC[i] = pC0[i];
} }
pCut->nLeaves = nLutSize; pCut->nLeaves = nLutSize;
pCut->iFunc = -1; pCut->iFunc = MF_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign;
return 1; return 1;
} }
...@@ -819,7 +820,7 @@ FlushCut0: ...@@ -819,7 +820,7 @@ FlushCut0:
while ( i < nSize0 ) while ( i < nSize0 )
pC[c++] = pC0[i++]; pC[c++] = pC0[i++];
pCut->nLeaves = c; pCut->nLeaves = c;
pCut->iFunc = -1; pCut->iFunc = MF_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign;
return 1; return 1;
...@@ -828,7 +829,7 @@ FlushCut1: ...@@ -828,7 +829,7 @@ FlushCut1:
while ( k < nSize1 ) while ( k < nSize1 )
pC[c++] = pC1[k++]; pC[c++] = pC1[k++];
pCut->nLeaves = c; pCut->nLeaves = c;
pCut->iFunc = -1; pCut->iFunc = MF_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign;
return 1; return 1;
} }
...@@ -852,7 +853,7 @@ static inline int Mf_CutMergeOrderMux( Mf_Cut_t * pCut0, Mf_Cut_t * pCut1, Mf_Cu ...@@ -852,7 +853,7 @@ static inline int Mf_CutMergeOrderMux( Mf_Cut_t * pCut0, Mf_Cut_t * pCut1, Mf_Cu
if (x2 == xMin) i2++; if (x2 == xMin) i2++;
} }
pCut->nLeaves = c; pCut->nLeaves = c;
pCut->iFunc = -1; pCut->iFunc = MF_NO_FUNC;
pCut->Sign = pCut0->Sign | pCut1->Sign | pCut2->Sign; pCut->Sign = pCut0->Sign | pCut1->Sign | pCut2->Sign;
return 1; return 1;
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "if.h" #include "if.h"
#include "ifCount.h" #include "ifCount.h"
#include "bool/kit/kit.h"
ABC_NAMESPACE_IMPL_START ABC_NAMESPACE_IMPL_START
......
...@@ -79,7 +79,7 @@ If_Man_t * If_ManStart( If_Par_t * pPars ) ...@@ -79,7 +79,7 @@ If_Man_t * If_ManStart( If_Par_t * pPars )
for ( v = 0; v < 6; v++ ) for ( v = 0; v < 6; v++ )
p->vTtIsops[v] = p->vTtIsops[6]; p->vTtIsops[v] = p->vTtIsops[6];
} }
if ( p->pPars->fDelayOpt || pPars->nGateSize > 0 || p->pPars->fDsdBalance ); if ( pPars->fDelayOpt || pPars->nGateSize > 0 || pPars->fDsdBalance )
{ {
p->vCover = Vec_IntAlloc( 0 ); p->vCover = Vec_IntAlloc( 0 );
p->vArray = Vec_IntAlloc( 1000 ); p->vArray = Vec_IntAlloc( 1000 );
......
...@@ -53,6 +53,15 @@ static word s_Truths6Neg[6] = { ...@@ -53,6 +53,15 @@ static word s_Truths6Neg[6] = {
ABC_CONST(0x00000000FFFFFFFF) ABC_CONST(0x00000000FFFFFFFF)
}; };
static word s_TruthXors[6] = {
ABC_CONST(0x0000000000000000),
ABC_CONST(0x6666666666666666),
ABC_CONST(0x6969696969696969),
ABC_CONST(0x6996699669966996),
ABC_CONST(0x6996966969969669),
ABC_CONST(0x6996966996696996)
};
static word s_PMasks[5][3] = { static word s_PMasks[5][3] = {
{ ABC_CONST(0x9999999999999999), ABC_CONST(0x2222222222222222), ABC_CONST(0x4444444444444444) }, { ABC_CONST(0x9999999999999999), ABC_CONST(0x2222222222222222), ABC_CONST(0x4444444444444444) },
{ ABC_CONST(0xC3C3C3C3C3C3C3C3), ABC_CONST(0x0C0C0C0C0C0C0C0C), ABC_CONST(0x3030303030303030) }, { ABC_CONST(0xC3C3C3C3C3C3C3C3), ABC_CONST(0x0C0C0C0C0C0C0C0C), ABC_CONST(0x3030303030303030) },
...@@ -163,6 +172,19 @@ static inline int Abc_TtHexDigitNum( int nVars ) { return nVars <= 2 ? 1 : 1 << ...@@ -163,6 +172,19 @@ static inline int Abc_TtHexDigitNum( int nVars ) { return nVars <= 2 ? 1 : 1 <<
/**Function************************************************************* /**Function*************************************************************
Synopsis [Bit mask.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
static inline word Abc_Tt6Mask( int nBits ) { assert( nBits >= 0 && nBits <= 64 ); return (~(word)0) >> (64-nBits); }
/**Function*************************************************************
Synopsis [] Synopsis []
Description [] Description []
...@@ -949,6 +971,37 @@ static inline int Abc_Tt6SupportAndSize( word t, int nVars, int * pSuppSize ) ...@@ -949,6 +971,37 @@ static inline int Abc_Tt6SupportAndSize( word t, int nVars, int * pSuppSize )
/**Function************************************************************* /**Function*************************************************************
Synopsis [Detecting elementary functions.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
static inline int Abc_TtOnlyOneOne( word t )
{
if ( t == 0 )
return 0;
return (t & (t-1)) == 0;
}
static inline int Gia_ManTtIsAndType( word t, int nVars )
{
return Abc_TtOnlyOneOne( t & Abc_Tt6Mask(1 << nVars) );
}
static inline int Gia_ManTtIsOrType( word t, int nVars )
{
return Abc_TtOnlyOneOne( ~t & Abc_Tt6Mask(1 << nVars) );
}
static inline int Gia_ManTtIsXorType( word t, int nVars )
{
return ((((t & 1) ? ~t : t) ^ s_TruthXors[nVars]) & Abc_Tt6Mask(1 << nVars)) == 0;
}
/**Function*************************************************************
Synopsis [] Synopsis []
Description [] Description []
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment