gpt4 book ai didi

gcc - 我如何编译*不*启用各种指令集?

转载 作者:行者123 更新时间:2023-12-04 08:35:22 68 4
gpt4 key购买 nike

我正在尝试使用各种指令集重新编译一些软件,特别是 SSE , SSE2 , SSE3 , SSSE3 , SSE4.1 , SSE4.2 , 和 AVX ,我想看看没有这些指令集的代码如何执行,以确保我得到它们的全部效果。

例如,我只想用 -O2 编译它与 gnu编译器并查看它在将其限制为仅时如何执行 SSE , 查看它默认调用哪些标志。我也有一个 intel我正在使用的编译器,我想隔离每个标志(或标志的组合)对我的代码所做的事情,那么我如何才能准确地指定正在调用哪些标志?

如果重要,我正在与 C 合作, C++ , 和 FortranLinux .

最佳答案

对于 GCC编译器:
您必须使用 -mno-这样做的选项。

These switches enable or disable the use of instructions in the MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD, SHA, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM, BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT, RTM, or 3DNow! extended instruction sets. These extensions are also available as built-in functions: see X86 Built-in Functions, for details of the functions enabled and disabled by these switches.



您可以在 official GCC site 上找到更多信息

对于 ICC编译器,你必须使用
的组合 :

-march=”cpu” optimize for a specific cpu
-mtune=”cpu” produce code only for a specific cpu
-msse3,-msse4,-mavx, etc. level of SIMD and vector instructions



More info here

关于gcc - 我如何编译*不*启用各种指令集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716321/

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