Ste*_* Lu 5 compiler-construction gcc bit-manipulation clang instructions
我有一些代码,我想运行快速的内置 CPU 指令popcnt(当__builtin_popcountll使用适当的标志编译时,例如 withg++ -mpopcnt或clang++ -march=corei7,会发生这种情况),但也能够在cpuid显示 CPU 不支持时回退到代码硬件指令。
当然,为了获得我相信编译器人员已正确实现的回退代码(因此我不必引入 C 或 asm 代码来执行我的 popcount),我需要一个单独的编译单元,该单元在编译时不使用-mpopcnt或-march=corei7标志。
将单独编译的代码链接在一起是唯一的方法吗?是否没有编译器内在函数或其他类型的提示或其他我不知道的内置函数可以用来让它生成回退 popcount 代码?
我不确定,但是与始终简单地使用非 popcnt 实现相比,放入在 popcnt 指令和后备实现之间进行选择所需的代码的成本可能会产生更大的性能损失。
要切换到替代实现(在 popcnt 站点进行切换),您至少需要以下内容:
我怀疑成本阻碍了您所描述的内在的有效实施。
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |