为单个功能/文件启用增强指令集

时间:2015-07-24 22:04:10

标签: visual-studio sse cl.exe

是否可以为visual studio项目中的单个函数或文件启用增强指令集(SSE / AVX)?我想有一个函数的多个版本,它们针对不同的指令集,所有这些都在同一个输出二进制文件中

1 个答案:

答案 0 :(得分:0)

无法为单个功能或单个文件启用自定义指令集。但是,您可以为单个翻译单元启用自定义指令集,该单元通常是 c / cpp 文件。请注意,标头中使用的指令集取决于转换单元的编译方式(包括它),并且在不同的 cpp 文件中可能有所不同。

我想如果您使用不同的指令集编译不同的 cpp 文件,则可以将它们链接在一起,并且生成的二进制文件将起作用。实际上,重要的是要确保调用约定在所有地方都是兼容的,我认为它们将是,除非你使用类似__vectorcall的东西(它至少需要SSE2 BTW)。

如果要编译具有多个指令集的某些函数,可能需要查看this question。总的来说,它被称为“ CPU dispatch