我可以使用ICC编译几种CPU架构吗?

时间:2013-09-09 17:24:57

标签: c++ c x86-64 icc

我可以通过使用ICC(英特尔C ++编译器)获得单个可执行文件,该文件包含来自不同制造商的不同SSE1-4 / AVX(但只有x86_64,没有x86_32)的不同架构的编译代码的多个版本/ Intel和当前处理器架构所需的运行时自动选择?

1 个答案:

答案 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!代码。