summaryrefslogtreecommitdiff
path: root/src/lj_trace.c
diff options
context:
space:
mode:
authorMike Pall <mike>2016-05-21 00:02:45 +0200
committerMike Pall <mike>2016-05-21 00:02:45 +0200
commitcfa188f1349ba4c843394b53f270cb64635b9805 (patch)
treee16e643dfa2567fd52506702b79a4b851c3db63e /src/lj_trace.c
parent1931b38da5a9ea075df73a966630308d3988bb96 (diff)
downloadluajit-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.c24
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. */