diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2021-07-13 19:05:02 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2021-07-13 19:05:02 -0700 |
commit | 3e67d167f5c07315f3d1bb7d8ae6c079cb451ded (patch) | |
tree | 110fa94b95b5c6324ebb823051c8a88efef2e1e2 /src/misc/vec/vecWrd.h | |
parent | be14c397409d5d95c066444f9f19aac7c0d5de0e (diff) | |
download | abc-3e67d167f5c07315f3d1bb7d8ae6c079cb451ded.tar.gz abc-3e67d167f5c07315f3d1bb7d8ae6c079cb451ded.tar.bz2 abc-3e67d167f5c07315f3d1bb7d8ae6c079cb451ded.zip |
Experiments with LUT mapping for small functions.
Diffstat (limited to 'src/misc/vec/vecWrd.h')
-rw-r--r-- | src/misc/vec/vecWrd.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/misc/vec/vecWrd.h b/src/misc/vec/vecWrd.h index b0123453..dd030c1a 100644 --- a/src/misc/vec/vecWrd.h +++ b/src/misc/vec/vecWrd.h @@ -61,6 +61,8 @@ struct Vec_Wrd_t_ for ( i = Start; (i < Stop) && (((Entry) = Vec_WrdEntry(vVec, i)), 1); i++ ) #define Vec_WrdForEachEntryReverse( vVec, pEntry, i ) \ for ( i = Vec_WrdSize(vVec) - 1; (i >= 0) && (((pEntry) = Vec_WrdEntry(vVec, i)), 1); i-- ) +#define Vec_WrdForEachEntryDouble( vVec, Entry1, Entry2, i ) \ + for ( i = 0; (i+1 < Vec_WrdSize(vVec)) && (((Entry1) = Vec_WrdEntry(vVec, i)), 1) && (((Entry2) = Vec_WrdEntry(vVec, i+1)), 1); i += 2 ) //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// @@ -669,6 +671,30 @@ static inline void Vec_WrdPush( Vec_Wrd_t * p, word Entry ) } p->pArray[p->nSize++] = Entry; } +static inline void Vec_WrdPushTwo( Vec_Wrd_t * p, word Entry1, word Entry2 ) +{ + Vec_WrdPush( p, Entry1 ); + Vec_WrdPush( p, Entry2 ); +} +static inline void Vec_WrdPushThree( Vec_Wrd_t * p, word Entry1, word Entry2, word Entry3 ) +{ + Vec_WrdPush( p, Entry1 ); + Vec_WrdPush( p, Entry2 ); + Vec_WrdPush( p, Entry3 ); +} +static inline void Vec_WrdPushFour( Vec_Wrd_t * p, word Entry1, word Entry2, word Entry3, word Entry4 ) +{ + Vec_WrdPush( p, Entry1 ); + Vec_WrdPush( p, Entry2 ); + Vec_WrdPush( p, Entry3 ); + Vec_WrdPush( p, Entry4 ); +} +static inline void Vec_WrdPushArray( Vec_Wrd_t * p, word * pEntries, int nEntries ) +{ + int i; + for ( i = 0; i < nEntries; i++ ) + Vec_WrdPush( p, pEntries[i] ); +} /**Function************************************************************* |