如何有效地交织来自8 __int16个数字的位?

时间:2017-06-15 05:40:35

标签: c interleave z-order-curve

我正在构建用于空间索引的Morton编号,我有8个无符号16位数字,它们将变成__int128数字。效率是至关重要的,所以天真的解决方案(循环所有)或构建单独的8 128位数字太昂贵了。

我正在使用GCC,目标机器是64位但没有BMI2支持。

如何加快计算速度?

1 个答案:

答案 0 :(得分:3)

如果您的计算机是x86并且支持SSE2,则使用movmsk指令会有一个聪明的答案。 Google SSE2 bit matrix transpose获取完整代码。