diff options
author | Mike Pall <mike> | 2011-02-02 02:29:37 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-02-02 02:29:37 +0100 |
commit | b613216efc7447dae645d8834e4d6f3185cd1bcc (patch) | |
tree | 0859fed377f00ebeada70ba45d02496b7fb4a249 /src/lj_jit.h | |
parent | c539c0cac8f668e66a5ce9e5fd645cb45e3c5063 (diff) | |
download | luajit-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.h | 12 |
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. */ |
244 | typedef struct FoldState { | 253 | typedef 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. */ |