Здравствуйте обиталели RSDN.
Нужно написать функцию для копирования памяти с использованием инструкции SSE4 MOVNTDQA.
Порыскал в инете, нашел полезные ссылочки
http://software.intel.com/en-us/articles/increasing-memory-throughput-with-intel-streaming-simd-extensions-4-intel-sse4-streaming-load/
http://efreedom.com/Question/1-851286/Use-Movntdqa-Avoid-Cache-Pollution
Вот этот код компилируется на VS9, но не работает.
void FastMemoryCopy(char *dst,char*src,unsigned size){
char *dst_end = dst+size;
__asm{
mov edi, dst
mov edx, dst_end
mov esi,src
inner_start:
LFENCE
MOVNTDQA xmm0, [esi ] //вот тут ругается
MOVNTDQA xmm1, [esi+16]
MOVNTDQA xmm2, [esi+32]
MOVNTDQA xmm3, [esi+48]
MOVDQA [edi], xmm0
MOVDQA [edi+16], xmm1
MOVDQA [edi+32], xmm2
MOVDQA [edi+48], xmm3
add esi, 040h
add edi, 040h
cmp edi, edx
jne inner_start
}
}