【发布时间】:2015-04-28 07:18:39
【问题描述】:
我正在尝试优化具有 Armv8 架构的 Arm 处理器 (Corte-A53) 以用于加密目的。
问题是编译器接受-mcpu=cortex-a53+crypto 等并不会改变输出(我检查了程序集输出)。
改变mfpu,mcpu添加像crypto或者simd这样的future,没关系,完全忽略。
要启用 Neon 代码 -ftree-vectorize 是必需的,如何使用加密?
(我检查了 -O(1,2,3) 标志,它没有帮助)。
编辑:我意识到我犯了一个错误,认为加密标志像编译器解决的优化标志一样工作。我的错。
【问题讨论】:
-
你为什么期望编译器发出加密指令?编译器标志可能只是用于检查可选行为。
-
你正在编译的代码是什么?除非你真的在建造,例如一个包含一些使用加密指令的程序集的加密库,仅仅启用它们本身不太可能做很多事情。我不相信 GCC 足够聪明地说“嘿,这个随机的 C 代码看起来像一个 SHA-1 实现,让我们对其进行优化!”完全靠自己......
-
代码使用 c 实现的 AES 指令,我预计(希望)编译器会用它做任何事情,比如优化标志。我还没有找到关于它的有用文档(或实现)。你以为国旗只是一张支票?所以所有的代码都应该写成内联汇编?
-
是的,我正在使用加密库,但它全部由 c 实现。
-
不同之处在于,如果您的代码确实包含加密指令,除非您启用该功能,否则您会从汇编程序中收到错误。
标签: gcc cryptography arm64