gpt4 book ai didi

gcc - 在启用 AESNI 内在函数的情况下调用 _mm_loadu_si128() 失败

转载 作者:行者123 更新时间:2023-12-04 19:32:16 26 4
gpt4 key购买 nike

我们正在编译一个 32 位应用程序,该应用程序与 cryptopp 的静态构建链接。 .

gcc : 4.4.7
CPU : Intel Xeon E5-2680
OS : CentoOS 6.5
Crypto++ : 5.6.2



我们的程序在这台机器上编译并运行良好。当我们尝试继续运行时

CPU : Intel Xeon X5690
OS : CentoOS 6.5
gcc : 4.4.6



我们在 cryptopp -> rijndael.cpp -> Rijndael::Base::UncheckedSetKey() 调用 _mm_loadu_si128() 中遇到段错误

如果我们构建 cryptopp 并将 CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE 设置为 0 一切运行正常。似乎 AES-NI 在此服务器上应该可用,并且对 HasAESNI() 的 cryptopp 调用返回 true。

关于可能导致此问题的原因或如何进一步追踪的任何想法?

最佳答案

We get the error when compiling on the E5-2680, and copying to the X5690.



哦,这很有趣。尝试添加 -mtune=pentium4CXXFLAGS . Intel Xeon E5-2680 具有 AVX 指令集;而英特尔至强 X5690 只有 SSE 4.2。 Crypto++ 使用双四字乘法 ( PCLMULQDQ ) 和 AES-NI来自 AVX 指令集的指令(其他处理器缺少)。

如果 -mtune=pentium4不起作用,那么您将不得不通过 CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE 禁用.现在我考虑了一下,这就是您可能要做的,因为这是编译时功能选择,而不是运行时功能选择。

关于gcc - 在启用 AESNI 内在函数的情况下调用 _mm_loadu_si128() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com