Move common 32/64 bit in-memory FP constants to jit_State.
Prerequisite for immovable IR. Contributed by Peter Cawley.
This commit is contained in:
@@ -297,13 +297,35 @@ void lj_trace_initstate(global_State *g)
|
||||
{
|
||||
jit_State *J = G2J(g);
|
||||
TValue *tv;
|
||||
/* Initialize SIMD constants. */
|
||||
|
||||
/* Initialize aligned SIMD constants. */
|
||||
tv = LJ_KSIMD(J, LJ_KSIMD_ABS);
|
||||
tv[0].u64 = U64x(7fffffff,ffffffff);
|
||||
tv[1].u64 = U64x(7fffffff,ffffffff);
|
||||
tv = LJ_KSIMD(J, LJ_KSIMD_NEG);
|
||||
tv[0].u64 = U64x(80000000,00000000);
|
||||
tv[1].u64 = U64x(80000000,00000000);
|
||||
|
||||
/* Initialize 32/64 bit constants. */
|
||||
#if LJ_TARGET_X86ORX64
|
||||
J->k64[LJ_K64_TOBIT].u64 = U64x(43380000,00000000);
|
||||
J->k64[LJ_K64_2P64].u64 = U64x(43f00000,00000000);
|
||||
J->k64[LJ_K64_M2P64].u64 = U64x(c3f00000,00000000);
|
||||
#if LJ_32
|
||||
J->k64[LJ_K64_M2P64_31].u64 = U64x(c1e00000,00000000);
|
||||
#endif
|
||||
J->k32[LJ_K32_M2P64_31] = LJ_64 ? 0xdf800000 : 0xcf000000;
|
||||
#endif
|
||||
#if LJ_TARGET_PPC
|
||||
J->k32[LJ_K32_2P52_2P31] = 0x59800004;
|
||||
J->k32[LJ_K32_2P52] = 0x59800000;
|
||||
#endif
|
||||
#if LJ_TARGET_PPC || LJ_TARGET_MIPS
|
||||
J->k32[LJ_K32_2P31] = 0x4f000000;
|
||||
#endif
|
||||
#if LJ_TARGET_MIPS
|
||||
J->k64[LJ_K64_2P31].u64 = U64x(41e00000,00000000);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Free everything associated with the JIT compiler state. */
|
||||
|
||||
Reference in New Issue
Block a user