逐位运算和严格对齐
我正在尝试为基于位的操作编写一些高性能函数,以利用硬件的最新功能,我面临的问题是:
我想包括一个按位计数操作,在这种情况下,我使用 IntelSSE4.2
只popcnt
接受整数类型值。
同时,如果我需要执行其他按位逻辑运算,则AVX
支持 256 位宽的按位逻辑运算VORPD
(而不是SSE2
128 位宽的按位逻辑运算),但仅限于浮动数据。
再加上按位设置/重置操作的事实,char 是最快的,所以我可能需要至少三种类型的指针指向相同的内存位置:char 类型,long long(64 位整数以获得最佳位-明智计数)和浮点类型指针,但是整数和浮点类型指针的共存打破了严格的别名规则。
有什么建议可以解决这个问题吗?谢谢。