我想检查运行时是否支持 SSE4 或 AVX,以便我的程序可以利用处理器特定的指令,而无需为每个处理器创建二进制文件。
如果我可以在运行时确定它,我可以使用一个接口并在不同的指令集之间切换。
GCC 有一种方法可以做到这一点,首先调用__builtin_cpu_init
然后打电话__builtin_cpu_is
and __builtin_cpu_supports
检查功能。https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/X86-Built-in-Functions.html https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/X86-Built-in-Functions.html
在 x86 上,当使用 C++ 前端时,GCC 支持“函数多版本控制”,它允许您编写函数的多个版本,指定应该使用它的目标,并让 GCC 负责确保它被调用。https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Function-Multiversioning.html https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Function-Multiversioning.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)