gcc的“ __builtin_popcount”如何工作?

时间:2019-07-22 17:03:20

标签: c++ gcc

我想了解“ __builtin_popcount”的内部工作原理。

据我了解,它对不同的cpu的工作方式不同。

1 个答案:

答案 0 :(得分:6)

与许多其他内置函数类似,如果目标CPU上有可用的指令,它将转换为特定的CPU指令,从而大大加快了应用程序的速度。

例如,在x86_64上,它转换为popcntl ASM指令。

其他信息可在GCC页面上找到:https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

还值得注意的是,只有在使用march标志运行gcc时才能看到实际的加速,该标志的目标体系结构支持该指令或专门启用该指令的参数-mpopcnt。如果没有这些,gcc将通过位操作恢复为通用位计数。