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()的主要内容,如果未能解决你的问题,请参考以下文章

gcc的__builtin_函数介绍

__builtin_unreachable 与 GCC 中的浮点数

GCC 的 __builtin_expect 程序集转储似乎总是走下分支

在if语句中,GCC的__builtin_expect有什么优势?

将 AVX 与 GCC 一起使用:__builtin_ia32_addpd256 未声明

gcc的__builtin_函数(注意前面是两个下划线)