Fua*_*uad 3 c optimization gcc
因此,基本上,对于我的项目,有一个限制,即不能使用-O3标志(我们只能使用-O2)。这样做的原因是,-O3标志显然引入了“硬件加速指令”。
gcc版本是5.4,此版本的优化标志的手册页是:this
我想包括尽可能多的-O3标志。-O3引入的标志列表为:
-finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload, -ftree-loop-vectorize, -ftree-loop-distribute-patterns, -ftree-slp-vectorize, -fvect-cost-model, -ftree-partial-pre and -fipa-cp-clone
Run Code Online (Sandbox Code Playgroud)
因此,我计划使用-O2并手动包括尽可能多的上述标志。
上面的哪些标志启用了“硬件加速指令”优化?如何通过阅读说明来判断标志是否启用了“硬件加速指令”优化?是什么构成的?
所使用的指令集由-march
而不是由来控制-O3
。的确-O3
可以更多地使用SIMD指令进行矢量化,但是-O3
在代码生成过程中并未专门考虑添加或删除指令。
如果只想使用最简单的指令来编译代码,请march
为您的平台选择最简单的代码。例如,-march=core2
对于x86-64来说是一个保守的选择,因为它指的是相当老的Intel Core 2处理器家族。
尽管如此,Core 2仍支持MMX和SSE到SSE3和SSSE3。要禁用这些功能,请添加:
-mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
312 次 |
最近记录: |