为单个函数/文件启用增强指令集
Posted
技术标签:
【中文标题】为单个函数/文件启用增强指令集【英文标题】:Enable Enhanced Instruction Set for a single function/file 【发布时间】:2015-07-24 22:04:10 【问题描述】:是否可以为 Visual Studio 项目中的单个函数或文件启用增强指令集 (SSE/AVX)?我想要一个函数的多个版本,它们针对不同的指令集,都在同一个输出二进制文件中
【问题讨论】:
【参考方案1】:无法为单个函数或单个文件启用自定义指令集。但是,您可以为单个翻译单元启用自定义指令集,通常是 c/cpp 文件。请注意,头文件中使用的指令集取决于翻译单元的编译方式(包括它),并且在不同的 cpp 文件中可能会有所不同。
我想如果你用不同的指令集编译不同的cpp文件,你可以把它们链接在一起,生成的二进制文件就可以工作了。实际上,确保调用约定在任何地方都兼容很重要,我认为它们会兼容,除非您使用类似 __vectorcall
的东西(它至少需要 SSE2 BTW)。
如果你想用多个指令集编译一些函数,你可能想看看this question。总的来说,它被称为“CPU 调度”
【讨论】:
以上是关于为单个函数/文件启用增强指令集的主要内容,如果未能解决你的问题,请参考以下文章