C++ std::bitset中作为运算符重载提供的按位操作(&;,^.|等)是否使用AVX或SSE4指令?

C++ std::bitset中作为运算符重载提供的按位操作(&;,^.|等)是否使用AVX或SSE4指令?,c++,stl,simd,avx,avx2,C++,Stl,Simd,Avx,Avx2,因为这取决于实现,所以只有通过反汇编才能找到答案吗 因为这取决于实现,所以只有通过反汇编才能找到答案吗 是的,没有别的办法了。也不保证实际使用的是什么 因为这取决于实现,所以只有通过反汇编才能找到答案吗 是的,没有别的办法了。也不保证实际使用的是什么。您可以查看STL源代码,看看它是否使用SIMD,但我相信它是特定于编译器的,STL库不会直接使用SIMD&AVX。如果可能的话,作为优化的一部分,由编译器进行矢量化 因此,我宁愿查看特定循环的优化报告,看看编译器是否能够将其矢量化,如果不能,原因是

因为这取决于实现,所以只有通过反汇编才能找到答案吗

因为这取决于实现,所以只有通过反汇编才能找到答案吗

是的,没有别的办法了。也不保证实际使用的是什么

因为这取决于实现,所以只有通过反汇编才能找到答案吗


是的,没有别的办法了。也不保证实际使用的是什么。

您可以查看
STL
源代码,看看它是否使用
SIMD
,但我相信它是特定于编译器的,
STL
库不会直接使用
SIMD
&
AVX
。如果可能的话,作为优化的一部分,由编译器进行矢量化


因此,我宁愿查看特定循环的优化报告,看看编译器是否能够将其矢量化,如果不能,原因是什么。

您可以查看
STL
源代码,看看它是否使用
SIMD
,但我相信它是特定于编译器的,
STL
库不会直接利用
SIMD
&
AVX
。如果可能的话,作为优化的一部分,由编译器进行矢量化

因此,我宁愿查看特定循环的优化报告,看看编译器是否能够对其进行矢量化,如果不能,原因是什么。

STL源代码永远不会显式使用SIMD指令,因为唯一的方法是通过内部函数,这必然会使您高度依赖于体系结构。这将破坏可以在任何地方使用的标准库的目的。如果您的编译器没有应用您期望的优化,您可以查看专门使用内部函数编写的库,以强制使用SIMD指令。每个目标处理器都需要一个。STL源永远不会显式使用SIMD指令,因为这样做的唯一方法是通过内部函数,这必然会使您高度依赖于体系结构。这将破坏可以在任何地方使用的标准库的目的。如果您的编译器没有应用您期望的优化,您可以查看专门使用内部函数编写的库,以强制使用SIMD指令。每个目标处理器都需要一个。