小编bol*_*ind的帖子

clang是否提供类似于GCC 6.x的函数多版本化(target_clones)?

我非常感兴趣地阅读了这篇LWN文章.执行摘要:GCC 6.x支持一种称为函数多版本的东西,它构建了同一函数的多个版本,针对不同的指令集进行了优化.假设你有一台支持AVX2的机器而没有支持AVX2的机器.可以在两者上运行相同的二进制文件,函数foo()存在两个版本,其中一个版本使用AVX2指令.但是,只有在CPU支持时,才会调用AVX2指令的功能.

我的问题是:clang是否支持类似的东西?它似乎不是世界上最先进的功能.

gcc clang compiler-optimization

8
推荐指数
1
解决办法
715
查看次数

是否存在或将存在target_clones属性的"全局"版本?

我最近玩过target_clonesgcc 6.1及以后的属性.它非常漂亮,但是,现在,它需要一种有点笨拙的方法; 想要多版本化的每个函数都必须手动声明属性.这不是最佳的,因为:

  • 它将编译器特定的东西放在代码中.
  • 它要求开发人员确定哪些功能应该接受这种处理.

让我们举一个例子,我想编译一些可以利用AVX2指令的代码.-fopt-info-vect将告诉我哪些函数是矢量化的,如果我构建-mavx2,所以编译器已经知道这一点.有没有办法在全局范围内告诉编译器:"如果你找到一个你觉得可以用AVX2优化的功能,那就制作多个版本,包括和不带AVX2的那个功能."?如果没有,我们可以拥有一个吗?

gcc avx avx2 gcc6

6
推荐指数
0
解决办法
215
查看次数

标签 统计

gcc ×2

avx ×1

avx2 ×1

clang ×1

compiler-optimization ×1

gcc6 ×1