src/worker.cc
// x86_64 SSE2 assembly implementation of Adler memory copy, with address
// tagging added as a second step. This is useful for debugging failures
// that only occur when SSE / nontemporal writes are used.
x86_64 SSE2 assembly implementation of Adler memory copy, with address
tagging added as a second step. This is useful for debugging failures
that only occur when SSE / nontemporal writes are used.
x86_64 SSE2 assembly implementation of Adler memory copy with address tagging added as a second step . This is useful for debugging failures that only occur when SSE / nontemporal writes are used .
bool WorkerThread::AdlerAddrMemcpyWarm(uint64 *dstmem64,
                                       uint64 *srcmem64,
                                       unsigned int size_in_bytes,
                                       AdlerChecksum *checksum,
                                       struct page_entry *pe) {
  AdlerChecksum ignored_checksum;
  os_->AdlerMemcpyWarm(dstmem64, srcmem64, size_in_bytes, &ignored_checksum);
  int length = size_in_bytes / sizeof(*dstmem64);
  for (int i = 0; i < length; i += sizeof(*dstmem64)) {
    os_->FastFlush(dstmem64 + i);
    os_->FastFlush(srcmem64 + i);
  }
  AdlerAddrCrcC(srcmem64, size_in_bytes, checksum, pe);
  TagAddrC(dstmem64, size_in_bytes);
  return true;
}
bool WorkerThread :: AdlerAddrMemcpyWarm ( uint64 * dstmem64 , uint64 * srcmem64 , unsigned int size_in_bytes , AdlerChecksum * checksum , struct page_entry * pe ) { AdlerChecksum ignored_checksum ; os_ -> AdlerMemcpyWarm ( dstmem64 , srcmem64 , size_in_bytes , & ignored_checksum ) ; int length = size_in_bytes / sizeof ( * dstmem64 ) ; for ( int i = 0 ; i < length ; i += sizeof ( * dstmem64 ) ) { os_ -> FastFlush ( dstmem64 + i ) ; os_ -> FastFlush ( srcmem64 + i ) ; } AdlerAddrCrcC ( srcmem64 , size_in_bytes , checksum , pe ) ; TagAddrC ( dstmem64 , size_in_bytes ) ; return true ; }
x86_64 SSE2 assembly implementation of Adler memory copy, with address
tagging added as a second step.
x86_64 SSE2 assembly implementation of Adler memory copy with address tagging added as a second step .
// Do ASM copy, ignore checksum. // Force cache flush. // Check results. // Patch up address tags.