unify {de,}mangle_poll(), get rid of kernel-side POLL...
[cris-mirror.git] / arch / m32r / lib / ashxdi3.S
blobcd1acca539119604869514f5d30b6f32b1dc1549
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  */
10 ;      input   (r0,r1)  src
11 ;      input    r2      shift val
12 ;               r3      scratch
13 ;      output  (r0,r1)
16 #ifdef CONFIG_ISA_DUAL_ISSUE
18 #ifndef __LITTLE_ENDIAN__
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
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
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
75 #else /* LITTLE_ENDIAN */
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
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
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
132 #endif
134 #else /* not CONFIG_ISA_DUAL_ISSUE */
136 #ifndef __LITTLE_ENDIAN__
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
161         jmp     r14
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
187         jmp     r14
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
211         jmp     r14
213 #else
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
238         jmp     r14
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
264         jmp     r14
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
288         jmp     r14
290 #endif
292 #endif /* not CONFIG_ISA_DUAL_ISSUE */
294         .end