Clang 相当于 GCC 的 __builtin_darn()
Posted
技术标签:
【中文标题】Clang 相当于 GCC 的 __builtin_darn()【英文标题】:Clang equivalent of GCC's __builtin_darn() 【发布时间】:2018-11-26 07:12:35 【问题描述】:我正在尝试在 Power9 上发现 Clang 等效于 GCC's __builtin_darn()
。 Grepping Clang 7.0 来源,看起来 LLVM 支持它:
llvm_source$ cat llvm/test/MC/PowerPC/ppc64-encoding.s | grep darn -B 1 -A 1
# CHECK-BE: darn 2, 3 # encoding: [0x7c,0x43,0x05,0xe6]
# CHECK-LE: darn 2, 3 # encoding: [0xe6,0x05,0x43,0x7c]
darn 2, 3
但是,我找不到内置函数:
llvm_source$ grep -IR darn | grep builtin
llvm_source$
什么是 GCC 的 __builtin_darn()
的 Clang 等效项?
【问题讨论】:
【参考方案1】:这是merged into LLVM 12.0.0-rc1,因此很可能在 llvm/clang 12 中可用。
【讨论】:
【参考方案2】:您可以在扩展 ASM 中写入(您可能已经这样做了):
void t2()
static unsigned int x;
asm __volatile__("darn %0,1": "=r" (x));
你的错误参考:https://bugs.llvm.org/show_bug.cgi?id=39800
【讨论】:
以上是关于Clang 相当于 GCC 的 __builtin_darn()的主要内容,如果未能解决你的问题,请参考以下文章
__builtin_unreachable 与 GCC 中的浮点数
GCC 的 __builtin_expect 程序集转储似乎总是走下分支
在if语句中,GCC的__builtin_expect有什么优势?