首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gcc的__builtin_cpu_supports检查操作系统支持吗?

gcc的__builtin_cpu_supports检查操作系统支持吗?
EN

Stack Overflow用户
提问于 2018-02-08 12:31:33
回答 1查看 1.6K关注 0票数 8

GCC编译器提供了一组builtins来测试某些处理器功能,例如某些指令集的可用性。但是,根据CPU线程,我们也可能知道某些this功能可能未被操作系统启用。所以问题是:__builtin_cpu_supports内部函数是否也检查操作系统是否启用了某些处理器功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-13 18:41:25

不是的。

我在我的Skylake系统上禁用了AVX,方法是将noxsave添加到Linux内核引导选项中。当我这样做的时候,cat /proc/cpuinfo AVX (和AVX2)不再出现,当我用AVX指令运行代码时,它崩溃了。这告诉我AVX已被操作系统禁用。

但是,当我编译并运行以下代码时

代码语言:javascript
复制
#include <stdio.h>

int main(void) {
  __builtin_cpu_init();
  printf("%d\n", __builtin_cpu_supports ("sse"));
  printf("%d\n", __builtin_cpu_supports ("avx"));
}

它返回8和512。这意味着__builtin_cpu_supports不会检查操作系统是否禁用了AVX。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48677575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档