1/* Copyright (C) 2004-2015 Free Software Foundation, Inc. 2 3This file is free software; you can redistribute it and/or modify it 4under the terms of the GNU General Public License as published by the 5Free Software Foundation; either version 3, or (at your option) any 6later version. 7 8This file is distributed in the hope that it will be useful, but 9WITHOUT ANY WARRANTY; without even the implied warranty of 10MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11General Public License for more details. 12 13Under Section 7 of GPL version 3, you are granted additional 14permissions described in the GCC Runtime Library Exception, version 153.1, as published by the Free Software Foundation. 16 17You should have received a copy of the GNU General Public License and 18a copy of the GCC Runtime Library Exception along with this program; 19see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 20<http://www.gnu.org/licenses/>. */ 21 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 28#if !__SHMEDIA__ 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 53LOCAL(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 99LOCAL(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 127LOCAL(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 148LOCAL(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 207GLOBAL(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 254GLOBAL(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 313LOCAL(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 330LOCAL(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 3430: 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 355LOCAL(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 3630: lds r6,mach 364 tst r1,r1 365 bt 0f 366 dmulu.l r1,r6 3670: 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 3820: 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... 390LOCAL(div_by_zero): 391 trapa # 392 .balign 4 393LOCAL(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 401LOCAL(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 542LOCAL(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 802LOCAL(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 */ 936#endif /* !__SHMEDIA__ */ 937