Fast memory copy (SSE4)
От: Аноним  
Дата: 18.01.11 12:36
Оценка:
Здравствуйте обиталели 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 
  }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.