Merge tag 'kbuild-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy...
[linux-2.6-microblaze.git] / arch / hexagon / lib / udivsi3.S
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_udivsi3)
9         {
10                 r2 = cl0(r0)
11                 r3 = cl0(r1)
12                 r5:4 = combine(#1,#0)
13                 p0 = cmp.gtu(r1,r0)
14         }
15         {
16                 r6 = sub(r3,r2)
17                 r4 = r1
18                 r1:0 = combine(r0,r4)
19                 if (p0) jumpr r31
20         }
21         {
22                 r3:2 = vlslw(r5:4,r6)
23                 loop0(1f,r6)
24         }
25         .falign
26 1:
27         {
28                 p0 = cmp.gtu(r2,r1)
29                 if (!p0.new) r1 = sub(r1,r2)
30                 if (!p0.new) r0 = add(r0,r3)
31                 r3:2 = vlsrw(r3:2,#1)
32         }:endloop0
33         {
34                 p0 = cmp.gtu(r2,r1)
35                 if (!p0.new) r0 = add(r0,r3)
36                 jumpr r31
37         }
38 SYM_FUNC_END(__hexagon_udivsi3)