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