summaryrefslogtreecommitdiff
path: root/src/lj_jit.h
diff options
context:
space:
mode:
authorMike Pall <mike>2011-02-02 02:29:37 +0100
committerMike Pall <mike>2011-02-02 02:29:37 +0100
commitb613216efc7447dae645d8834e4d6f3185cd1bcc (patch)
tree0859fed377f00ebeada70ba45d02496b7fb4a249 /src/lj_jit.h
parentc539c0cac8f668e66a5ce9e5fd645cb45e3c5063 (diff)
downloadluajit-b613216efc7447dae645d8834e4d6f3185cd1bcc.tar.gz
luajit-b613216efc7447dae645d8834e4d6f3185cd1bcc.tar.bz2
luajit-b613216efc7447dae645d8834e4d6f3185cd1bcc.zip
Add SPLIT pass to split 64 bit IR instructions for 32 bit CPUs.
Add generic HIOP instruction for extra backend functionality. Add support for HIOP to x86 backend. Use POWI for 64 bit integer x^k, too. POWI is lowered to a call by SPLIT or the x64 backend.
Diffstat (limited to 'src/lj_jit.h')
-rw-r--r--src/lj_jit.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lj_jit.h b/src/lj_jit.h
index a8be1a97..38970fc7 100644
--- a/src/lj_jit.h
+++ b/src/lj_jit.h
@@ -240,6 +240,15 @@ enum {
240#define LJ_KSIMD(J, n) \ 240#define LJ_KSIMD(J, n) \
241 ((TValue *)(((intptr_t)&J->ksimd[2*(n)] + 15) & ~(intptr_t)15)) 241 ((TValue *)(((intptr_t)&J->ksimd[2*(n)] + 15) & ~(intptr_t)15))
242 242
243/* Set/reset flag to activate the SPLIT pass for the current trace. */
244#if LJ_32 && LJ_HASFFI
245#define lj_needsplit(J) (J->needsplit = 1)
246#define lj_resetsplit(J) (J->needsplit = 0)
247#else
248#define lj_needsplit(J) UNUSED(J)
249#define lj_resetsplit(J) UNUSED(J)
250#endif
251
243/* Fold state is used to fold instructions on-the-fly. */ 252/* Fold state is used to fold instructions on-the-fly. */
244typedef struct FoldState { 253typedef struct FoldState {
245 IRIns ins; /* Currently emitted instruction. */ 254 IRIns ins; /* Currently emitted instruction. */
@@ -293,6 +302,9 @@ typedef struct jit_State {
293 MSize sizesnapmap; /* Size of temp. snapshot map buffer. */ 302 MSize sizesnapmap; /* Size of temp. snapshot map buffer. */
294 303
295 PostProc postproc; /* Required post-processing after execution. */ 304 PostProc postproc; /* Required post-processing after execution. */
305#if LJ_32 && LJ_HASFFI
306 int needsplit; /* Need SPLIT pass. */
307#endif
296 308
297 GCRef *trace; /* Array of traces. */ 309 GCRef *trace; /* Array of traces. */
298 TraceNo freetrace; /* Start of scan for next free trace. */ 310 TraceNo freetrace; /* Start of scan for next free trace. */