aboutsummaryrefslogtreecommitdiff
path: root/src/config.h
diff options
context:
space:
mode:
authorShinya Sato <shinnya.sato@gmail.com>2022-03-03 21:12:55 +0900
committerShinya Sato <shinnya.sato@gmail.com>2022-03-03 21:12:55 +0900
commitf19a057cfcfd77c5567ff8d536db84a40037f10d (patch)
treef661d617e12dcf695fde6eb3c3cc330354e1ce97 /src/config.h
parentc0efadbf4003cead718d09a887cff05103f3c377 (diff)
downloadinpla-f19a057cfcfd77c5567ff8d536db84a40037f10d.tar.gz
inpla-f19a057cfcfd77c5567ff8d536db84a40037f10d.zip
v0.8.1
Diffstat (limited to '')
-rw-r--r--src/config.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/config.h b/src/config.h
new file mode 100644
index 0000000..5d56177
--- /dev/null
+++ b/src/config.h
@@ -0,0 +1,58 @@
+// Configurations ---------------------------------------------------
+
+/* Heaps ------------------------------------------
+ Choose one among the following three definitions:
+ -------------------------------------------------- */
+#define FLEX_EXPANDABLE_HEAP // Inserted heaps size can be flexible.
+//#define EXPANDABLE_HEAP // Expandable heaps for agents and names
+//#define FIXED_HEAP // The heap size is fixed. (Default)
+
+
+
+/* Optimisation ------------------------------------
+ Comment out definitions if not needed.
+ ------------------------------------------------- */
+
+// Optimisation inspired by Tail Recursion Optimisation
+#define OPTIMISE_IMCODE_TRO
+
+
+// Optimisation of the intermediate codes
+/*
+ * Assign registers as little as possible with expecting cache works.
+ * Copy propagation and Dead code elimination for LOAD are performed.
+ * Reg0 is used as a special one that stores results of comparison.
+ * Some combinations are rewritten.
+ For instance, `SUBI src $1 dest' becomes `DEC src dest'.
+*/
+#define OPTIMISE_IMCODE
+
+
+#ifdef OPTIMISE_IMCODE
+// Furthermore optimisations for codes:
+// the following can work when the OPTIMISE_IMCODE is defined:
+
+
+// Generate virtual machine codes with two-address notation
+#define OPTIMISE_TWO_ADDRESS
+
+#ifdef OPTIMISE_TWO_ADDRESS
+#define OPTIMISE_TWO_ADDRESS_MKAGENT1 // For MKAGENT1
+#define OPTIMISE_TWO_ADDRESS_MKAGENT2 // For MKAGENT2
+#define OPTIMISE_TWO_ADDRESS_MKAGENT3 // For MKAGENT3
+//#define OPTIMISE_TWO_ADDRESS_UNARY // For Unary operator like INC, DEC
+#endif
+
+
+#endif
+// END Optimisation configuration --------------
+
+
+#define COUNT_INTERACTION // Count interaction.
+
+
+
+
+//#define VERBOSE_NODE_USE // Put memory usage of agents and names.
+//#define VERBOSE_HOOP_EXPANSION // Put messages when hoops are expanded.
+//#define VERBOSE_EQSTACK_EXPANSION // Put messages when Eqstacks are expanded.