我試圖闖入SSE2和嘗試了以下example program: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++ 6.0,而我使用Visual C++ 8.0。
有什麼建議嗎?
將來請記得把錯誤發生在線上!幸運的是,通過剪切和粘貼重新創建相當容易... – Goz 2009-12-09 16:24:40
謝謝!請記住這一點 – Jacob 2009-12-09 16:50:15