Google представил Си-библиотеку для определения возможностей CPU
Компания Google опубликовала библиотеку cpu_features, предназначенную для определения возможностей, поддерживаемых текущим CPU, таких как расширенные наборы инструкций AES, FMA, SSE2, AVX и NEON. Поддерживается работа с процессорами на базе архитектур x86, ARM/AArch64 и MIPS. Код поставляется под лицензией Apache 2.0.
Библиотека преподносится как удобный способ на лету определить возможность использования той или иной расширенной функциональности, или принять решение по применению запасных обработчиков для устаревших систем. Недостающая функциональность библиотеки, необходимая для поддержки новых архитектур и определения возможностей CPU, может наращиваться через подключение расширений. Код написан в соответствии со спецификацией С89, что позволяет охватить большинство современных и устаревших компиляторов.
Библиотека также включает минимальный набор зависимостей и поддерживает разные стратегии определения функциональности CPU, что позволяет использовать ее на любых платформах, в изолированных sandbox-окружениях и даже в условиях без возможности выполнить инструкцию cpuid. Более того, в библиотеке не выполняются операции выделения памяти и не генерируются исключения, что дает возможность использовать ее в реализациях таких функций, как malloc, memcpy и memcmp.