diff --git a/simd/jsimd_powerpc.c b/simd/jsimd_powerpc.c index f447bf67..8fc05478 100644 --- a/simd/jsimd_powerpc.c +++ b/simd/jsimd_powerpc.c @@ -31,6 +31,12 @@ #include #include +#if defined(__OpenBSD__) +#include +#include +#include +#endif + static unsigned int simd_support = ~0; #if defined(__linux__) || defined(ANDROID) || defined(__ANDROID__) @@ -126,6 +132,12 @@ init_simd (void) IExec->GetCPUInfoTags(GCIT_VectorUnit, &altivec, TAG_DONE); if(altivec == VECTORTYPE_ALTIVEC) simd_support |= JSIMD_ALTIVEC; +#elif defined(__OpenBSD__) + int mib[2] = { CTL_MACHDEP, CPU_ALTIVEC }; + int altivec; + size_t len = sizeof(altivec); + if (sysctl(mib, 2, &altivec, &len, NULL, 0) == 0 && altivec != 0) + simd_support |= JSIMD_ALTIVEC; #endif /* Force different settings through environment variables */