0

SSE 4.2 を有効にするには、Visual Studio 2010 で何を設定する必要がありますか? POPCNTが最適化されているので使いたいのですが...

すべての設定が問題ない場合、どうすればテストできますか?

ありがとう


さて、私はあなたのソリューションを使用しようとしまし<nmmintric.h>たが、vstudio2010には含まれておらず、標準では:(の代わりに__popcnt必要ですintstd::bitset<>

何か案が?


正しいヘッダーを持つヒントの Thx。ただし、次のようです: error C3861: '_mm_popcnt_u64': identifier not found、 しか見つかりませんでしたが、 で使用する方法、または だけを使用する必要が_mm_popcnt_u32あるかどうかはわかりません。コンパイラの z 設定がないと動かないですよね?bitsetbitset<>.count

誰も知らない ?

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の例__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 に答える