diff options
author | Mike Pall <mike> | 2011-02-01 19:28:03 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-02-01 19:28:03 +0100 |
commit | c539c0cac8f668e66a5ce9e5fd645cb45e3c5063 (patch) | |
tree | 51ec52f175d5db13b0b271eb6e9959b845f9c789 /src | |
parent | 992bc2caa3d84dc9a6beafe3c52c982e01aaa524 (diff) | |
download | luajit-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.c | 1 | ||||
-rw-r--r-- | src/lj_jit.h | 17 |
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 |