逐位操作和严格混叠

时间:2013-01-24 21:35:14

标签: c++ pointers bit-manipulation simd

按位操作和严格控制

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

我希望包含逐位计数操作,在这种情况下,我使用了仅加入整数类型值的英特尔SSE4.2的{​​{1}}。

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

结合逐位设置/重置操作的事实,char是最快的,所以我可能需要至少三种类型的指针指向相同的内存位置: char类型,长long (64位整数用于最佳逐位计数)和浮点型指针,但是整数和浮点类型指针的共存打破了严格别名规则。

有任何建议可以解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

您使用的是gccclang还是行为相似的内容?他们有__attribute__((__may_alias__))来解决这些问题。