aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-02-01 19:28:03 +0100
committerMike Pall <mike>2011-02-01 19:28:03 +0100
commitc539c0cac8f668e66a5ce9e5fd645cb45e3c5063 (patch)
tree51ec52f175d5db13b0b271eb6e9959b845f9c789 /src
parent992bc2caa3d84dc9a6beafe3c52c982e01aaa524 (diff)
downloadluajit-c539c0cac8f668e66a5ce9e5fd645cb45e3c5063.tar.gz
luajit-c539c0cac8f668e66a5ce9e5fd645cb45e3c5063.tar.bz2
luajit-c539c0cac8f668e66a5ce9e5fd645cb45e3c5063.zip
Add SSE3 CPU feature detection.
Diffstat (limited to 'src')
-rw-r--r--src/lib_jit.c1
-rw-r--r--src/lj_jit.h17
2 files changed, 10 insertions, 8 deletions
diff --git a/src/lib_jit.c b/src/lib_jit.c
index 513a1c37..f99418cc 100644
--- a/src/lib_jit.c
+++ b/src/lib_jit.c
@@ -530,6 +530,7 @@ static uint32_t jit_cpudetect(lua_State *L)
530 flags |= ((features[3] >> 15)&1) * JIT_F_CMOV; 530 flags |= ((features[3] >> 15)&1) * JIT_F_CMOV;
531 flags |= ((features[3] >> 26)&1) * JIT_F_SSE2; 531 flags |= ((features[3] >> 26)&1) * JIT_F_SSE2;
532#if LJ_HASJIT 532#if LJ_HASJIT
533 flags |= ((features[2] >> 0)&1) * JIT_F_SSE3;
533 flags |= ((features[2] >> 19)&1) * JIT_F_SSE4_1; 534 flags |= ((features[2] >> 19)&1) * JIT_F_SSE4_1;
534 if (vendor[2] == 0x6c65746e) { /* Intel. */ 535 if (vendor[2] == 0x6c65746e) { /* Intel. */
535 if ((features[0] & 0x0ff00f00) == 0x00000f00) /* P4. */ 536 if ((features[0] & 0x0ff00f00) == 0x00000f00) /* P4. */
diff --git a/src/lj_jit.h b/src/lj_jit.h
index 34f37d02..a8be1a97 100644
--- a/src/lj_jit.h
+++ b/src/lj_jit.h
@@ -14,17 +14,18 @@
14 14
15/* CPU-specific JIT engine flags. */ 15/* CPU-specific JIT engine flags. */
16#if LJ_TARGET_X86ORX64 16#if LJ_TARGET_X86ORX64
17#define JIT_F_CMOV 0x00000100 17#define JIT_F_CMOV 0x00000010
18#define JIT_F_SSE2 0x00000200 18#define JIT_F_SSE2 0x00000020
19#define JIT_F_SSE4_1 0x00000400 19#define JIT_F_SSE3 0x00000040
20#define JIT_F_P4 0x00000800 20#define JIT_F_SSE4_1 0x00000080
21#define JIT_F_PREFER_IMUL 0x00001000 21#define JIT_F_P4 0x00000100
22#define JIT_F_SPLIT_XMM 0x00002000 22#define JIT_F_PREFER_IMUL 0x00000200
23#define JIT_F_LEA_AGU 0x00004000 23#define JIT_F_SPLIT_XMM 0x00000400
24#define JIT_F_LEA_AGU 0x00000800
24 25
25/* Names for the CPU-specific flags. Must match the order above. */ 26/* Names for the CPU-specific flags. Must match the order above. */
26#define JIT_F_CPU_FIRST JIT_F_CMOV 27#define JIT_F_CPU_FIRST JIT_F_CMOV
27#define JIT_F_CPUSTRING "\4CMOV\4SSE2\6SSE4.1\2P4\3AMD\2K8\4ATOM" 28#define JIT_F_CPUSTRING "\4CMOV\4SSE2\4SSE3\6SSE4.1\2P4\3AMD\2K8\4ATOM"
28#else 29#else
29#error "Missing CPU-specific JIT engine flags" 30#error "Missing CPU-specific JIT engine flags"
30#endif 31#endif