如何通过SIMD指令快速过滤?
比如上图的例子,有atrr_A列,有8个值。TID:0-7,过滤小于45的列值。
1)通过SIMD COMPARE指令可以一次性比较一批数据。比如上例,满足条件的标记到bitmask中。
2)通过SIMD permute压缩,将满足条件的移动到前面,满足条件的都在一起。
3)通过SIMD masked store将TID输出。
这样就批量快速过滤出来小于45的列值。opengauss向量化比较后,也会将值进行压缩,也就是将满足条件的都放到前面在一起,但它没有显式使用SIMD指令进行加速,这个地方同样可以应用SIMD permute指令。