为单个函数/文件启用增强指令集

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 调度

【讨论】:

以上是关于为单个函数/文件启用增强指令集的主要内容,如果未能解决你的问题,请参考以下文章

处理器 增强指令集

处理器 增强指令集

sse2 指令集未启用

指令集的相关问题!

比较ARMv7指令集与ARMv6指令集具都有哪些变化

#error “SSE2 指令集未启用”通过 pip 安装 scikit-bio 时