]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - arch/m32r/lib/ashxdi3.S
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[mirror_ubuntu-bionic-kernel.git] / arch / m32r / lib / ashxdi3.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3 * linux/arch/m32r/lib/ashxdi3.S
4 *
5 * Copyright (C) 2001,2002 Hiroyuki Kondo, and Hirokazu Takata
6 *
7 */
8
9 ;
10 ; input (r0,r1) src
11 ; input r2 shift val
12 ; r3 scratch
13 ; output (r0,r1)
14 ;
15
16 #ifdef CONFIG_ISA_DUAL_ISSUE
17
18 #ifndef __LITTLE_ENDIAN__
19
20 .text
21 .align 4
22 .globl __ashrdi3
23 __ashrdi3:
24 cmpz r2 || ldi r3, #32
25 jc r14 || cmpu r2, r3
26 bc 1f
27 ; case 32 =< shift
28 mv r1, r0 || srai r0, #31
29 addi r2, #-32
30 sra r1, r2
31 jmp r14
32 .fillinsn
33 1: ; case shift <32
34 mv r3, r0 || srl r1, r2
35 sra r0, r2 || neg r2, r2
36 sll r3, r2
37 or r1, r3 || jmp r14
38
39 .align 4
40 .globl __ashldi3
41 .globl __lshldi3
42 __ashldi3:
43 __lshldi3:
44 cmpz r2 || ldi r3, #32
45 jc r14 || cmpu r2, r3
46 bc 1f
47 ; case 32 =< shift
48 mv r0, r1 || addi r2, #-32
49 sll r0, r2 || ldi r1, #0
50 jmp r14
51 .fillinsn
52 1: ; case shift <32
53 mv r3, r1 || sll r0, r2
54 sll r1, r2 || neg r2, r2
55 srl r3, r2
56 or r0, r3 || jmp r14
57
58 .align 4
59 .globl __lshrdi3
60 __lshrdi3:
61 cmpz r2 || ldi r3, #32
62 jc r14 || cmpu r2, r3
63 bc 1f
64 ; case 32 =< shift
65 mv r1, r0 || addi r2, #-32
66 ldi r0, #0 || srl r1, r2
67 jmp r14
68 .fillinsn
69 1: ; case shift <32
70 mv r3, r0 || srl r1, r2
71 srl r0, r2 || neg r2, r2
72 sll r3, r2
73 or r1, r3 || jmp r14
74
75 #else /* LITTLE_ENDIAN */
76
77 .text
78 .align 4
79 .globl __ashrdi3
80 __ashrdi3:
81 cmpz r2 || ldi r3, #32
82 jc r14 || cmpu r2, r3
83 bc 1f
84 ; case 32 =< shift
85 mv r0, r1 || srai r1, #31
86 addi r2, #-32
87 sra r0, r2
88 jmp r14
89 .fillinsn
90 1: ; case shift <32
91 mv r3, r1 || srl r0, r2
92 sra r1, r2 || neg r2, r2
93 sll r3, r2
94 or r0, r3 || jmp r14
95
96 .align 4
97 .globl __ashldi3
98 .globl __lshldi3
99 __ashldi3:
100 __lshldi3:
101 cmpz r2 || ldi r3, #32
102 jc r14 || cmpu r2, r3
103 bc 1f
104 ; case 32 =< shift
105 mv r1, r0 || addi r2, #-32
106 sll r1, r2 || ldi r0, #0
107 jmp r14
108 .fillinsn
109 1: ; case shift <32
110 mv r3, r0 || sll r1, r2
111 sll r0, r2 || neg r2, r2
112 srl r3, r2
113 or r1, r3 || jmp r14
114
115 .align 4
116 .globl __lshrdi3
117 __lshrdi3:
118 cmpz r2 || ldi r3, #32
119 jc r14 || cmpu r2, r3
120 bc 1f
121 ; case 32 =< shift
122 mv r0, r1 || addi r2, #-32
123 ldi r1, #0 || srl r0, r2
124 jmp r14
125 .fillinsn
126 1: ; case shift <32
127 mv r3, r1 || srl r0, r2
128 srl r1, r2 || neg r2, r2
129 sll r3, r2
130 or r0, r3 || jmp r14
131
132 #endif
133
134 #else /* not CONFIG_ISA_DUAL_ISSUE */
135
136 #ifndef __LITTLE_ENDIAN__
137
138 .text
139 .align 4
140 .globl __ashrdi3
141 __ashrdi3:
142 beqz r2, 2f
143 cmpui r2, #32
144 bc 1f
145 ; case 32 =< shift
146 mv r1, r0
147 srai r0, #31
148 addi r2, #-32
149 sra r1, r2
150 jmp r14
151 .fillinsn
152 1: ; case shift <32
153 mv r3, r0
154 srl r1, r2
155 sra r0, r2
156 neg r2, r2
157 sll r3, r2
158 or r1, r3
159 .fillinsn
160 2:
161 jmp r14
162
163 .align 4
164 .globl __ashldi3
165 .globl __lshldi3
166 __ashldi3:
167 __lshldi3:
168 beqz r2, 2f
169 cmpui r2, #32
170 bc 1f
171 ; case 32 =< shift
172 mv r0, r1
173 addi r2, #-32
174 sll r0, r2
175 ldi r1, #0
176 jmp r14
177 .fillinsn
178 1: ; case shift <32
179 mv r3, r1
180 sll r0, r2
181 sll r1, r2
182 neg r2, r2
183 srl r3, r2
184 or r0, r3
185 .fillinsn
186 2:
187 jmp r14
188
189 .align 4
190 .globl __lshrdi3
191 __lshrdi3:
192 beqz r2, 2f
193 cmpui r2, #32
194 bc 1f
195 ; case 32 =< shift
196 mv r1, r0
197 ldi r0, #0
198 addi r2, #-32
199 srl r1, r2
200 jmp r14
201 .fillinsn
202 1: ; case shift <32
203 mv r3, r0
204 srl r1, r2
205 srl r0, r2
206 neg r2, r2
207 sll r3, r2
208 or r1, r3
209 .fillinsn
210 2:
211 jmp r14
212
213 #else
214
215 .text
216 .align 4
217 .globl __ashrdi3
218 __ashrdi3:
219 beqz r2, 2f
220 cmpui r2, #32
221 bc 1f
222 ; case 32 =< shift
223 mv r0, r1
224 srai r1, #31
225 addi r2, #-32
226 sra r0, r2
227 jmp r14
228 .fillinsn
229 1: ; case shift <32
230 mv r3, r1
231 srl r0, r2
232 sra r1, r2
233 neg r2, r2
234 sll r3, r2
235 or r0, r3
236 .fillinsn
237 2:
238 jmp r14
239
240 .align 4
241 .globl __ashldi3
242 .globl __lshldi3
243 __ashldi3:
244 __lshldi3:
245 beqz r2, 2f
246 cmpui r2, #32
247 bc 1f
248 ; case 32 =< shift
249 mv r1, r0
250 addi r2, #-32
251 sll r1, r2
252 ldi r0, #0
253 jmp r14
254 .fillinsn
255 1: ; case shift <32
256 mv r3, r0
257 sll r1, r2
258 sll r0, r2
259 neg r2, r2
260 srl r3, r2
261 or r1, r3
262 .fillinsn
263 2:
264 jmp r14
265
266 .align 4
267 .globl __lshrdi3
268 __lshrdi3:
269 beqz r2, 2f
270 cmpui r2, #32
271 bc 1f
272 ; case 32 =< shift
273 mv r0, r1
274 ldi r1, #0
275 addi r2, #-32
276 srl r0, r2
277 jmp r14
278 .fillinsn
279 1: ; case shift <32
280 mv r3, r1
281 srl r0, r2
282 srl r1, r2
283 neg r2, r2
284 sll r3, r2
285 or r0, r3
286 .fillinsn
287 2:
288 jmp r14
289
290 #endif
291
292 #endif /* not CONFIG_ISA_DUAL_ISSUE */
293
294 .end