我有一些代码我想运行快速的内置 CPU 指令popcnt
(当__builtin_popcountll
使用适当的标志编译时,例如 with g++ -mpopcnt
or clang++ -march=corei7
,会发生这种情况),但也能够在cpuid
显示 CPU 不支持时回退到代码硬件指令。
当然,要获得我相信编译器人员已经正确实现的后备代码(所以我不必引入 C 或 asm 代码来做我的 popcount),我需要一个单独的编译单元,它在编译时没有-mpopcnt
or-march=corei7
标志。
将单独编译的代码链接在一起是唯一的方法吗?是否没有编译器内在函数或其他类型的提示或其他我不知道的内置函数可以用来让它生成后备 popcount 代码?