标签: c interleave z-order-curve
我正在构建用于空间索引的Morton编号,我有8个无符号16位数字,它们将变成__int128数字。效率是至关重要的,所以天真的解决方案(循环所有)或构建单独的8 128位数字太昂贵了。
我正在使用GCC,目标机器是64位但没有BMI2支持。
如何加快计算速度?
答案 0 :(得分:3)
如果您的计算机是x86并且支持SSE2,则使用movmsk指令会有一个聪明的答案。 Google SSE2 bit matrix transpose获取完整代码。
movmsk
SSE2 bit matrix transpose