Lines Matching +full:non +full:- +full:overlap +full:- +full:time

1 /* SPDX-License-Identifier: GPL-2.0 */
7 * Modified from memcpy.S and micro-optimised for SH4
16 * It is assumed that there is no overlap between src and dst.
17 * If there is an overlap, then the results are undefined.
21 ! GHIJ KLMN OPQR --> ...G HIJK LMNO PQR.
30 add #-1,r5 ! 79 EX
34 add #-4,r5 ! 50 EX
55 mov.l r3,@-r0 ! 30 LS
72 mov.l r3,@-r0 ! 30 LS
79 add #-6,r2 ! 50 EX
87 mov.b r1,@-r0 ! 29 LS
94 ! GHIJ KLMN OPQR --> .GHI JKLM NOPQ R...
103 add #-3,r5 ! 79 EX
107 add #-4,r5 ! 50 EX
128 mov.l r3,@-r0 ! 30 LS
139 mov.l r3,@-r0
147 add #-6,r2 ! 50 EX
155 mov.b r1,@-r0 ! 29 LS
165 ! r4 --> [ ... ] DST [ ... ] SRC
168 ! r0 --> [ ... ] r0+r5 --> [ ... ]
193 ! Check for small copies, and if so do a simple byte at a time copy.
197 ! cycle counts for differnet sizes using byte-at-a-time vs. optimised):
198 ! size byte-at-time long word byte
199 ! 16 42 39-40 46-50 50-55
200 ! 24 58 43-44 54-58 62-67
201 ! 36 82 49-50 66-70 80-85
207 add #-1,r5 ! 50 EX
216 add #-1,r3 ! 50 EX
220 mov.b r1,@-r0 ! 29 LS
228 mov.b r1,@-r0 ! 29 LS
231 mov.b r2,@-r0 ! 29 LS
242 ! r5 = normal value -1
254 add #-1, r6 ! 79 EX
257 mov.b r1,@-r0 ! 28 LS
304 ! GHIJ KLMN OPQR --> GHIJ KLMN OPQR
308 ! size is non-zero
316 add #-4, r5 ! 50 EX
325 add #-8, r3 ! 50 EX
330 mov.l r1,@-r0 ! 30 LS
338 mov.l r1, @-r0 ! 30 LS
341 mov.l r2, @-r0 ! 30 LS
351 add #-4, r5 ! 50 EX
363 add #-4, r3 ! 50 EX
364 mov.l r1,@-r0 ! 30 LS
372 mov.l r1, @-r0 ! 30 LS
375 mov.l r2, @-r0 ! 30 LS
377 ! Copy the final 0-3 bytes
382 add #-10, r7 ! 50 EX
391 mov.b r1,@-r0 ! 28 LS
403 add #-4, r5 ! 50 EX
424 add #-4, r6 ! 50 EX
432 mov.l r1,@-r0 ! 30 LS
440 mov.l r1, @-r0 ! 30 LS
443 mov.l r7, @-r0 ! 30 LS
460 1: mov.l r8, @-r15 ! 30 LS
463 mov.l r9, @-r15 ! 30 LS
466 mov.l r10, @-r15 ! 30 LS
467 add #-0x1c, r5 ! 50 EX
469 mov.l r11, @-r15 ! 30 LS
473 add #-0x20, r1 ! 50 EX
481 movca.l r0,@r1 ! 40 LS (latency=3-7)
487 add #-0x20, r5 ! 50 EX
512 ! number of trailing bytes is non-zero
520 add #0x1c, r5 ! 50 EX (back to -4)
532 add #-4, r3 ! 50 EX
536 mov.l r6,@-r0 ! 30 LS
544 mov.l r6, @-r0 ! 30 LS
547 mov.l r2, @-r0 ! 30 LS
549 ! Copy the final 0-3 bytes
552 add #-10, r7 ! 50 EX
562 mov.b r1,@-r0 ! 28 LS
568 ! GHIJ KLMN OPQR --> ..GH IJKL MNOP QR..
576 add #-2,r5 ! 50 EX
579 add #-4,r6 ! 50 EX
587 mov.w r1,@-r0 ! 29 LS
590 mov.w r3,@-r0 ! 29 LS
612 add #-2, r5 ! 50 EX
616 ! Copy a short word one at a time until we are cache line aligned
619 ! Mod: r5 (=r5-2)
628 mov.w r1,@-r0 ! 29 LS
632 ! In use: r0, r2, r4, r5 (=r5-2)
645 1: mov.l r8, @-r15 ! 30 LS
648 mov.l r9, @-r15 ! 30 LS
651 mov.l r10, @-r15 ! 30 LS
652 add #-0x1e, r5 ! 50 EX
654 mov.l r11, @-r15 ! 30 LS
656 mov.l r12, @-r15 ! 30 LS
661 add #-0x20, r1 ! 50 EX
686 movca.l r0,@r1 ! 40 LS (latency=3-7)
697 add #-0x40, r5 ! 50 EX
708 add #-2, r5 ! 50 EX
711 add #-4, r1 ! 50 EX
734 movca.l r0,@r1 ! 40 LS (latency=3-7)
735 add #-0x1c, r1 ! 50 EX
746 add #-0x1e, r5 ! 50 EX
774 ! Finish off a short word at a time
775 ! r5 must be invariant - 2
789 mov.w r1,@-r0 ! 29 LS
799 mov.b r1,@-r0