在android中使用arm neon内部函数的例子很多,ndk甚至有一个例子。我已经让它正常工作了。
Arm也提供ACLE(Arm C语言扩展),但通过示例,我几乎什么也找不到。arm文档本身只是建议包含arm_cle.h头文件,但是我仍然会得到错误。谷歌几乎没有提供任何帮助:)同时搜索arm社区板也几乎没有任何结果。
人们不使用acle,而是选择内联程序集吗?
当我包含arm acle.h并尝试使用u ssat()调用时,我必须进一步定义一个指令u arm_FEATURE_ucrc32,并且在生成时,我得到错误“error:''uu builtin_arm_qadd'未在此范围内声明”
头部不包含任何依赖项,文档列表中没有特定的链接依赖项。
有什么建议吗?
还是我忽略了一些基本的东西?
其他信息:
我的目标架构是armv7-a-neon,并在生成时在make文件中正确检测到。
然后我进一步定义“-mfloat abi=softfp-mfpu=neon-march=armv7”,但没有用。
如果撤消附加的调试定义,我只会得到“error:#error”ACLE intrinsics support not enabled。”(Neon支持和检测成功)
搜索我的代码库时,arm_acle.h头文件只存在于clang主机工具中,而arm_neon.h存在于几个预构建工具arm目录中。
正如我所说,armúneon的工作检测工作正常,运行正常,是arm戋acle组件不工作。
搜索像http://androidxref.com这样的在线存储库似乎表明只支持neon?

最佳答案

GCC目前不完全支持ARMC语言扩展(从5.1版起)。Android NDK通常使用的GCC版本比这个旧,它也不完全支持ACLE。
本页介绍了ARM和AArch64目标ACLE的当前实现水平如您所见,GCC当前提供的ACLE的唯一特性是arm_acle.h中的CRC32内部函数和arm_neon.h中已经找到的Neon内部函数。

08-17 04:41