]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Cleanup single-number vs. dual-number mode selection.
authorMike Pall <mike>
Wed, 13 Jul 2011 19:24:00 +0000 (21:24 +0200)
committerMike Pall <mike>
Wed, 13 Jul 2011 19:25:31 +0000 (21:25 +0200)
src/lj_arch.h

index 17b766f880f691653473ba610e9e2f63557e9be4..03da79a66b0c13d822b210e0a336c9170c257ab8 100644 (file)
 #define LJ_TARGET_POSIX                (LUAJIT_OS > LUAJIT_OS_WINDOWS)
 #define LJ_TARGET_DLOPEN       LJ_TARGET_POSIX
 
+#define LJ_NUMMODE_SINGLE      0       /* Single-number mode only. */
+#define LJ_NUMMODE_SINGLE_DUAL 1       /* Default to single-number mode. */
+#define LJ_NUMMODE_DUAL                2       /* Dual-number mode only. */
+#define LJ_NUMMODE_DUAL_SINGLE 3       /* Default to dual-number mode. */
+
 /* Set target architecture properties. */
 #if LUAJIT_TARGET == LUAJIT_ARCH_X86
 
 #define LJ_TARGET_EHRETREG     0
 #define LJ_TARGET_MASKSHIFT    1
 #define LJ_TARGET_MASKROT      1
-#define LJ_ARCH_DUALNUM                1
+#define LJ_ARCH_NUMMODE                LJ_NUMMODE_SINGLE_DUAL
 
 #elif LUAJIT_TARGET == LUAJIT_ARCH_X64
 
 #define LJ_TARGET_JUMPRANGE    31      /* +-2^31 = +-2GB */
 #define LJ_TARGET_MASKSHIFT    1
 #define LJ_TARGET_MASKROT      1
-#define LJ_ARCH_DUALNUM                1
+#define LJ_ARCH_NUMMODE                LJ_NUMMODE_SINGLE_DUAL
 
 #elif LUAJIT_TARGET == LUAJIT_ARCH_ARM
 
 #define LJ_TARGET_MASKSHIFT    0
 #define LJ_TARGET_MASKROT      1
 #define LJ_TARGET_UNIFYROT     2       /* Want only IR_BROR. */
-#define LJ_ARCH_DUALNUM                2
+#define LJ_ARCH_NUMMODE                LJ_NUMMODE_DUAL
 #if LJ_TARGET_OSX
 /* Runtime code generation is restricted on iOS. Complain to Apple, not me. */
 #define LJ_ARCH_NOJIT          1
 #define LJ_TARGET_MASKSHIFT    0
 #define LJ_TARGET_MASKROT      1
 #define LJ_TARGET_UNIFYROT     1       /* Want only IR_BROL. */
-#define LJ_ARCH_DUALNUM                1
+#define LJ_ARCH_NUMMODE                LJ_NUMMODE_SINGLE       /* NYI: dual-num. */
 #define LJ_ARCH_NOFFI          1       /* NYI: comparisons, calls. */
 #define LJ_ARCH_NOJIT          1
 
 #define LJ_TARGET_MASKSHIFT    0
 #define LJ_TARGET_MASKROT      1
 #define LJ_TARGET_UNIFYROT     1       /* Want only IR_BROL. */
-#define LJ_ARCH_DUALNUM                0
+#define LJ_ARCH_NUMMODE                LJ_NUMMODE_SINGLE
 #define LJ_ARCH_NOFFI          1       /* NYI: comparisons, calls. */
 #define LJ_ARCH_NOJIT          1
 
 #endif
 #endif
 
-/* Enable or disable the dual-number VM. */
-#if LJ_ARCH_DUALNUM == 2 || \
-    (defined(LUAJIT_ENABLE_DUALNUM) && LJ_ARCH_DUALNUM == 1)
+/* Enable or disable the dual-number mode for the VM. */
+#if LJ_ARCH_NUMMODE == LJ_NUMMODE_DUAL || \
+    (LJ_ARCH_NUMMODE == LJ_NUMMODE_DUAL_SINGLE && LUAJIT_NUMMODE != 1) || \
+    (LJ_ARCH_NUMMODE == LJ_NUMMODE_SINGLE_DUAL && LUAJIT_NUMMODE == 2)
 #define LJ_DUALNUM             1
 #else
 #define LJ_DUALNUM             0