123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- dstin .req x0
- src .req x1
- count .req x2
- tmp1 .req x3
- tmp1w .req w3
- tmp2 .req x4
- tmp2w .req w4
- dst .req x6
- A_l .req x7
- A_h .req x8
- B_l .req x9
- B_h .req x10
- C_l .req x11
- C_h .req x12
- D_l .req x13
- D_h .req x14
- mov dst, dstin
- cmp count,
-
- b.lo .Ltiny15
- neg tmp2, src
- ands tmp2, tmp2,
- b.eq .LSrcAligned
- sub count, count, tmp2
-
- tbz tmp2,
- ldrb1 tmp1w, src,
- strb1 tmp1w, dst,
- 1:
- tbz tmp2,
- ldrh1 tmp1w, src,
- strh1 tmp1w, dst,
- 2:
- tbz tmp2,
- ldr1 tmp1w, src,
- str1 tmp1w, dst,
- 3:
- tbz tmp2,
- ldr1 tmp1, src,
- str1 tmp1, dst,
- .LSrcAligned:
- cmp count,
- b.ge .Lcpy_over64
-
- .Ltail63:
-
- ands tmp1, count,
- b.eq .Ltiny15
- cmp tmp1w,
- b.eq 1f
- b.lt 2f
- ldp1 A_l, A_h, src,
- stp1 A_l, A_h, dst,
- 1:
- ldp1 A_l, A_h, src,
- stp1 A_l, A_h, dst,
- 2:
- ldp1 A_l, A_h, src,
- stp1 A_l, A_h, dst,
- .Ltiny15:
-
- tbz count,
- ldr1 tmp1, src,
- str1 tmp1, dst,
- 1:
- tbz count,
- ldr1 tmp1w, src,
- str1 tmp1w, dst,
- 2:
- tbz count,
- ldrh1 tmp1w, src,
- strh1 tmp1w, dst,
- 3:
- tbz count,
- ldrb1 tmp1w, src,
- strb1 tmp1w, dst,
- b .Lexitfunc
- .Lcpy_over64:
- subs count, count,
- b.ge .Lcpy_body_large
-
- ldp1 A_l, A_h, src,
- stp1 A_l, A_h, dst,
- ldp1 B_l, B_h, src,
- ldp1 C_l, C_h, src,
- stp1 B_l, B_h, dst,
- stp1 C_l, C_h, dst,
- ldp1 D_l, D_h, src,
- stp1 D_l, D_h, dst,
- tst count,
- b.ne .Ltail63
- b .Lexitfunc
-
- .p2align L1_CACHE_SHIFT
- .Lcpy_body_large:
-
- ldp1 A_l, A_h, src,
- ldp1 B_l, B_h, src,
- ldp1 C_l, C_h, src,
- ldp1 D_l, D_h, src,
- 1:
-
- stp1 A_l, A_h, dst,
- ldp1 A_l, A_h, src,
- stp1 B_l, B_h, dst,
- ldp1 B_l, B_h, src,
- stp1 C_l, C_h, dst,
- ldp1 C_l, C_h, src,
- stp1 D_l, D_h, dst,
- ldp1 D_l, D_h, src,
- subs count, count,
- b.ge 1b
- stp1 A_l, A_h, dst,
- stp1 B_l, B_h, dst,
- stp1 C_l, C_h, dst,
- stp1 D_l, D_h, dst,
- tst count,
- b.ne .Ltail63
- .Lexitfunc:
|