Lines Matching full:copy

5  * It is used to copy date across the kernel/user boundary.
10 * errors on stores. Note that because of the nature of the copy
17 * in2 number of bytes to copy
39 #define COPY_BREAK 16 // we do byte copy below (must be >=16)
99 mov dst1=dst // copy because of rotation
103 mov src1=src // copy because of rotation
105 cmp.lt p10,p7=COPY_BREAK,len // if len > COPY_BREAK then long copy
128 // At this point we know we have more than 16 bytes to copy
133 // The basic idea is that we copy byte-by-byte at the head so
135 // Then copy the body using software pipelined 8-byte copy,
136 // shifting the two back-to-back words right and left, then copy
141 // to the dst1. Then copy zeros for the rest of dst1.
148 // copy some bytes from the 2nd word of the source that has the
154 // to copy the head to dst1, to start 8-byte copy software pipeline.
179 // For the case p14, we don't need to copy the shifted part to
205 (p9) br.cond.spnt 4f // if (16 > len1) skip 8-byte copy
216 // we have more than 8 bytes to copy.
298 // To fix that, we simply copy the tail byte by byte.
325 mov len1=len // copy because of rotation
328 // At this point we know we have more than 16 bytes to copy
388 // is 16 byte aligned AND we have less than 16 bytes to copy.
416 // Here we handle the case where the byte by byte copy fails
452 // This is the case where the byte by byte copy fails on the load
453 // when we copy the head. We need to finish the pipeline and copy
514 // either go for the 16byte copy loop OR the ld8 in the tail part.
516 // because it would mean you had 15bytes to copy in which case you
517 // would have defaulted to the byte by byte copy.
529 // at most 15 bytes to copy: no chance of crossing.
534 // 2 or 3 bytes left to copy and we did not execute the ld8 nor ld4.