質問

私はSSE2に侵入しようとすると、次のプログラム例を試してみましたよ。

#include "stdafx.h"    
#include <emmintrin.h>

int main(int argc, char* argv[])
{
__declspec(align(16)) long mul; // multiply variable
__declspec(align(16)) int t1[100000]; // temporary variable
__declspec(align(16)) int t2[100000]; // temporary variable
__m128i mul1, mul2;
 for (int j = 0; j < 100000; j++)
 {
 t1[j] = j;
 t2[j] = j+1;
 } // set temporary variables to random values
 _asm
 {
  mov eax, 0
  label: movdqa xmm0, xmmword ptr [t1+eax]
  movdqa xmm1, xmmword ptr [t2+eax]
  pmuludq xmm0, xmm1
  movdqa mul1, xmm0
  movdqa xmm0, xmmword ptr [t1+eax]
  pshufd xmm0, xmm0, 05fh
  pshufd xmm1, xmm1, 05fh
  muludq xmm0, xmm1
  movdqa mul2, xmm0
  add eax, 16
  cmp eax, 100000
  jnge label
 }
 return 0;
 }

そして、次の警告やエラーを取得します:

  

警告C4405: 'XMM0':識別子が予約されているワード

     

エラーC2400:「オペコード」のインラインアセンブラ構文エラー。見つかった 'XMM0'

私は、考えられる原因を探してみましたが、私は、Visual C ++ 8.0を使用するのに対し、私の問題は、Visual C ++ 6.0を使用し共有する人々の大半ます。

任意の提案ですか?

役に立ちましたか?

解決

さて、エラーがあなたが変更した場合に表示されなくなります。

muludq xmm0, xmm1

タグに
pmuludq xmm0, xmm1

あなたはただそこにPを逃さなかったか?

編集:私はmuludq聞いたことがないので、あなたがやった事実イムでかなり明確。実際、私は(私は存在しません知っている)mcowに置き換え、同じエラーを得た。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top