mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-24 06:44:14 +02:00
Use shared CPUDetect.h for CPU detection
This commit is contained in:
parent
262e0262fc
commit
d7079fce8c
1 changed files with 2 additions and 51 deletions
|
@ -119,61 +119,12 @@ static void FIR_1x4_SSE(float* src, float* dst0, float* dst1, float* dst2, float
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Detect AVX/AVX2 support
|
|
||||||
//
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
|
|
||||||
#include <intrin.h>
|
|
||||||
|
|
||||||
static bool cpuSupportsAVX() {
|
|
||||||
int info[4];
|
|
||||||
int mask = (1 << 27) | (1 << 28); // OSXSAVE and AVX
|
|
||||||
|
|
||||||
__cpuidex(info, 0x1, 0);
|
|
||||||
|
|
||||||
bool result = false;
|
|
||||||
if ((info[2] & mask) == mask) {
|
|
||||||
|
|
||||||
if ((_xgetbv(_XCR_XFEATURE_ENABLED_MASK) & 0x6) == 0x6) {
|
|
||||||
result = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(__GNUC__)
|
|
||||||
|
|
||||||
#include <cpuid.h>
|
|
||||||
|
|
||||||
static bool cpuSupportsAVX() {
|
|
||||||
unsigned int eax, ebx, ecx, edx;
|
|
||||||
unsigned int mask = (1 << 27) | (1 << 28); // OSXSAVE and AVX
|
|
||||||
|
|
||||||
bool result = false;
|
|
||||||
if (__get_cpuid(0x1, &eax, &ebx, &ecx, &edx) && ((ecx & mask) == mask)) {
|
|
||||||
|
|
||||||
__asm__("xgetbv" : "=a"(eax), "=d"(edx) : "c"(0));
|
|
||||||
if ((eax & 0x6) == 0x6) {
|
|
||||||
result = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static bool cpuSupportsAVX() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Runtime CPU dispatch
|
// Runtime CPU dispatch
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include "CPUDetect.h"
|
||||||
|
|
||||||
typedef void FIR_1x4_t(float* src, float* dst0, float* dst1, float* dst2, float* dst3, float coef[4][HRTF_TAPS], int numFrames);
|
typedef void FIR_1x4_t(float* src, float* dst0, float* dst1, float* dst2, float* dst3, float coef[4][HRTF_TAPS], int numFrames);
|
||||||
FIR_1x4_t FIR_1x4_AVX; // separate compilation with VEX-encoding enabled
|
FIR_1x4_t FIR_1x4_AVX; // separate compilation with VEX-encoding enabled
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue