diff options
-rw-r--r-- | alc/cpu_caps.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/alc/cpu_caps.cpp b/alc/cpu_caps.cpp index a2719265..a480f77b 100644 --- a/alc/cpu_caps.cpp +++ b/alc/cpu_caps.cpp @@ -129,13 +129,26 @@ void FillCPUCaps(int capfilter) size_t extpos{9}; while((extpos=features.find("neon", extpos+1)) != std::string::npos) { - if((extpos == 0 || std::isspace(features[extpos-1])) && - (extpos+4 == features.length() || std::isspace(features[extpos+4]))) + if(std::isspace(features[extpos-1]) + && (extpos+4 == features.length() || std::isspace(features[extpos+4]))) { caps |= CPU_CAP_NEON; break; } } + if(!(caps&CPU_CAP_NEON)) + { + extpos = 9; + while((extpos=features.find("asimd", extpos+1)) != std::string::npos) + { + if(std::isspace(features[extpos-1]) + && (extpos+5 == features.length() || std::isspace(features[extpos+5]))) + { + caps |= CPU_CAP_NEON; + break; + } + } + } } #endif #endif |