summaryrefslogtreecommitdiffstats
path: root/src/bool/lucky/luckyInt.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bool/lucky/luckyInt.h')
-rw-r--r--src/bool/lucky/luckyInt.h123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/bool/lucky/luckyInt.h b/src/bool/lucky/luckyInt.h
new file mode 100644
index 00000000..f79e30e7
--- /dev/null
+++ b/src/bool/lucky/luckyInt.h
@@ -0,0 +1,123 @@
+/**CFile****************************************************************
+
+ FileName [luckyInt.h]
+
+ SystemName [ABC: Logic synthesis and verification system.]
+
+ PackageName [Semi-canonical form computation package.]
+
+ Synopsis [Internal declarations.]
+
+ Author [Jake]
+
+ Date [Started - August 2012]
+
+***********************************************************************/
+
+#ifndef ABC__bool__lucky__LUCKY_INT_H_
+#define ABC__bool__lucky__LUCKY_INT_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+#include <math.h>
+#include <time.h>
+
+// comment out this line to run Lucky Code outside of ABC
+#define _RUNNING_ABC_
+
+#ifdef _RUNNING_ABC_
+#include "misc/util/abc_global.h"
+#else
+#define ABC_NAMESPACE_HEADER_START
+#define ABC_NAMESPACE_HEADER_END
+#define ABC_NAMESPACE_IMPL_START
+#define ABC_NAMESPACE_IMPL_END
+#endif
+
+
+ABC_NAMESPACE_HEADER_START
+
+typedef unsigned __int64 ABC_UINT64_T;
+//typedef ABC_UINT64_T word;
+
+typedef unsigned __int64 word;
+
+#define bool int
+#define false 0
+#define true 1
+#define inline __inline // compatible with MS VS 6.0
+#define ABC_ALLOC(type, num) ((type *) malloc(sizeof(type) * (num)))
+static word mask1[6] = { 0xAAAAAAAAAAAAAAAA,0xCCCCCCCCCCCCCCCC, 0xF0F0F0F0F0F0F0F0,0xFF00FF00FF00FF00,0xFFFF0000FFFF0000, 0xFFFFFFFF00000000 };
+static word mask0[6] = { 0x5555555555555555,0x3333333333333333, 0x0F0F0F0F0F0F0F0F,0x00FF00FF00FF00FF,0x0000FFFF0000FFFF, 0x00000000FFFFFFFF};
+static word mask[6][2] = {
+ {0x5555555555555555,0xAAAAAAAAAAAAAAAA},
+ {0x3333333333333333,0xCCCCCCCCCCCCCCCC},
+ {0x0F0F0F0F0F0F0F0F,0xF0F0F0F0F0F0F0F0},
+ {0x00FF00FF00FF00FF,0xFF00FF00FF00FF00},
+ {0x0000FFFF0000FFFF,0xFFFF0000FFFF0000},
+ {0x00000000FFFFFFFF,0xFFFFFFFF00000000}
+};
+
+typedef struct
+{
+ int nVars;
+ int nWords;
+ int nFuncs;
+ word ** pFuncs;
+}Abc_TtStore_t;
+
+typedef struct
+{
+ int direction;
+ int position;
+} varInfo;
+
+
+typedef struct
+{
+ varInfo* posArray;
+ int* realArray;
+ int varN;
+ int positionToSwap1;
+ int positionToSwap2;
+} swapInfo;
+
+typedef struct
+{
+ int varN;
+ int* swapArray;
+ int swapCtr;
+ int totalSwaps;
+ int* flipArray;
+ int flipCtr;
+ int totalFlips;
+}permInfo;
+
+static inline void TimePrint( char* Message )
+{
+ static int timeBegin;
+ double time = 1.0*(clock() - timeBegin)/CLOCKS_PER_SEC ;
+ if ( Message != NULL)
+ printf("%s = %f sec.\n", Message, time);
+ timeBegin = clock();
+}
+
+extern inline int memCompare(word* x, word* y, int nVars);
+extern inline int Kit_TruthWordNum_64bit( int nVars );
+extern Abc_TtStore_t * setTtStore(char * pFileInput);
+extern void Abc_TruthStoreFree( Abc_TtStore_t * p );
+extern inline void Kit_TruthChangePhase_64bit( word * pInOut, int nVars, int iVar );
+extern inline void Kit_TruthNot_64bit(word * pIn, int nVars );
+extern inline void Kit_TruthCopy_64bit( word * pOut, word * pIn, int nVars );
+extern inline void Kit_TruthSwapAdjacentVars_64bit( word * pInOut, int nVars, int iVar );
+extern inline int Kit_TruthCountOnes_64bit( word* pIn, int nVars );
+extern void simpleMinimal(word* x, word* pAux,word* minimal, permInfo* pi, int nVars);
+extern permInfo* setPermInfoPtr(int var);
+extern void freePermInfoPtr(permInfo* x);
+extern inline unsigned Kit_TruthSemiCanonicize_Yasha_simple( word* pInOut, int nVars, char * pCanonPerm );
+
+ABC_NAMESPACE_HEADER_END
+
+#endif /* LUCKY_H_ */ \ No newline at end of file