3

逐位运算和严格对齐

我正在尝试为基于位的操作编写一些高性能函数,以利用硬件的最新功能,我面临的问题是:

我想包括一个按位计数操作,在这种情况下,我使用 IntelSSE4.2popcnt接受整数类型值。

同时,如果我需要执行其他按位逻辑运算,则AVX支持 256 位宽的按位逻辑运算VORPD(而不是SSE2128 位宽的按位逻辑运算),但仅限于浮动数据。

再加上按位设置/重置操作的事实,char 是最快的,所以我可能需要至少三种类型的指针指向相同的内存位置:char 类型,long long(64 位整数以获得最佳位-明智计数)和浮点类型指针,但是整数和浮点类型指针的共存打破了严格的别名规则。

有什么建议可以解决这个问题吗?谢谢。

4

1 回答 1

0

您是否正在使用gccclang行为类似的东西?他们必须__attribute__((__may_alias__))解决这些问题。

于 2013-01-24T21:37:42.780 回答