diff options
Diffstat (limited to 'extensions/babl-verify-cpu.inc')
-rw-r--r-- | extensions/babl-verify-cpu.inc | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/extensions/babl-verify-cpu.inc b/extensions/babl-verify-cpu.inc new file mode 100644 index 0000000..d656445 --- /dev/null +++ b/extensions/babl-verify-cpu.inc @@ -0,0 +1,63 @@ +#include "babl-cpuaccel.h" + +#ifdef X86_64_V2 +#define BABL_SIMD_x86_64_v2 +#define BABL_SIMD_SUFFIX(symbol) symbol##_x86_64_v2 +#else +#ifdef X86_64_V3 +#define BABL_SIMD_x86_64_v3 +#define BABL_SIMD_SUFFIX(symbol) symbol##_x86_64_v3 +#else +#define BABL_SIMD_generic +#define BABL_SIMD_SUFFIX(symbol) symbol##_generic +#endif +#endif + +#define BABL_VERIFY_CPU() do{}while(0) + + +#ifdef BABL_SIMDFREE + +#ifdef ARCH_X86_64 + +#undef BABL_VERIFY_CPU +#define BABL_VERIFY_CPU()\ + if ((babl_cpu_accel_get_support() & BABL_CPU_ACCEL_X86_64_V2)\ + == BABL_CPU_ACCEL_X86_64_V2) return 0;\ + if ((babl_cpu_accel_get_support() & BABL_CPU_ACCEL_X86_64_V3)\ + == BABL_CPU_ACCEL_X86_64_V3) return 0; + +#endif + +#ifdef ARCH_ARM +#undef BABL_VERIFY_CPU +#define BABL_VERIFY_CPU()\ + if ((babl_cpu_accel_get_support() & BABL_CPU_ACCEL_ARM_NEON)\ + == BABL_CPU_ACCEL_ARM_NEON) return 0; + +#endif +#endif + +#ifdef X86_64_V2 +#undef BABL_VERIFY_CPU +#define BABL_VERIFY_CPU()\ + if ((babl_cpu_accel_get_support() & BABL_CPU_ACCEL_X86_64_V2)\ + != BABL_CPU_ACCEL_X86_64_V2) return 0;\ + if ((babl_cpu_accel_get_support() & BABL_CPU_ACCEL_X86_64_V3)\ + == BABL_CPU_ACCEL_X86_64_V3) return 0; +#endif + +#ifdef X86_64_V3 +#undef BABL_VERIFY_CPU +#define BABL_VERIFY_CPU()\ + if ((babl_cpu_accel_get_support() & BABL_CPU_ACCEL_X86_64_V3)\ + != BABL_CPU_ACCEL_X86_64_V3) return 0; +#endif + + +#ifdef ARM_NEON +#undef BABL_VERIFY_CPU +#define BABL_VERIFY_CPU()\ + if ((babl_cpu_accel_get_support() & BABL_CPU_ACCEL_ARM_NEON)\ + != BABL_CPU_ACCEL_ARM_NEON) return 0; +#endif |