SSE2 컴파일러 오류
-
18-09-2019 - |
문제
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 : 'Opcode'의 인라인 어셈블러 구문 오류; 'xmm0'발견
가능한 원인을 검색하려고 시도했지만 내 문제를 공유하는 대부분의 사람들은 Visual C ++ 8.0을 사용하는 반면 시각적 C ++ 6.0을 사용했습니다.
제안이 있습니까?
해결책
변경하면 오류가 사라집니다
muludq xmm0, xmm1
에게
pmuludq xmm0, xmm1
당신은 거기에서 AP를 놓치지 않았다고 확신합니까?
편집 : 사실 나는 Muludq에 대해 들어 본 적이 없기 때문에 당신이 한 일은 꽤 확실합니다. 사실 나는 그것을 McOW (내가 존재하지 않는다는 것을 알고 있음)로 교체하고 같은 오류를 얻었습니다.
제휴하지 않습니다 StackOverflow