Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 逐位运算和严格混叠_C++_Pointers_Bit Manipulation_Simd - Fatal编程技术网

C++ 逐位运算和严格混叠

C++ 逐位运算和严格混叠,c++,pointers,bit-manipulation,simd,C++,Pointers,Bit Manipulation,Simd,逐位运算和严格的线性化 我试图为基于位的操作编写一些高性能函数,利用硬件的最新功能,我面临的问题是: 我想包括一个逐位计数操作,在这种情况下,我使用了仅接受整数类型值的IntelSSE4.2 同时,如果需要执行其他按位逻辑操作,则AVX支持256位宽的按位逻辑操作,如VORPD(而不是SSE2的128位宽的按位逻辑操作),但仅支持浮动数据 结合逐位设置/重置操作的事实,char是最快的,因此我可能需要至少三种类型的指针指向相同的内存位置:char类型、long-long(64位整数用于最佳逐位计

逐位运算和严格的线性化

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

我想包括一个逐位计数操作,在这种情况下,我使用了仅接受整数类型值的Intel
SSE4.2

同时,如果需要执行其他按位逻辑操作,则
AVX
支持256位宽的按位逻辑操作,如
VORPD
(而不是
SSE2
的128位宽的按位逻辑操作),但仅支持浮动数据

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


有没有关于解决这个问题的建议?谢谢。

您使用的是
gcc
还是
clang
还是类似的行为?他们必须解决这些问题。

对于SIMD数据类型的严格别名,我从来没有遇到过问题。我打赌很多编译器都有它作为一个例外,并将围绕它进行构建。@Mysticial目前还没有应用严格的Alssing规则,所以我知道许多编译器可以接受你得到指向同一地址的3种类型的指针,我只想为将来的解决方案提供更多。