mirror of
https://github.com/YosysHQ/abc.git
synced 2026-09-05 08:51:56 +02:00
Preprocessing for multi-output PLA tables.
This commit is contained in:
@@ -254,6 +254,7 @@ static inline int Abc_Base10Log( unsigned n ) { int r; if ( n <
|
||||
static inline int Abc_Base16Log( unsigned n ) { int r; if ( n < 2 ) return n; for ( r = 0, n--; n; n /= 16, r++ ) {}; return r; }
|
||||
static inline char * Abc_UtilStrsav( char * s ) { return s ? strcpy(ABC_ALLOC(char, strlen(s)+1), s) : NULL; }
|
||||
static inline int Abc_BitWordNum( int nBits ) { return (nBits>>5) + ((nBits&31) > 0); }
|
||||
static inline int Abc_Bit6WordNum( int nBits ) { return (nBits>>6) + ((nBits&63) > 0); }
|
||||
static inline int Abc_TruthWordNum( int nVars ) { return nVars <= 5 ? 1 : (1 << (nVars - 5)); }
|
||||
static inline int Abc_Truth6WordNum( int nVars ) { return nVars <= 6 ? 1 : (1 << (nVars - 6)); }
|
||||
static inline int Abc_InfoHasBit( unsigned * p, int i ) { return (p[(i)>>5] & (1<<((i) & 31))) > 0; }
|
||||
|
||||
@@ -150,11 +150,21 @@ static inline int Abc_TtGetBit( word * p, int i ) { return (int)(p[i
|
||||
static inline void Abc_TtSetBit( word * p, int i ) { p[i>>6] |= (((word)1)<<(i & 63)); }
|
||||
static inline void Abc_TtXorBit( word * p, int i ) { p[i>>6] ^= (((word)1)<<(i & 63)); }
|
||||
|
||||
// read/write k-th digit d of a quaternary number:
|
||||
static inline int Abc_TtGetQua( word * p, int k ) { return (int)(p[k>>5] >> ((k<<1) & 63)) & 3; }
|
||||
static inline void Abc_TtSetQua( word * p, int k, int d ) { p[k>>5] |= (((word)d)<<((k<<1) & 63)); }
|
||||
static inline void Abc_TtXorQua( word * p, int k, int d ) { p[k>>5] ^= (((word)d)<<((k<<1) & 63)); }
|
||||
|
||||
// read/write k-th digit d of a hexadecimal number:
|
||||
static inline int Abc_TtGetHex( word * p, int k ) { return (int)(p[k>>4] >> ((k<<2) & 63)) & 15; }
|
||||
static inline void Abc_TtSetHex( word * p, int k, int d ) { p[k>>4] |= (((word)d)<<((k<<2) & 63)); }
|
||||
static inline void Abc_TtXorHex( word * p, int k, int d ) { p[k>>4] ^= (((word)d)<<((k<<2) & 63)); }
|
||||
|
||||
// read/write k-th digit d of a 256-base number:
|
||||
static inline int Abc_TtGet256( word * p, int k ) { return (int)(p[k>>3] >> ((k<<3) & 63)) & 255; }
|
||||
static inline void Abc_TtSet256( word * p, int k, int d ) { p[k>>3] |= (((word)d)<<((k<<3) & 63)); }
|
||||
static inline void Abc_TtXor256( word * p, int k, int d ) { p[k>>3] ^= (((word)d)<<((k<<3) & 63)); }
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
@@ -274,6 +284,14 @@ static inline int Abc_TtEqual( word * pIn1, word * pIn2, int nWords )
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
static inline int Abc_TtImply( word * pIn1, word * pIn2, int nWords )
|
||||
{
|
||||
int w;
|
||||
for ( w = 0; w < nWords; w++ )
|
||||
if ( (pIn1[w] & pIn2[w]) != pIn1[w] )
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
static inline int Abc_TtCompare( word * pIn1, word * pIn2, int nWords )
|
||||
{
|
||||
int w;
|
||||
|
||||
Reference in New Issue
Block a user