我正在尝试优化一个Arm处理器(Corte-A53)和一个Armv8架构,用于加密目的。
问题是,但是编译器接受-mcpu=cortex-a53+crypto等,它不改变输出(我检查了程序集输出)。
改变mfpu,mcpu添加期货,如密码或simd,这并不重要,它完全被忽略了。
为了使Neon代码-ftree-矢量化成为必要,如何使用密码?
(我检查了-O(1,2,3)标志,它没有帮助)。
编辑:我意识到我犯了一个错误,认为密码标志就像编译器解决的优化标志一样工作。是我的错。
发布于 2015-04-29 16:57:37
你有两个问题。
为什么
-mcpu=cortex-a53+crypto不改变代码输出?
密码扩展是ARMv8-A的AArch64状态下的一个可选特性。+crypto特性标志向编译器指示这些指令是可用的。从实际角度来看,在GCC 4.8/4.9/5.1中,这定义了宏__ARM_FEATURE_CRYPTO,并控制您是否可以使用ACLE中定义的密码本质,例如:
uint8x16_t vaeseq_u8 (uint8x16_t data, uint8x16_t key)
在目前的GCC没有优化,它将自动转换的C代码序列使用密码指令。如果要进行此转换,则必须手动完成(并通过适当的特性宏对其进行保护)。
为什么
+fpu和+simd标志不改变代码输出?
对于-mcpu=cortex-a53,默认情况下+fp和+simd标志是隐含的(对于GCC的某些配置,默认情况下也可能隐含+crypto )。因此,添加这些功能标志不会更改代码生成。
https://stackoverflow.com/questions/29912779
复制相似问题