clang/llvm ARM 内部函数

clang/llvm ARM instrinics

在哪里可以找到 clang/llvm 针对 ARM 支持的内在函数的完整列表?我能挖掘的一切都与 NEON 有关,但如果我想做位扫描或旋转之类的事情怎么办?

附带问题:clang 或 llvm 是否支持内部函数?

令人恼火的是,我一直找不到这方面的文档。但是,您可以在此处找到 clang 代码中的声明(通过搜索找到 "clang __builtin_arm")

http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?view=markup

如果您打算进入 ARM asm,我真的建议您跳过任何内部函数的使用。这似乎是个好主意,只需混合使用 C 和 asm。但是,在实际实践中,只需在 ASM 中编写一个完整的函数并像普通 C 函数一样调用它,就可以节省您的时间和许多麻烦。您可以创建一个虚拟 C 函数,然后让 clang 为其生成 ASM,作为参数传入和返回方式的示例。我写了更多细节和工作示例 iOS xcode 项目 here 以及可用于对不同 ASM 实现进行计时的代码。另请注意,虽然 ARM 代码适用于不同版本的 ARM CPU,但较新的 64 位 ARM 代码却大不相同。