海湾合作委员会; Aarch64; ARMV8;启用加密; -mcpu=cortex-a53+加密

gcc; Aarch64; Armv8; enable crypto; -mcpu=cortex-a53+crypto

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

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

改mfpu,mcpu加crypto或者simd之类的futures,无所谓,完全忽略。

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

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

编辑:我意识到我犯了一个错误,认为加密标志的工作方式类似于编译器解决的优化标志。我的错。

您有两个问题...

Why does -mcpu=cortex-a53+crypto not change code output?

加密扩展是 ARMv8-A 的 AArch64 状态下的可选功能。 +crypto 功能标志向编译器指示这些指令可用。从实用的角度来看,在GCC 4.8/4.9/5.1中,这定义了宏__ARM_FEATURE_CRYPTO,并控制是否可以使用ACLE中定义的crypto intrinsics,例如:

uint8x16_t vaeseq_u8 (uint8x16_t data, uint8x16_t key)

当前的 GCC 没有优化,它会自动转换一系列 C 代码以使用密码指令。如果要进行此转换,则必须手动完成(并通过适当的特征宏来保护它)。

Why do the +fpu and +simd flags not change code output?

对于 -mcpu=cortex-a53+fp+simd 标志默认是隐含的(对于 GCC 的某些配置,+crypto 也可能是默认隐含的)。因此,添加这些功能标志不会更改代码生成。