init_simd (void) { char *env = NULL; #if !defined(__ALTIVEC__) && (defined(__linux__) || defined(ANDROID) || defined(__ANDROID__)) int bufsize = 1024; /* an initial guess for the line buffer size limit */ #endif if (simd_support != ~0U) return; simd_support = 0; #if defined(__ALTIVEC__) || defined(__APPLE__) simd_support |= JSIMD_ALTIVEC; #elif defined(__linux__) || defined(ANDROID) || defined(__ANDROID__) while (!parse_proc_cpuinfo(bufsize)) { bufsize *= 2; if (bufsize > SOMEWHAT_SANE_PROC_CPUINFO_SIZE_LIMIT) break; } #elif defined(__amigaos4__) uint32 altivec = 0; IExec->GetCPUInfoTags(GCIT_VectorUnit, &altivec, TAG_DONE); if(altivec == VECTORTYPE_ALTIVEC) simd_support |= JSIMD_ALTIVEC; #endif /* Force different settings through environment variables */ env = getenv("JSIMD_FORCEALTIVEC"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_support = JSIMD_ALTIVEC; env = getenv("JSIMD_FORCENONE"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_support = 0; }
init_simd (void) { char *env = NULL; #if !defined(__ARM_NEON__) && (defined(__linux__) || defined(ANDROID) || defined(__ANDROID__)) int bufsize = 1024; /* an initial guess for the line buffer size limit */ #endif if (simd_support != ~0U) return; simd_support = 0; #if defined(__ARM_NEON__) simd_support |= JSIMD_ARM_NEON; #elif defined(__linux__) || defined(ANDROID) || defined(__ANDROID__) /* We still have a chance to use NEON regardless of globally used * -mcpu/-mfpu options passed to gcc by performing runtime detection via * /proc/cpuinfo parsing on linux/android */ while (!parse_proc_cpuinfo(bufsize)) { bufsize *= 2; if (bufsize > SOMEWHAT_SANE_PROC_CPUINFO_SIZE_LIMIT) break; } #endif /* Force different settings through environment variables */ env = getenv("JSIMD_FORCE_ARM_NEON"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_support &= JSIMD_ARM_NEON; env = getenv("JSIMD_FORCE_NO_SIMD"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_support = 0; }
init_simd (void) { if (simd_support != ~0U) return; simd_support = 0; #if defined(__mips__) && defined(__mips_dsp) && (__mips_dsp_rev >= 2) simd_support |= JSIMD_MIPS_DSPR2; #elif defined(__linux__) /* We still have a chance to use MIPS DSPR2 regardless of globally used * -mdspr2 options passed to gcc by performing runtime detection via * /proc/cpuinfo parsing on linux */ if (!parse_proc_cpuinfo("MIPS 74K")) return; #endif }
init_simd (void) { char *env = NULL; #if defined(__linux__) || defined(ANDROID) || defined(__ANDROID__) int bufsize = 1024; /* an initial guess for the line buffer size limit */ #endif if (simd_support != ~0U) return; simd_support = 0; simd_support |= JSIMD_ARM_NEON; #if defined(__linux__) || defined(ANDROID) || defined(__ANDROID__) while (!parse_proc_cpuinfo(bufsize)) { bufsize *= 2; if (bufsize > SOMEWHAT_SANE_PROC_CPUINFO_SIZE_LIMIT) break; } #endif /* Force different settings through environment variables */ env = getenv("JSIMD_FORCENEON"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_support &= JSIMD_ARM_NEON; env = getenv("JSIMD_FORCENONE"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_support = 0; env = getenv("JSIMD_NOHUFFENC"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_huffman = 0; env = getenv("JSIMD_FASTLD3"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_features |= JSIMD_FASTLD3; if ((env != NULL) && (strcmp(env, "0") == 0)) simd_features &= ~JSIMD_FASTLD3; env = getenv("JSIMD_FASTST3"); if ((env != NULL) && (strcmp(env, "1") == 0)) simd_features |= JSIMD_FASTST3; if ((env != NULL) && (strcmp(env, "0") == 0)) simd_features &= ~JSIMD_FASTST3; }