Erro SSE2 Compiler
-
18-09-2019 - |
Pergunta
Eu estou tentando invadir SSE2 e tentou o seguinte exemplo de programa :
#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;
}
e obter os seguintes avisos e erros:
aviso C4405: 'XMM0': identificador é palavra reservada
Erro C2400: inline assembler erro de sintaxe em 'opcode'; encontrado 'XMM0'
Eu tentei procurar por possíveis causas, mas a maioria das pessoas que compartilham minhas questões usadas Visual C ++ 6.0, enquanto eu uso o Visual C ++ 8.0.
Todas as sugestões?
Solução
Bem, o erro desaparece se alterar
muludq xmm0, xmm1
para
pmuludq xmm0, xmm1
Você tem certeza que não apenas perder um p lá?
Edit: Na verdade im muito definitiva que você fez, porque eu nunca ouvi falar de muludq. Na verdade eu substituí-lo com mcow (que eu sei que não existe) e tenho o mesmo erro.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow