diff options
author | Mike Pall <mike> | 2016-05-21 00:02:45 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2016-05-21 00:02:45 +0200 |
commit | cfa188f1349ba4c843394b53f270cb64635b9805 (patch) | |
tree | e16e643dfa2567fd52506702b79a4b851c3db63e /src/lj_trace.c | |
parent | 1931b38da5a9ea075df73a966630308d3988bb96 (diff) | |
download | luajit-cfa188f1349ba4c843394b53f270cb64635b9805.tar.gz luajit-cfa188f1349ba4c843394b53f270cb64635b9805.tar.bz2 luajit-cfa188f1349ba4c843394b53f270cb64635b9805.zip |
Move common 32/64 bit in-memory FP constants to jit_State.
Prerequisite for immovable IR.
Contributed by Peter Cawley.
Diffstat (limited to 'src/lj_trace.c')
-rw-r--r-- | src/lj_trace.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c index 7970aba6..0d54c0af 100644 --- a/src/lj_trace.c +++ b/src/lj_trace.c | |||
@@ -297,13 +297,35 @@ void lj_trace_initstate(global_State *g) | |||
297 | { | 297 | { |
298 | jit_State *J = G2J(g); | 298 | jit_State *J = G2J(g); |
299 | TValue *tv; | 299 | TValue *tv; |
300 | /* Initialize SIMD constants. */ | 300 | |
301 | /* Initialize aligned SIMD constants. */ | ||
301 | tv = LJ_KSIMD(J, LJ_KSIMD_ABS); | 302 | tv = LJ_KSIMD(J, LJ_KSIMD_ABS); |
302 | tv[0].u64 = U64x(7fffffff,ffffffff); | 303 | tv[0].u64 = U64x(7fffffff,ffffffff); |
303 | tv[1].u64 = U64x(7fffffff,ffffffff); | 304 | tv[1].u64 = U64x(7fffffff,ffffffff); |
304 | tv = LJ_KSIMD(J, LJ_KSIMD_NEG); | 305 | tv = LJ_KSIMD(J, LJ_KSIMD_NEG); |
305 | tv[0].u64 = U64x(80000000,00000000); | 306 | tv[0].u64 = U64x(80000000,00000000); |
306 | tv[1].u64 = U64x(80000000,00000000); | 307 | tv[1].u64 = U64x(80000000,00000000); |
308 | |||
309 | /* Initialize 32/64 bit constants. */ | ||
310 | #if LJ_TARGET_X86ORX64 | ||
311 | J->k64[LJ_K64_TOBIT].u64 = U64x(43380000,00000000); | ||
312 | J->k64[LJ_K64_2P64].u64 = U64x(43f00000,00000000); | ||
313 | J->k64[LJ_K64_M2P64].u64 = U64x(c3f00000,00000000); | ||
314 | #if LJ_32 | ||
315 | J->k64[LJ_K64_M2P64_31].u64 = U64x(c1e00000,00000000); | ||
316 | #endif | ||
317 | J->k32[LJ_K32_M2P64_31] = LJ_64 ? 0xdf800000 : 0xcf000000; | ||
318 | #endif | ||
319 | #if LJ_TARGET_PPC | ||
320 | J->k32[LJ_K32_2P52_2P31] = 0x59800004; | ||
321 | J->k32[LJ_K32_2P52] = 0x59800000; | ||
322 | #endif | ||
323 | #if LJ_TARGET_PPC || LJ_TARGET_MIPS | ||
324 | J->k32[LJ_K32_2P31] = 0x4f000000; | ||
325 | #endif | ||
326 | #if LJ_TARGET_MIPS | ||
327 | J->k64[LJ_K64_2P31].u64 = U64x(41e00000,00000000); | ||
328 | #endif | ||
307 | } | 329 | } |
308 | 330 | ||
309 | /* Free everything associated with the JIT compiler state. */ | 331 | /* Free everything associated with the JIT compiler state. */ |