我可以通过使用ICC(英特尔C ++编译器)获得单个可执行文件,该文件包含来自不同制造商的不同SSE1-4 / AVX(但只有x86_64,没有x86_32)的不同架构的编译代码的多个版本/ Intel和当前处理器架构所需的运行时自动选择?
答案 0 :(得分:2)
是的,你可以。
正如您指定-xARCH
(如-xAVX
,-xHost
)一样,您可以为两个架构指定-axARCH
进行编译
示例:
icc -xHost -axSSE2 ...
如果在较旧的处理器上使用SSE2,它将编译主机体系结构的默认可执行文件和可选代码。遗憾的是,可能只使用一种额外的架构。在运行时,将使用最高级的代码。
在我的icc 12.0.2
中,有效选项包括:SSE2,SSE3,SSE4.1,SSE4.2,AVX,主机(仅限-xHost
)
现代AMD机器支持所有现代CPU中的SSE3。 SSE2是标准的最小公分母,如果没有指定-x
选项,则是默认选项。你不能让icc
生成AMD 3DNow!代码。