0

我想知道,在 Visual Studio 2010 中设置什么才能启用 SSE 4.2?我想使用它是因为优化了 POPCNT...

如果所有设置都正常,我该如何测试?

谢谢


好吧,我尝试使用您的解决方案,但是<nmmintric.h>不包含在 vstudio2010 和标准__popcnt要求中int,而不是std::bitset<>:(

任何想法?


感谢带有正确标题的提示。但是,似乎:error C3861: '_mm_popcnt_u64': identifier not found,我只找到了_mm_popcnt_u32,但是我不知道如何将它与 一起使用bitset,还是应该只使用bitset<>.count?如果没有编译器的 anz 设置,它就无法工作,可以吗?

没人知道 ?

4

3 回答 3

7

你必须在你的代码中写 _mm_popcnt_u64 。最好检查一下你运行的cpu是否支持该指令。并为 x64 构建。

 #include <stdio.h>
 #include <nmmintrin.h>

 int main ()
 {
      unsigned __int64 a = 0x123456789ABCDEF0;

      int res = _mm_popcnt_u64(a);

      printf_s("Result res should be 32: %d\n", res);
      return 0;
 }
于 2012-11-27T09:11:03.703 回答
0

MSDN example for __popcnt:

http://msdn.microsoft.com/en-us/library/bb385231.aspx

于 2011-07-24T06:16:27.423 回答
0

这个工作没有什么特别的要求。

您可以使用内在函数mm * 并包含适当的头文件,如果您的系统支持给定的功能,它将编译。

编译器不会检查或接触内联汇编,因此无论您放入其中的什么都将通过构建,尽管如果您的系统不支持指令,您的应用程序将会崩溃。

除此之外,VS2010 优化器仅针对 SSE2。

于 2012-08-25T05:28:15.263 回答