c - 如何在android中使用arm_acle C语言扩展

标签 c android-ndk arm neon

有很多使用 arm neon intrinsics for android 的例子,ndk 甚至有一个例子。我已经让它正常工作了。

Arm 还提供 ACLE(Arm C 语言扩展),但我几乎找不到任何示例。 arm 文档本身仅建议包含 arm_acle.h 头文件,但我仍然遇到错误。 Google 提供的帮助几乎为零 :) 搜索 arm 社区板也几乎没有结果。

难道人们不使用 acle,而是选择内联汇编吗?

当我包含 arm_acle.h 并尝试使用 __ssat() 调用时,我必须进一步定义指令 __ARM_FEATURE_CRC32,并且在构建时出现错误“错误:‘__builtin_arm_qadd’未在此范围内声明”

header 未包含任何依赖项,文档列表中也没有具体的链接依赖项。

有什么建议吗?

还是我忽略了一些基本的东西?

附加信息: 我的目标架构是 armv7-a-neon 并且在构建时在 make 文件中被正确检测到。 然后我进一步定义“-mfloat-abi=softfp -mfpu=neon -march=armv7”,但无济于事。 如果我撤消额外的调试定义,我只会得到“错误:#error”ACLE 内在函数支持未启用。”(Neon 支持和检测成功) 搜索我的代码库,arm_acle.h 头文件仅存在于 clang host 工具中,而 arm_neon.h 存在于多个预构建工具 arm 目录中。

正如我所说,arm_neon 工作检测工作正常,并且运行良好,但 arm_acle 组件不起作用。 搜索在线存储库,如 http://androidxref.com似乎暗示只支持 NEON ?

最佳答案

ARM C 语言扩展目前在 GCC(从版本 5.1 开始)中不完全支持。 Android NDK 通常使用比此版本更早的 GCC 版本,该版本也不完全支持 ACLE。

本页https://gcc.gnu.org/onlinedocs/gcc/ARM-C-Language-Extensions-_0028ACLE_0029.html给出了 ARM 和 AArch64 目标的 ACLE 当前实现水平的一些想法。正如您将在此处看到的那样,目前 GCC 提供的 ACLE 的唯一功能是 arm_acle.h 中的 CRC32 内在函数和您已经在 arm_neon.h 中找到的 Neon Intrinsics >。

关于c - 如何在android中使用arm_acle C语言扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31416325/

相关文章:

android - 如何使用android-ndk?

c - 嵌入式设备的服务器架构

python - 如何在没有 GDB Python API 的情况下在 C 或 Python 代码中控制 gdb?

c - Malloc 函数的问题

c - 为什么recvfrom在UDP消息上存储0.0.0.0的IP地址?

c - Pic16f723 尝试通过 rs 232 发送数据 tx 失败,printf 卡住了图片

android - 保存 JNIEnv* 的最佳方法是什么?

C 编程 : convert int* to char*

android - 每个 NDK 构建都是一个完整的重建

assembly - 为什么 GCC 在 LDR 之后产生额外的 ADDS 指令以在 ARM thumb 指令集上加载 .rodata 指针?