License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-block.git] / arch / metag / lib / div64.S
CommitLineData
b2441318 1! SPDX-License-Identifier: GPL-2.0
086e9dc0
JH
2! Copyright (C) 2012 Imagination Technologies Ltd.
3!
4! Signed/unsigned 64-bit division routines.
5!
6
7 .text
8 .global _div_u64
9 .type _div_u64,function
10
11_div_u64:
12$L1:
13 ORS A0.3,D1Ar3,D0Ar4
14 BNE $L3
15$L2:
16 MOV D0Re0,D0Ar2
17 MOV D1Re0,D1Ar1
18 MOV PC,D1RtP
19$L3:
20 CMP D1Ar3,D1Ar1
21 CMPEQ D0Ar4,D0Ar2
22 MOV D0Re0,#1
23 MOV D1Re0,#0
24 BHS $L6
25$L4:
26 ADDS D0Ar6,D0Ar4,D0Ar4
27 ADD D1Ar5,D1Ar3,D1Ar3
28 ADDCS D1Ar5,D1Ar5,#1
29 CMP D1Ar5,D1Ar3
30 CMPEQ D0Ar6,D0Ar4
31 BLO $L6
32$L5:
33 MOV D0Ar4,D0Ar6
34 MOV D1Ar3,D1Ar5
35 ADDS D0Re0,D0Re0,D0Re0
36 ADD D1Re0,D1Re0,D1Re0
37 ADDCS D1Re0,D1Re0,#1
38 CMP D1Ar3,D1Ar1
39 CMPEQ D0Ar4,D0Ar2
40 BLO $L4
41$L6:
42 ORS A0.3,D1Re0,D0Re0
43 MOV D0Ar6,#0
44 MOV D1Ar5,D0Ar6
45 BEQ $L10
46$L7:
47 CMP D1Ar1,D1Ar3
48 CMPEQ D0Ar2,D0Ar4
49 BLO $L9
50$L8:
51 ADDS D0Ar6,D0Ar6,D0Re0
52 ADD D1Ar5,D1Ar5,D1Re0
53 ADDCS D1Ar5,D1Ar5,#1
54
55 SUBS D0Ar2,D0Ar2,D0Ar4
56 SUB D1Ar1,D1Ar1,D1Ar3
57 SUBCS D1Ar1,D1Ar1,#1
58$L9:
59 LSL A0.3,D1Re0,#31
60 LSR D0Re0,D0Re0,#1
61 LSR D1Re0,D1Re0,#1
62 OR D0Re0,D0Re0,A0.3
63 LSL A0.3,D1Ar3,#31
64 LSR D0Ar4,D0Ar4,#1
65 LSR D1Ar3,D1Ar3,#1
66 OR D0Ar4,D0Ar4,A0.3
67 ORS A0.3,D1Re0,D0Re0
68 BNE $L7
69$L10:
70 MOV D0Re0,D0Ar6
71 MOV D1Re0,D1Ar5
72 MOV PC,D1RtP
73 .size _div_u64,.-_div_u64
74
75 .text
76 .global _div_s64
77 .type _div_s64,function
78_div_s64:
79 MSETL [A0StP],D0FrT,D0.5
80 XOR D0.5,D0Ar2,D0Ar4
81 XOR D1.5,D1Ar1,D1Ar3
82 TSTT D1Ar1,#HI(0x80000000)
83 BZ $L25
84
85 NEGS D0Ar2,D0Ar2
86 NEG D1Ar1,D1Ar1
87 SUBCS D1Ar1,D1Ar1,#1
88$L25:
89 TSTT D1Ar3,#HI(0x80000000)
90 BZ $L27
91
92 NEGS D0Ar4,D0Ar4
93 NEG D1Ar3,D1Ar3
94 SUBCS D1Ar3,D1Ar3,#1
95$L27:
96 CALLR D1RtP,_div_u64
97 TSTT D1.5,#HI(0x80000000)
98 BZ $L29
99
100 NEGS D0Re0,D0Re0
101 NEG D1Re0,D1Re0
102 SUBCS D1Re0,D1Re0,#1
103$L29:
104
105 GETL D0FrT,D1RtP,[A0StP+#(-16)]
106 GETL D0.5,D1.5,[A0StP+#(-8)]
107 SUB A0StP,A0StP,#16
108 MOV PC,D1RtP
109 .size _div_s64,.-_div_s64