【问题标题】:Does clang offer anything similar to GCC 6.x's function multi-versioning (target_clones)?clang 是否提供类似于 GCC 6.x 的功能多版本控制 (target_clone) 的功能?
【发布时间】:2017-02-18 21:56:16
【问题描述】:

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

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

【问题讨论】:

  • 应该有一些东西,我在 Xcode Instruments 分析器调用中注意到 _platform_memmove$VARIANT$Haswell 暗示应该有一个选项。文档是完全沉默的; target_clones 不起作用,也不能使用标有不同目标属性的单独函数
  • 当我发现它丢失时,我为它添加了一个功能请求:bugs.llvm.org//show_bug.cgi?id=38097

标签: gcc clang compiler-optimization


【解决方案1】:

LLVM 7 支持对基于 ELF 的 x86/x86_64 目标使用 'target' attribute 的函数多版本。

'target_clones' 尚未登陆。

【讨论】:

猜你喜欢
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多