umodsi3.S 848 B

123456789101112131415161718192021222324252627282930313233343536
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2021, The Linux Foundation. All rights reserved.
  4. */
  5. #include <linux/linkage.h>
  6. SYM_FUNC_START(__hexagon_umodsi3)
  7. {
  8. r2 = cl0(r0)
  9. r3 = cl0(r1)
  10. p0 = cmp.gtu(r1,r0)
  11. }
  12. {
  13. r2 = sub(r3,r2)
  14. if (p0) jumpr r31
  15. }
  16. {
  17. loop0(1f,r2)
  18. p1 = cmp.eq(r2,#0)
  19. r2 = lsl(r1,r2)
  20. }
  21. .falign
  22. 1:
  23. {
  24. p0 = cmp.gtu(r2,r0)
  25. if (!p0.new) r0 = sub(r0,r2)
  26. r2 = lsr(r2,#1)
  27. if (p1) r1 = #0
  28. }:endloop0
  29. {
  30. p0 = cmp.gtu(r2,r0)
  31. if (!p0.new) r0 = sub(r0,r1)
  32. jumpr r31
  33. }
  34. SYM_FUNC_END(__hexagon_umodsi3)