是否可以为visual项目中的单个函数或文件启用增强指令集(SSE/AVX)?我希望有多个针对不同指令集的函数版本,所有这些都在相同的输出二进制文件中。
发布于 2015-07-26 11:08:54
不可能为单个函数或单个文件启用自定义指令集。但是,您可以为单个翻译单元启用自定义指令集,这通常是一个c/cpp文件。请注意,标头中使用的指令集取决于翻译单元的编译方式(其中包括它),并且在不同的cpp文件中可能有所不同。
我假设,如果您用不同的指令集编译不同的cpp文件,那么您就可以将它们链接到一起,产生的二进制文件就可以工作了。实际上,确保调用约定在任何地方都是兼容的是很重要的,我认为它们是兼容的,除非您使用类似于__vectorcall的东西(它至少需要SSE2 BTW)。
如果希望使用多个指令集编译某些函数,则可能需要查看this question。总的来说,它被称为"CPU分派“。
https://stackoverflow.com/questions/31620479
复制相似问题