]>
Commit | Line | Data |
---|---|---|
748086b7 | 1 | /* Copyright (C) 2004, 2006, 2009 Free Software Foundation, Inc. |
78d310c2 R |
2 | |
3 | This file is free software; you can redistribute it and/or modify it | |
4 | under the terms of the GNU General Public License as published by the | |
748086b7 | 5 | Free Software Foundation; either version 3, or (at your option) any |
78d310c2 R |
6 | later version. |
7 | ||
78d310c2 R |
8 | This file is distributed in the hope that it will be useful, but |
9 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
11 | General Public License for more details. | |
12 | ||
748086b7 JJ |
13 | Under Section 7 of GPL version 3, you are granted additional |
14 | permissions described in the GCC Runtime Library Exception, version | |
15 | 3.1, as published by the Free Software Foundation. | |
16 | ||
17 | You should have received a copy of the GNU General Public License and | |
18 | a copy of the GCC Runtime Library Exception along with this program; | |
19 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
20 | <http://www.gnu.org/licenses/>. */ | |
21 | ||
78d310c2 R |
22 | |
23 | /* libgcc routines for the STMicroelectronics ST40-300 CPU. | |
24 | Contributed by J"orn Rennecke joern.rennecke@st.com. */ | |
25 | ||
26 | #include "lib1funcs.h" | |
27 | ||
7945be3f | 28 | #if !__SHMEDIA__ |
78d310c2 R |
29 | #ifdef L_div_table |
30 | #if defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__) | |
31 | /* This code used shld, thus is not suitable for SH1 / SH2. */ | |
32 | ||
33 | /* Signed / unsigned division without use of FPU, optimized for SH4-300. | |
34 | Uses a lookup table for divisors in the range -128 .. +127, and | |
35 | div1 with case distinction for larger divisors in three more ranges. | |
36 | The code is lumped together with the table to allow the use of mova. */ | |
37 | #ifdef __LITTLE_ENDIAN__ | |
38 | #define L_LSB 0 | |
39 | #define L_LSWMSB 1 | |
40 | #define L_MSWLSB 2 | |
41 | #else | |
42 | #define L_LSB 3 | |
43 | #define L_LSWMSB 2 | |
44 | #define L_MSWLSB 1 | |
45 | #endif | |
46 | ||
47 | .global GLOBAL(udivsi3_i4i) | |
48 | .global GLOBAL(sdivsi3_i4i) | |
49 | FUNC(GLOBAL(udivsi3_i4i)) | |
50 | FUNC(GLOBAL(sdivsi3_i4i)) | |
51 | ||
52 | .balign 4 | |
53 | LOCAL(div_ge8m): ! 10 cycles up to here | |
54 | rotcr r1 ! signed shift must use original sign from r4 | |
55 | div0s r5,r4 | |
56 | mov #24,r7 | |
57 | shld r7,r6 | |
58 | shad r0,r1 | |
59 | rotcl r6 | |
60 | div1 r5,r1 | |
61 | swap.w r5,r0 ! detect -0x80000000 : 0x800000 | |
62 | rotcl r6 | |
63 | swap.w r4,r7 | |
64 | div1 r5,r1 | |
65 | swap.b r7,r7 | |
66 | rotcl r6 | |
67 | or r7,r0 | |
68 | div1 r5,r1 | |
69 | swap.w r0,r7 | |
70 | rotcl r6 | |
71 | or r7,r0 | |
72 | div1 r5,r1 | |
73 | add #-0x80,r0 | |
74 | rotcl r6 | |
75 | extu.w r0,r0 | |
76 | div1 r5,r1 | |
77 | neg r0,r0 | |
78 | rotcl r6 | |
79 | swap.w r0,r0 | |
80 | div1 r5,r1 | |
81 | mov.l @r15+,r7 | |
82 | and r6,r0 | |
83 | rotcl r6 | |
84 | div1 r5,r1 | |
85 | shll2 r0 | |
86 | rotcl r6 | |
87 | exts.b r0,r0 | |
88 | div1 r5,r1 | |
89 | swap.w r0,r0 | |
90 | exts.w r0,r1 | |
91 | exts.b r6,r0 | |
92 | mov.l @r15+,r6 | |
93 | rotcl r0 | |
94 | rts | |
95 | sub r1,r0 | |
96 | ! 31 cycles up to here | |
97 | ||
98 | .balign 4 | |
99 | LOCAL(udiv_ge64k): ! 3 cycles up to here | |
100 | mov r4,r0 | |
101 | shlr8 r0 | |
102 | div0u | |
103 | cmp/hi r0,r5 | |
104 | bt LOCAL(udiv_r8) | |
105 | mov.l r5,@-r15 | |
106 | shll8 r5 | |
107 | ! 7 cycles up to here | |
108 | .rept 8 | |
109 | div1 r5,r0 | |
110 | .endr | |
111 | extu.b r4,r1 ! 15 cycles up to here | |
112 | extu.b r0,r6 | |
113 | xor r1,r0 | |
114 | xor r6,r0 | |
115 | swap.b r6,r6 | |
116 | .rept 8 | |
117 | div1 r5,r0 | |
118 | .endr ! 25 cycles up to here | |
119 | extu.b r0,r0 | |
120 | mov.l @r15+,r5 | |
121 | or r6,r0 | |
122 | mov.l @r15+,r6 | |
123 | rts | |
124 | rotcl r0 ! 28 cycles up to here | |
125 | ||
126 | .balign 4 | |
127 | LOCAL(udiv_r8): ! 6 cycles up to here | |
128 | mov.l r4,@-r15 | |
129 | shll16 r4 | |
130 | shll8 r4 | |
131 | ! | |
132 | shll r4 | |
133 | mov r0,r1 | |
134 | div1 r5,r1 | |
135 | mov r4,r0 | |
136 | rotcl r0 | |
137 | mov.l @r15+,r4 | |
138 | div1 r5,r1 | |
139 | ! 12 cycles up to here | |
140 | .rept 6 | |
141 | rotcl r0; div1 r5,r1 | |
142 | .endr | |
143 | mov.l @r15+,r6 ! 24 cycles up to here | |
144 | rts | |
145 | rotcl r0 | |
146 | ||
147 | .balign 4 | |
148 | LOCAL(div_ge32k): ! 6 cycles up to here | |
149 | mov.l r7,@-r15 | |
150 | swap.w r5,r6 | |
151 | exts.b r6,r7 | |
152 | exts.w r6,r6 | |
153 | cmp/eq r6,r7 | |
154 | extu.b r1,r6 | |
155 | bf/s LOCAL(div_ge8m) | |
156 | cmp/hi r1,r4 ! copy sign bit of r4 into T | |
157 | rotcr r1 ! signed shift must use original sign from r4 | |
158 | div0s r5,r4 | |
159 | shad r0,r1 | |
160 | shll8 r5 | |
161 | div1 r5,r1 | |
162 | mov r5,r7 ! detect r4 == 0x80000000 && r5 == 0x8000(00) | |
163 | div1 r5,r1 | |
164 | shlr8 r7 | |
165 | div1 r5,r1 | |
166 | swap.w r4,r0 | |
167 | div1 r5,r1 | |
168 | swap.b r0,r0 | |
169 | div1 r5,r1 | |
170 | or r0,r7 | |
171 | div1 r5,r1 | |
172 | add #-80,r7 | |
173 | div1 r5,r1 | |
174 | swap.w r7,r0 | |
175 | div1 r5,r1 | |
176 | or r0,r7 | |
177 | extu.b r1,r0 | |
178 | xor r6,r1 | |
179 | xor r0,r1 | |
180 | exts.b r0,r0 | |
181 | div1 r5,r1 | |
182 | extu.w r7,r7 | |
183 | div1 r5,r1 | |
184 | neg r7,r7 ! upper 16 bit of r7 == 0 if r4 == 0x80000000 && r5 == 0x8000 | |
185 | div1 r5,r1 | |
186 | and r0,r7 | |
187 | div1 r5,r1 | |
188 | swap.w r7,r7 ! 26 cycles up to here. | |
189 | div1 r5,r1 | |
190 | shll8 r0 | |
191 | div1 r5,r1 | |
192 | exts.w r7,r7 | |
193 | div1 r5,r1 | |
194 | add r0,r0 | |
195 | div1 r5,r1 | |
196 | sub r7,r0 | |
197 | extu.b r1,r1 | |
198 | mov.l @r15+,r7 | |
199 | rotcl r1 | |
200 | mov.l @r15+,r6 | |
201 | add r1,r0 | |
202 | mov #-8,r1 | |
203 | rts | |
204 | shad r1,r5 ! 34 cycles up to here | |
205 | ||
206 | .balign 4 | |
207 | GLOBAL(udivsi3_i4i): | |
208 | mov.l r6,@-r15 | |
209 | extu.w r5,r6 | |
210 | cmp/eq r5,r6 | |
211 | mov #0x7f,r0 | |
212 | bf LOCAL(udiv_ge64k) | |
213 | cmp/hi r0,r5 | |
214 | bf LOCAL(udiv_le128) | |
215 | mov r4,r1 | |
216 | shlr8 r1 | |
217 | div0u | |
218 | shlr r1 | |
219 | shll16 r6 | |
220 | div1 r6,r1 | |
221 | extu.b r4,r0 ! 7 cycles up to here | |
222 | .rept 8 | |
223 | div1 r6,r1 | |
224 | .endr ! 15 cycles up to here | |
225 | xor r1,r0 ! xor dividend with result lsb | |
226 | .rept 6 | |
227 | div1 r6,r1 | |
228 | .endr | |
229 | mov.l r7,@-r15 ! 21 cycles up to here | |
230 | div1 r6,r1 | |
231 | extu.b r0,r7 | |
232 | div1 r6,r1 | |
233 | shll8 r7 | |
234 | extu.w r1,r0 | |
235 | xor r7,r1 ! replace lsb of result with lsb of dividend | |
236 | div1 r6,r1 | |
237 | mov #0,r7 | |
238 | div1 r6,r1 | |
239 | ! | |
240 | div1 r6,r1 | |
241 | bra LOCAL(div_end) | |
242 | div1 r6,r1 ! 28 cycles up to here | |
243 | ||
244 | /* This is link-compatible with a GLOBAL(sdivsi3) call, | |
245 | but we effectively clobber only r1, macl and mach */ | |
246 | /* Because negative quotients are calculated as one's complements, | |
247 | -0x80000000 divided by the smallest positive number of a number | |
248 | range (0x80, 0x8000, 0x800000) causes saturation in the one's | |
249 | complement representation, and we have to suppress the | |
250 | one's -> two's complement adjustment. Since positive numbers | |
251 | don't get such an adjustment, it's OK to also compute one's -> two's | |
252 | complement adjustment suppression for a dividend of 0. */ | |
253 | .balign 4 | |
254 | GLOBAL(sdivsi3_i4i): | |
255 | mov.l r6,@-r15 | |
256 | exts.b r5,r6 | |
257 | cmp/eq r5,r6 | |
258 | mov #-1,r1 | |
259 | bt/s LOCAL(div_le128) | |
260 | cmp/pz r4 | |
261 | addc r4,r1 | |
262 | exts.w r5,r6 | |
263 | cmp/eq r5,r6 | |
264 | mov #-7,r0 | |
265 | bf/s LOCAL(div_ge32k) | |
266 | cmp/hi r1,r4 ! copy sign bit of r4 into T | |
267 | rotcr r1 | |
268 | shll16 r6 ! 7 cycles up to here | |
269 | shad r0,r1 | |
270 | div0s r5,r4 | |
271 | div1 r6,r1 | |
272 | mov.l r7,@-r15 | |
273 | div1 r6,r1 | |
274 | mov r4,r0 ! re-compute adjusted dividend | |
275 | div1 r6,r1 | |
276 | mov #-31,r7 | |
277 | div1 r6,r1 | |
278 | shad r7,r0 | |
279 | div1 r6,r1 | |
280 | add r4,r0 ! adjusted dividend | |
281 | div1 r6,r1 | |
282 | mov.l r8,@-r15 | |
283 | div1 r6,r1 | |
284 | swap.w r4,r8 ! detect special case r4 = 0x80000000, r5 = 0x80 | |
285 | div1 r6,r1 | |
286 | swap.b r8,r8 | |
287 | xor r1,r0 ! xor dividend with result lsb | |
288 | div1 r6,r1 | |
289 | div1 r6,r1 | |
290 | or r5,r8 | |
291 | div1 r6,r1 | |
292 | add #-0x80,r8 ! r8 is 0 iff there is a match | |
293 | div1 r6,r1 | |
294 | swap.w r8,r7 ! or upper 16 bits... | |
295 | div1 r6,r1 | |
296 | or r7,r8 !...into lower 16 bits | |
297 | div1 r6,r1 | |
298 | extu.w r8,r8 | |
299 | div1 r6,r1 | |
300 | extu.b r0,r7 | |
301 | div1 r6,r1 | |
302 | shll8 r7 | |
303 | exts.w r1,r0 | |
304 | xor r7,r1 ! replace lsb of result with lsb of dividend | |
305 | div1 r6,r1 | |
306 | neg r8,r8 ! upper 16 bits of r8 are now 0xffff iff we want end adjm. | |
307 | div1 r6,r1 | |
308 | and r0,r8 | |
309 | div1 r6,r1 | |
310 | swap.w r8,r7 | |
311 | div1 r6,r1 | |
312 | mov.l @r15+,r8 ! 58 insns, 29 cycles up to here | |
313 | LOCAL(div_end): | |
314 | div1 r6,r1 | |
315 | shll8 r0 | |
316 | div1 r6,r1 | |
317 | exts.w r7,r7 | |
318 | div1 r6,r1 | |
319 | add r0,r0 | |
320 | div1 r6,r1 | |
321 | sub r7,r0 | |
322 | extu.b r1,r1 | |
323 | mov.l @r15+,r7 | |
324 | rotcl r1 | |
325 | mov.l @r15+,r6 | |
326 | rts | |
327 | add r1,r0 | |
328 | ||
329 | .balign 4 | |
330 | LOCAL(udiv_le128): ! 4 cycles up to here (or 7 for mispredict) | |
331 | mova LOCAL(div_table_inv),r0 | |
332 | shll2 r6 | |
333 | mov.l @(r0,r6),r1 | |
334 | mova LOCAL(div_table_clz),r0 | |
335 | lds r4,mach | |
336 | ! | |
337 | ! | |
338 | ! | |
339 | tst r1,r1 | |
340 | ! | |
341 | bt 0f | |
342 | dmulu.l r1,r4 | |
343 | 0: mov.b @(r0,r5),r1 | |
344 | clrt | |
345 | ! | |
346 | ! | |
347 | sts mach,r0 | |
348 | addc r4,r0 | |
349 | rotcr r0 | |
350 | mov.l @r15+,r6 | |
351 | rts | |
352 | shld r1,r0 | |
353 | ||
354 | .balign 4 | |
355 | LOCAL(div_le128): ! 3 cycles up to here (or 6 for mispredict) | |
356 | mova LOCAL(div_table_inv),r0 | |
357 | shll2 r6 | |
358 | mov.l @(r0,r6),r1 | |
359 | mova LOCAL(div_table_clz),r0 | |
360 | neg r4,r6 | |
361 | bf 0f | |
362 | mov r4,r6 | |
363 | 0: lds r6,mach | |
364 | tst r1,r1 | |
365 | bt 0f | |
366 | dmulu.l r1,r6 | |
367 | 0: div0s r4,r5 | |
368 | mov.b @(r0,r5),r1 | |
369 | bt/s LOCAL(le128_neg) | |
370 | clrt | |
371 | ! | |
372 | sts mach,r0 | |
373 | addc r6,r0 | |
374 | rotcr r0 | |
375 | mov.l @r15+,r6 | |
376 | rts | |
377 | shld r1,r0 | |
378 | ||
379 | /* Could trap divide by zero for the cost of one cycle more mispredict penalty: | |
380 | ... | |
381 | dmulu.l r1,r6 | |
382 | 0: div0s r4,r5 | |
383 | bt/s LOCAL(le128_neg) | |
384 | tst r5,r5 | |
385 | bt LOCAL(div_by_zero) | |
386 | mov.b @(r0,r5),r1 | |
387 | sts mach,r0 | |
388 | addc r6,r0 | |
389 | ... | |
390 | LOCAL(div_by_zero): | |
391 | trapa # | |
392 | .balign 4 | |
393 | LOCAL(le128_neg): | |
394 | bt LOCAL(div_by_zero) | |
395 | mov.b @(r0,r5),r1 | |
396 | sts mach,r0 | |
397 | addc r6,r0 | |
398 | ... */ | |
399 | ||
400 | .balign 4 | |
401 | LOCAL(le128_neg): | |
402 | sts mach,r0 | |
403 | addc r6,r0 | |
404 | rotcr r0 | |
405 | mov.l @r15+,r6 | |
406 | shad r1,r0 | |
407 | rts | |
408 | neg r0,r0 | |
409 | ENDFUNC(GLOBAL(udivsi3_i4i)) | |
410 | ENDFUNC(GLOBAL(sdivsi3_i4i)) | |
411 | ||
412 | /* This table has been generated by divtab-sh4.c. */ | |
413 | .balign 4 | |
414 | .byte -7 | |
415 | .byte -6 | |
416 | .byte -6 | |
417 | .byte -6 | |
418 | .byte -6 | |
419 | .byte -6 | |
420 | .byte -6 | |
421 | .byte -6 | |
422 | .byte -6 | |
423 | .byte -6 | |
424 | .byte -6 | |
425 | .byte -6 | |
426 | .byte -6 | |
427 | .byte -6 | |
428 | .byte -6 | |
429 | .byte -6 | |
430 | .byte -6 | |
431 | .byte -6 | |
432 | .byte -6 | |
433 | .byte -6 | |
434 | .byte -6 | |
435 | .byte -6 | |
436 | .byte -6 | |
437 | .byte -6 | |
438 | .byte -6 | |
439 | .byte -6 | |
440 | .byte -6 | |
441 | .byte -6 | |
442 | .byte -6 | |
443 | .byte -6 | |
444 | .byte -6 | |
445 | .byte -6 | |
446 | .byte -6 | |
447 | .byte -6 | |
448 | .byte -6 | |
449 | .byte -6 | |
450 | .byte -6 | |
451 | .byte -6 | |
452 | .byte -6 | |
453 | .byte -6 | |
454 | .byte -6 | |
455 | .byte -6 | |
456 | .byte -6 | |
457 | .byte -6 | |
458 | .byte -6 | |
459 | .byte -6 | |
460 | .byte -6 | |
461 | .byte -6 | |
462 | .byte -6 | |
463 | .byte -6 | |
464 | .byte -6 | |
465 | .byte -6 | |
466 | .byte -6 | |
467 | .byte -6 | |
468 | .byte -6 | |
469 | .byte -6 | |
470 | .byte -6 | |
471 | .byte -6 | |
472 | .byte -6 | |
473 | .byte -6 | |
474 | .byte -6 | |
475 | .byte -6 | |
476 | .byte -6 | |
477 | .byte -6 | |
478 | .byte -6 | |
479 | .byte -5 | |
480 | .byte -5 | |
481 | .byte -5 | |
482 | .byte -5 | |
483 | .byte -5 | |
484 | .byte -5 | |
485 | .byte -5 | |
486 | .byte -5 | |
487 | .byte -5 | |
488 | .byte -5 | |
489 | .byte -5 | |
490 | .byte -5 | |
491 | .byte -5 | |
492 | .byte -5 | |
493 | .byte -5 | |
494 | .byte -5 | |
495 | .byte -5 | |
496 | .byte -5 | |
497 | .byte -5 | |
498 | .byte -5 | |
499 | .byte -5 | |
500 | .byte -5 | |
501 | .byte -5 | |
502 | .byte -5 | |
503 | .byte -5 | |
504 | .byte -5 | |
505 | .byte -5 | |
506 | .byte -5 | |
507 | .byte -5 | |
508 | .byte -5 | |
509 | .byte -5 | |
510 | .byte -5 | |
511 | .byte -4 | |
512 | .byte -4 | |
513 | .byte -4 | |
514 | .byte -4 | |
515 | .byte -4 | |
516 | .byte -4 | |
517 | .byte -4 | |
518 | .byte -4 | |
519 | .byte -4 | |
520 | .byte -4 | |
521 | .byte -4 | |
522 | .byte -4 | |
523 | .byte -4 | |
524 | .byte -4 | |
525 | .byte -4 | |
526 | .byte -4 | |
527 | .byte -3 | |
528 | .byte -3 | |
529 | .byte -3 | |
530 | .byte -3 | |
531 | .byte -3 | |
532 | .byte -3 | |
533 | .byte -3 | |
534 | .byte -3 | |
535 | .byte -2 | |
536 | .byte -2 | |
537 | .byte -2 | |
538 | .byte -2 | |
539 | .byte -1 | |
540 | .byte -1 | |
541 | .byte 0 | |
542 | LOCAL(div_table_clz): | |
543 | .byte 0 | |
544 | .byte 0 | |
545 | .byte -1 | |
546 | .byte -1 | |
547 | .byte -2 | |
548 | .byte -2 | |
549 | .byte -2 | |
550 | .byte -2 | |
551 | .byte -3 | |
552 | .byte -3 | |
553 | .byte -3 | |
554 | .byte -3 | |
555 | .byte -3 | |
556 | .byte -3 | |
557 | .byte -3 | |
558 | .byte -3 | |
559 | .byte -4 | |
560 | .byte -4 | |
561 | .byte -4 | |
562 | .byte -4 | |
563 | .byte -4 | |
564 | .byte -4 | |
565 | .byte -4 | |
566 | .byte -4 | |
567 | .byte -4 | |
568 | .byte -4 | |
569 | .byte -4 | |
570 | .byte -4 | |
571 | .byte -4 | |
572 | .byte -4 | |
573 | .byte -4 | |
574 | .byte -4 | |
575 | .byte -5 | |
576 | .byte -5 | |
577 | .byte -5 | |
578 | .byte -5 | |
579 | .byte -5 | |
580 | .byte -5 | |
581 | .byte -5 | |
582 | .byte -5 | |
583 | .byte -5 | |
584 | .byte -5 | |
585 | .byte -5 | |
586 | .byte -5 | |
587 | .byte -5 | |
588 | .byte -5 | |
589 | .byte -5 | |
590 | .byte -5 | |
591 | .byte -5 | |
592 | .byte -5 | |
593 | .byte -5 | |
594 | .byte -5 | |
595 | .byte -5 | |
596 | .byte -5 | |
597 | .byte -5 | |
598 | .byte -5 | |
599 | .byte -5 | |
600 | .byte -5 | |
601 | .byte -5 | |
602 | .byte -5 | |
603 | .byte -5 | |
604 | .byte -5 | |
605 | .byte -5 | |
606 | .byte -5 | |
607 | .byte -6 | |
608 | .byte -6 | |
609 | .byte -6 | |
610 | .byte -6 | |
611 | .byte -6 | |
612 | .byte -6 | |
613 | .byte -6 | |
614 | .byte -6 | |
615 | .byte -6 | |
616 | .byte -6 | |
617 | .byte -6 | |
618 | .byte -6 | |
619 | .byte -6 | |
620 | .byte -6 | |
621 | .byte -6 | |
622 | .byte -6 | |
623 | .byte -6 | |
624 | .byte -6 | |
625 | .byte -6 | |
626 | .byte -6 | |
627 | .byte -6 | |
628 | .byte -6 | |
629 | .byte -6 | |
630 | .byte -6 | |
631 | .byte -6 | |
632 | .byte -6 | |
633 | .byte -6 | |
634 | .byte -6 | |
635 | .byte -6 | |
636 | .byte -6 | |
637 | .byte -6 | |
638 | .byte -6 | |
639 | .byte -6 | |
640 | .byte -6 | |
641 | .byte -6 | |
642 | .byte -6 | |
643 | .byte -6 | |
644 | .byte -6 | |
645 | .byte -6 | |
646 | .byte -6 | |
647 | .byte -6 | |
648 | .byte -6 | |
649 | .byte -6 | |
650 | .byte -6 | |
651 | .byte -6 | |
652 | .byte -6 | |
653 | .byte -6 | |
654 | .byte -6 | |
655 | .byte -6 | |
656 | .byte -6 | |
657 | .byte -6 | |
658 | .byte -6 | |
659 | .byte -6 | |
660 | .byte -6 | |
661 | .byte -6 | |
662 | .byte -6 | |
663 | .byte -6 | |
664 | .byte -6 | |
665 | .byte -6 | |
666 | .byte -6 | |
667 | .byte -6 | |
668 | .byte -6 | |
669 | .byte -6 | |
670 | .byte -6 | |
671 | /* 1/-128 .. 1/127, normalized. There is an implicit leading 1 in bit 32, | |
672 | or in bit 33 for powers of two. */ | |
673 | .balign 4 | |
674 | .long 0x0 | |
675 | .long 0x2040811 | |
676 | .long 0x4104105 | |
677 | .long 0x624DD30 | |
678 | .long 0x8421085 | |
679 | .long 0xA6810A7 | |
680 | .long 0xC9714FC | |
681 | .long 0xECF56BF | |
682 | .long 0x11111112 | |
683 | .long 0x135C8114 | |
684 | .long 0x15B1E5F8 | |
685 | .long 0x18118119 | |
686 | .long 0x1A7B9612 | |
687 | .long 0x1CF06ADB | |
688 | .long 0x1F7047DD | |
689 | .long 0x21FB7813 | |
690 | .long 0x24924925 | |
691 | .long 0x27350B89 | |
692 | .long 0x29E4129F | |
693 | .long 0x2C9FB4D9 | |
694 | .long 0x2F684BDB | |
695 | .long 0x323E34A3 | |
696 | .long 0x3521CFB3 | |
697 | .long 0x38138139 | |
698 | .long 0x3B13B13C | |
699 | .long 0x3E22CBCF | |
700 | .long 0x41414142 | |
701 | .long 0x446F8657 | |
702 | .long 0x47AE147B | |
703 | .long 0x4AFD6A06 | |
704 | .long 0x4E5E0A73 | |
705 | .long 0x51D07EAF | |
706 | .long 0x55555556 | |
707 | .long 0x58ED2309 | |
708 | .long 0x5C9882BA | |
709 | .long 0x60581606 | |
710 | .long 0x642C8591 | |
711 | .long 0x68168169 | |
712 | .long 0x6C16C16D | |
713 | .long 0x702E05C1 | |
714 | .long 0x745D1746 | |
715 | .long 0x78A4C818 | |
716 | .long 0x7D05F418 | |
717 | .long 0x81818182 | |
718 | .long 0x86186187 | |
719 | .long 0x8ACB90F7 | |
720 | .long 0x8F9C18FA | |
721 | .long 0x948B0FCE | |
722 | .long 0x9999999A | |
723 | .long 0x9EC8E952 | |
724 | .long 0xA41A41A5 | |
725 | .long 0xA98EF607 | |
726 | .long 0xAF286BCB | |
727 | .long 0xB4E81B4F | |
728 | .long 0xBACF914D | |
729 | .long 0xC0E07039 | |
730 | .long 0xC71C71C8 | |
731 | .long 0xCD856891 | |
732 | .long 0xD41D41D5 | |
733 | .long 0xDAE6076C | |
734 | .long 0xE1E1E1E2 | |
735 | .long 0xE9131AC0 | |
736 | .long 0xF07C1F08 | |
737 | .long 0xF81F81F9 | |
738 | .long 0x0 | |
739 | .long 0x4104105 | |
740 | .long 0x8421085 | |
741 | .long 0xC9714FC | |
742 | .long 0x11111112 | |
743 | .long 0x15B1E5F8 | |
744 | .long 0x1A7B9612 | |
745 | .long 0x1F7047DD | |
746 | .long 0x24924925 | |
747 | .long 0x29E4129F | |
748 | .long 0x2F684BDB | |
749 | .long 0x3521CFB3 | |
750 | .long 0x3B13B13C | |
751 | .long 0x41414142 | |
752 | .long 0x47AE147B | |
753 | .long 0x4E5E0A73 | |
754 | .long 0x55555556 | |
755 | .long 0x5C9882BA | |
756 | .long 0x642C8591 | |
757 | .long 0x6C16C16D | |
758 | .long 0x745D1746 | |
759 | .long 0x7D05F418 | |
760 | .long 0x86186187 | |
761 | .long 0x8F9C18FA | |
762 | .long 0x9999999A | |
763 | .long 0xA41A41A5 | |
764 | .long 0xAF286BCB | |
765 | .long 0xBACF914D | |
766 | .long 0xC71C71C8 | |
767 | .long 0xD41D41D5 | |
768 | .long 0xE1E1E1E2 | |
769 | .long 0xF07C1F08 | |
770 | .long 0x0 | |
771 | .long 0x8421085 | |
772 | .long 0x11111112 | |
773 | .long 0x1A7B9612 | |
774 | .long 0x24924925 | |
775 | .long 0x2F684BDB | |
776 | .long 0x3B13B13C | |
777 | .long 0x47AE147B | |
778 | .long 0x55555556 | |
779 | .long 0x642C8591 | |
780 | .long 0x745D1746 | |
781 | .long 0x86186187 | |
782 | .long 0x9999999A | |
783 | .long 0xAF286BCB | |
784 | .long 0xC71C71C8 | |
785 | .long 0xE1E1E1E2 | |
786 | .long 0x0 | |
787 | .long 0x11111112 | |
788 | .long 0x24924925 | |
789 | .long 0x3B13B13C | |
790 | .long 0x55555556 | |
791 | .long 0x745D1746 | |
792 | .long 0x9999999A | |
793 | .long 0xC71C71C8 | |
794 | .long 0x0 | |
795 | .long 0x24924925 | |
796 | .long 0x55555556 | |
797 | .long 0x9999999A | |
798 | .long 0x0 | |
799 | .long 0x55555556 | |
800 | .long 0x0 | |
801 | .long 0x0 | |
802 | LOCAL(div_table_inv): | |
803 | .long 0x0 | |
804 | .long 0x0 | |
805 | .long 0x0 | |
806 | .long 0x55555556 | |
807 | .long 0x0 | |
808 | .long 0x9999999A | |
809 | .long 0x55555556 | |
810 | .long 0x24924925 | |
811 | .long 0x0 | |
812 | .long 0xC71C71C8 | |
813 | .long 0x9999999A | |
814 | .long 0x745D1746 | |
815 | .long 0x55555556 | |
816 | .long 0x3B13B13C | |
817 | .long 0x24924925 | |
818 | .long 0x11111112 | |
819 | .long 0x0 | |
820 | .long 0xE1E1E1E2 | |
821 | .long 0xC71C71C8 | |
822 | .long 0xAF286BCB | |
823 | .long 0x9999999A | |
824 | .long 0x86186187 | |
825 | .long 0x745D1746 | |
826 | .long 0x642C8591 | |
827 | .long 0x55555556 | |
828 | .long 0x47AE147B | |
829 | .long 0x3B13B13C | |
830 | .long 0x2F684BDB | |
831 | .long 0x24924925 | |
832 | .long 0x1A7B9612 | |
833 | .long 0x11111112 | |
834 | .long 0x8421085 | |
835 | .long 0x0 | |
836 | .long 0xF07C1F08 | |
837 | .long 0xE1E1E1E2 | |
838 | .long 0xD41D41D5 | |
839 | .long 0xC71C71C8 | |
840 | .long 0xBACF914D | |
841 | .long 0xAF286BCB | |
842 | .long 0xA41A41A5 | |
843 | .long 0x9999999A | |
844 | .long 0x8F9C18FA | |
845 | .long 0x86186187 | |
846 | .long 0x7D05F418 | |
847 | .long 0x745D1746 | |
848 | .long 0x6C16C16D | |
849 | .long 0x642C8591 | |
850 | .long 0x5C9882BA | |
851 | .long 0x55555556 | |
852 | .long 0x4E5E0A73 | |
853 | .long 0x47AE147B | |
854 | .long 0x41414142 | |
855 | .long 0x3B13B13C | |
856 | .long 0x3521CFB3 | |
857 | .long 0x2F684BDB | |
858 | .long 0x29E4129F | |
859 | .long 0x24924925 | |
860 | .long 0x1F7047DD | |
861 | .long 0x1A7B9612 | |
862 | .long 0x15B1E5F8 | |
863 | .long 0x11111112 | |
864 | .long 0xC9714FC | |
865 | .long 0x8421085 | |
866 | .long 0x4104105 | |
867 | .long 0x0 | |
868 | .long 0xF81F81F9 | |
869 | .long 0xF07C1F08 | |
870 | .long 0xE9131AC0 | |
871 | .long 0xE1E1E1E2 | |
872 | .long 0xDAE6076C | |
873 | .long 0xD41D41D5 | |
874 | .long 0xCD856891 | |
875 | .long 0xC71C71C8 | |
876 | .long 0xC0E07039 | |
877 | .long 0xBACF914D | |
878 | .long 0xB4E81B4F | |
879 | .long 0xAF286BCB | |
880 | .long 0xA98EF607 | |
881 | .long 0xA41A41A5 | |
882 | .long 0x9EC8E952 | |
883 | .long 0x9999999A | |
884 | .long 0x948B0FCE | |
885 | .long 0x8F9C18FA | |
886 | .long 0x8ACB90F7 | |
887 | .long 0x86186187 | |
888 | .long 0x81818182 | |
889 | .long 0x7D05F418 | |
890 | .long 0x78A4C818 | |
891 | .long 0x745D1746 | |
892 | .long 0x702E05C1 | |
893 | .long 0x6C16C16D | |
894 | .long 0x68168169 | |
895 | .long 0x642C8591 | |
896 | .long 0x60581606 | |
897 | .long 0x5C9882BA | |
898 | .long 0x58ED2309 | |
899 | .long 0x55555556 | |
900 | .long 0x51D07EAF | |
901 | .long 0x4E5E0A73 | |
902 | .long 0x4AFD6A06 | |
903 | .long 0x47AE147B | |
904 | .long 0x446F8657 | |
905 | .long 0x41414142 | |
906 | .long 0x3E22CBCF | |
907 | .long 0x3B13B13C | |
908 | .long 0x38138139 | |
909 | .long 0x3521CFB3 | |
910 | .long 0x323E34A3 | |
911 | .long 0x2F684BDB | |
912 | .long 0x2C9FB4D9 | |
913 | .long 0x29E4129F | |
914 | .long 0x27350B89 | |
915 | .long 0x24924925 | |
916 | .long 0x21FB7813 | |
917 | .long 0x1F7047DD | |
918 | .long 0x1CF06ADB | |
919 | .long 0x1A7B9612 | |
920 | .long 0x18118119 | |
921 | .long 0x15B1E5F8 | |
922 | .long 0x135C8114 | |
923 | .long 0x11111112 | |
924 | .long 0xECF56BF | |
925 | .long 0xC9714FC | |
926 | .long 0xA6810A7 | |
927 | .long 0x8421085 | |
928 | .long 0x624DD30 | |
929 | .long 0x4104105 | |
930 | .long 0x2040811 | |
931 | /* maximum error: 0.987342 scaled: 0.921875*/ | |
932 | ||
933 | #endif /* SH3 / SH4 */ | |
934 | ||
935 | #endif /* L_div_table */ | |
7945be3f | 936 | #endif /* !__SHMEDIA__ */ |