我正在使用AVX内在函数,但由于除了基于_mm256的内在函数之外的所有内容,MSVC都会生成非vex指令,我需要使用/ arch:AVX编译整个源代码。该项目的其余部分使用/ arch:SSE2编译,因此它适用于较旧的CPU,并且我手动检查AVX是否可用。
包含AVX代码的源代码(为AVX编译)包含一个庞大的模板库和其他内容,只是为了获得定义。编译器/链接器是否有可能决定使用AVX指令实例化某些模板,因为它也包含在此源中?在这种情况下,它会使它在非AVX处理器上崩溃
答案 0 :(得分:0)
编译器/链接器是否有可能决定实例化 一些带有AVX指令的模板,因为它已被包含在内 在这个来源中也是如此?
是的,可能会发生,如linked question所示。查看那里给出的(其他)好答案。
我首选的解决方法是修改模板以包含一个判别参数,但如果它真的是一个“巨大的库”,那就太麻烦了,就像你在自己的答案中提到的那样使用全局定义。