~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/m32r/lib/ashxdi3.S

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

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