mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-27 06:08:21 +01:00
dsp/cpu: correct wasmCPUInfo placement
WASM needs to precede platform specific architecture checks as the defines will still be present when building this target. Change-Id: I823f4922829561ea298c6837068b79bf9f1aee1b
This commit is contained in:
parent
586eda373d
commit
b005d916f8
@ -23,11 +23,13 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// SSE2 detection.
|
// x86/x86-64 micro-arch detection.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
// skip x86 specific code for WASM builds
|
||||||
|
#if defined(WEBP_USE_WASM)
|
||||||
// apple/darwin gcc-4.0.1 defines __PIC__, but not __pic__ with -fPIC.
|
// apple/darwin gcc-4.0.1 defines __PIC__, but not __pic__ with -fPIC.
|
||||||
#if (defined(__pic__) || defined(__PIC__)) && defined(__i386__)
|
#elif (defined(__pic__) || defined(__PIC__)) && defined(__i386__)
|
||||||
static WEBP_INLINE void GetCPUInfo(int cpu_info[4], int info_type) {
|
static WEBP_INLINE void GetCPUInfo(int cpu_info[4], int info_type) {
|
||||||
__asm__ volatile (
|
__asm__ volatile (
|
||||||
"mov %%ebx, %%edi\n"
|
"mov %%ebx, %%edi\n"
|
||||||
@ -63,8 +65,10 @@ static WEBP_INLINE void GetCPUInfo(int cpu_info[4], int info_type) {
|
|||||||
#define GetCPUInfo __cpuid
|
#define GetCPUInfo __cpuid
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// skip xgetbv definition for WASM builds
|
||||||
|
#if defined(WEBP_USE_WASM)
|
||||||
// NaCl has no support for xgetbv or the raw opcode.
|
// NaCl has no support for xgetbv or the raw opcode.
|
||||||
#if !defined(__native_client__) && (defined(__i386__) || defined(__x86_64__))
|
#elif !defined(__native_client__) && (defined(__i386__) || defined(__x86_64__))
|
||||||
static WEBP_INLINE uint64_t xgetbv(void) {
|
static WEBP_INLINE uint64_t xgetbv(void) {
|
||||||
const uint32_t ecx = 0;
|
const uint32_t ecx = 0;
|
||||||
uint32_t eax, edx;
|
uint32_t eax, edx;
|
||||||
@ -94,7 +98,19 @@ static WEBP_INLINE uint64_t xgetbv(void) {
|
|||||||
#define xgetbv() 0U // no AVX for older x64 or unrecognized toolchains.
|
#define xgetbv() 0U // no AVX for older x64 or unrecognized toolchains.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__i386__) || defined(__x86_64__) || defined(WEBP_MSC_SSE2)
|
//------------------------------------------------------------------------------
|
||||||
|
// Platform specific VP8CPUInfo functions.
|
||||||
|
//
|
||||||
|
|
||||||
|
// WASM needs to precede platform specific architecture checks as the defines
|
||||||
|
// will still be present when building this target.
|
||||||
|
#if defined(WEBP_USE_WASM)
|
||||||
|
static int wasmCPUInfo(CPUFeature feature) {
|
||||||
|
if (feature != kWASM) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
VP8CPUInfo VP8GetCPUInfo = wasmCPUInfo;
|
||||||
|
#elif defined(__i386__) || defined(__x86_64__) || defined(WEBP_MSC_SSE2)
|
||||||
|
|
||||||
// helper function for run-time detection of slow SSSE3 platforms
|
// helper function for run-time detection of slow SSSE3 platforms
|
||||||
static int CheckSlowModel(int info) {
|
static int CheckSlowModel(int info) {
|
||||||
@ -217,12 +233,6 @@ static int mipsCPUInfo(CPUFeature feature) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
VP8CPUInfo VP8GetCPUInfo = mipsCPUInfo;
|
VP8CPUInfo VP8GetCPUInfo = mipsCPUInfo;
|
||||||
#elif defined(WEBP_USE_WASM)
|
|
||||||
static int wasmCPUInfo(CPUFeature feature) {
|
|
||||||
if (feature != kWASM) return 0;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
VP8CPUInfo VP8GetCPUInfo = wasmCPUInfo;
|
|
||||||
#else
|
#else
|
||||||
VP8CPUInfo VP8GetCPUInfo = NULL;
|
VP8CPUInfo VP8GetCPUInfo = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user