strasgi.S 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. ;; SPDX-License-Identifier: GPL-2.0-or-later
  2. ;; Copyright 2010 Free Software Foundation, Inc.
  3. ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>.
  4. ;;
  5. #include <linux/linkage.h>
  6. .text
  7. ENTRY(__c6xabi_strasgi)
  8. ;; This is essentially memcpy, with alignment known to be at least
  9. ;; 4, and the size a multiple of 4 greater than or equal to 28.
  10. ldw .d2t1 *B4++, A0
  11. || mvk .s2 16, B1
  12. ldw .d2t1 *B4++, A1
  13. || mvk .s2 20, B2
  14. || sub .d1 A6, 24, A6
  15. ldw .d2t1 *B4++, A5
  16. ldw .d2t1 *B4++, A7
  17. || mv .l2x A6, B7
  18. ldw .d2t1 *B4++, A8
  19. ldw .d2t1 *B4++, A9
  20. || mv .s2x A0, B5
  21. || cmpltu .l2 B2, B7, B0
  22. _strasgi_loop:
  23. stw .d1t2 B5, *A4++
  24. || [B0] ldw .d2t1 *B4++, A0
  25. || mv .s2x A1, B5
  26. || mv .l2 B7, B6
  27. [B0] sub .d2 B6, 24, B7
  28. || [B0] b .s2 _strasgi_loop
  29. || cmpltu .l2 B1, B6, B0
  30. [B0] ldw .d2t1 *B4++, A1
  31. || stw .d1t2 B5, *A4++
  32. || mv .s2x A5, B5
  33. || cmpltu .l2 12, B6, B0
  34. [B0] ldw .d2t1 *B4++, A5
  35. || stw .d1t2 B5, *A4++
  36. || mv .s2x A7, B5
  37. || cmpltu .l2 8, B6, B0
  38. [B0] ldw .d2t1 *B4++, A7
  39. || stw .d1t2 B5, *A4++
  40. || mv .s2x A8, B5
  41. || cmpltu .l2 4, B6, B0
  42. [B0] ldw .d2t1 *B4++, A8
  43. || stw .d1t2 B5, *A4++
  44. || mv .s2x A9, B5
  45. || cmpltu .l2 0, B6, B0
  46. [B0] ldw .d2t1 *B4++, A9
  47. || stw .d1t2 B5, *A4++
  48. || mv .s2x A0, B5
  49. || cmpltu .l2 B2, B7, B0
  50. ;; loop back branch happens here
  51. cmpltu .l2 B1, B6, B0
  52. || ret .s2 b3
  53. [B0] stw .d1t1 A1, *A4++
  54. || cmpltu .l2 12, B6, B0
  55. [B0] stw .d1t1 A5, *A4++
  56. || cmpltu .l2 8, B6, B0
  57. [B0] stw .d1t1 A7, *A4++
  58. || cmpltu .l2 4, B6, B0
  59. [B0] stw .d1t1 A8, *A4++
  60. || cmpltu .l2 0, B6, B0
  61. [B0] stw .d1t1 A9, *A4++
  62. ;; return happens here
  63. ENDPROC(__c6xabi_strasgi)