GCC; Aarch64; Armv8;启用加密; -mcpu =皮质-A53 +加密

时间:2015-04-28 07:18:39

标签: gcc cryptography arm64

我正在尝试使用Armv8架构优化Arm处理器(Corte-A53)以实现加密目的。

问题是编译器接受-mcpu=cortex-a53+crypto等但它不会改变输出(我检查了程序集输出)。

更改mfpu,mcpu添加像crypto或simd这样的期货,没关系,它完全被忽略了。

要启用Neon代码-ftree-vectorize,如何使用加密?

(我检查了-O(1,2,3)标志,它没有帮助。)

编辑:我意识到我犯了一个错误,认为crypto标志就像编译器解决的优化标志一样。我的坏。

1 个答案:

答案 0 :(得分:2)

你有两个问题......

  

为什么-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配置)。因此,添加这些功能标志不会改变代码生成。