【发布时间】:2015-05-24 12:38:31
【问题描述】:
我想检查运行时是否支持 SSE4 或 AVX,以便我的程序可以利用处理器特定指令,而无需为每个处理器创建二进制文件。
如果我可以在运行时确定它,我可以使用接口并在不同的指令集之间切换。
【问题讨论】:
-
包括您将使用的编译器和平台是个好主意。
-
stackoverflow.com/a/7495023/4231385 可能会回答你的问题。
-
因为它似乎在那个页面上很远,
__builtin_cpu_supports()可能是 GCC 4.8+ 最简单的选择:gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/…。 MSVC 肯定会有类似的东西。他们可能只使用 CPUID:en.wikipedia.org/wiki/CPUID。