【发布时间】:2012-11-26 06:49:07
【问题描述】:
我有一些代码想要运行快速内置 CPU 指令 popcnt(当 __builtin_popcountll 使用适当的标志编译时,例如使用 g++ -mpopcnt 或 clang++ -march=corei7,会发生这种情况),但是当cpuid 显示 CPU 不支持 HW 指令时,也能够回退到代码。
当然,为了获得我相信编译器人员已经正确实现的后备代码(所以我不必引入 C 或 asm 代码来进行 popcount),我需要一个单独的编译单元来编译没有 -mpopcnt 或 -march=corei7 标志。
将单独编译的代码链接在一起是唯一的方法吗?是否没有编译器内在函数或其他类型的提示或其他我不知道的内置函数可以用来让它生成后备 popcount 代码?
【问题讨论】:
标签: gcc compiler-construction bit-manipulation clang instructions