License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[sfrench/cifs-2.6.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