1/* Copyright (C) 2004-2020 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#ifdef L_div_table 29#if defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__) 30/* This code used shld, thus is not suitable for SH1 / SH2. */ 31 32/* Signed / unsigned division without use of FPU, optimized for SH4-300. 33 Uses a lookup table for divisors in the range -128 .. +127, and 34 div1 with case distinction for larger divisors in three more ranges. 35 The code is lumped together with the table to allow the use of mova. */ 36#ifdef __LITTLE_ENDIAN__ 37#define L_LSB 0 38#define L_LSWMSB 1 39#define L_MSWLSB 2 40#else 41#define L_LSB 3 42#define L_LSWMSB 2 43#define L_MSWLSB 1 44#endif 45 46 .global GLOBAL(udivsi3_i4i) 47 .global GLOBAL(sdivsi3_i4i) 48 FUNC(GLOBAL(udivsi3_i4i)) 49 FUNC(GLOBAL(sdivsi3_i4i)) 50 51 .balign 4 52LOCAL(div_ge8m): ! 10 cycles up to here 53 rotcr r1 ! signed shift must use original sign from r4 54 div0s r5,r4 55 mov #24,r7 56 shld r7,r6 57 shad r0,r1 58 rotcl r6 59 div1 r5,r1 60 swap.w r5,r0 ! detect -0x80000000 : 0x800000 61 rotcl r6 62 swap.w r4,r7 63 div1 r5,r1 64 swap.b r7,r7 65 rotcl r6 66 or r7,r0 67 div1 r5,r1 68 swap.w r0,r7 69 rotcl r6 70 or r7,r0 71 div1 r5,r1 72 add #-0x80,r0 73 rotcl r6 74 extu.w r0,r0 75 div1 r5,r1 76 neg r0,r0 77 rotcl r6 78 swap.w r0,r0 79 div1 r5,r1 80 mov.l @r15+,r7 81 and r6,r0 82 rotcl r6 83 div1 r5,r1 84 shll2 r0 85 rotcl r6 86 exts.b r0,r0 87 div1 r5,r1 88 swap.w r0,r0 89 exts.w r0,r1 90 exts.b r6,r0 91 mov.l @r15+,r6 92 rotcl r0 93 rts 94 sub r1,r0 95 ! 31 cycles up to here 96 97 .balign 4 98LOCAL(udiv_ge64k): ! 3 cycles up to here 99 mov r4,r0 100 shlr8 r0 101 div0u 102 cmp/hi r0,r5 103 bt LOCAL(udiv_r8) 104 mov.l r5,@-r15 105 shll8 r5 106 ! 7 cycles up to here 107 .rept 8 108 div1 r5,r0 109 .endr 110 extu.b r4,r1 ! 15 cycles up to here 111 extu.b r0,r6 112 xor r1,r0 113 xor r6,r0 114 swap.b r6,r6 115 .rept 8 116 div1 r5,r0 117 .endr ! 25 cycles up to here 118 extu.b r0,r0 119 mov.l @r15+,r5 120 or r6,r0 121 mov.l @r15+,r6 122 rts 123 rotcl r0 ! 28 cycles up to here 124 125 .balign 4 126LOCAL(udiv_r8): ! 6 cycles up to here 127 mov.l r4,@-r15 128 shll16 r4 129 shll8 r4 130 ! 131 shll r4 132 mov r0,r1 133 div1 r5,r1 134 mov r4,r0 135 rotcl r0 136 mov.l @r15+,r4 137 div1 r5,r1 138 ! 12 cycles up to here 139 .rept 6 140 rotcl r0; div1 r5,r1 141 .endr 142 mov.l @r15+,r6 ! 24 cycles up to here 143 rts 144 rotcl r0 145 146 .balign 4 147LOCAL(div_ge32k): ! 6 cycles up to here 148 mov.l r7,@-r15 149 swap.w r5,r6 150 exts.b r6,r7 151 exts.w r6,r6 152 cmp/eq r6,r7 153 extu.b r1,r6 154 bf/s LOCAL(div_ge8m) 155 cmp/hi r1,r4 ! copy sign bit of r4 into T 156 rotcr r1 ! signed shift must use original sign from r4 157 div0s r5,r4 158 shad r0,r1 159 shll8 r5 160 div1 r5,r1 161 mov r5,r7 ! detect r4 == 0x80000000 && r5 == 0x8000(00) 162 div1 r5,r1 163 shlr8 r7 164 div1 r5,r1 165 swap.w r4,r0 166 div1 r5,r1 167 swap.b r0,r0 168 div1 r5,r1 169 or r0,r7 170 div1 r5,r1 171 add #-80,r7 172 div1 r5,r1 173 swap.w r7,r0 174 div1 r5,r1 175 or r0,r7 176 extu.b r1,r0 177 xor r6,r1 178 xor r0,r1 179 exts.b r0,r0 180 div1 r5,r1 181 extu.w r7,r7 182 div1 r5,r1 183 neg r7,r7 ! upper 16 bit of r7 == 0 if r4 == 0x80000000 && r5 == 0x8000 184 div1 r5,r1 185 and r0,r7 186 div1 r5,r1 187 swap.w r7,r7 ! 26 cycles up to here. 188 div1 r5,r1 189 shll8 r0 190 div1 r5,r1 191 exts.w r7,r7 192 div1 r5,r1 193 add r0,r0 194 div1 r5,r1 195 sub r7,r0 196 extu.b r1,r1 197 mov.l @r15+,r7 198 rotcl r1 199 mov.l @r15+,r6 200 add r1,r0 201 mov #-8,r1 202 rts 203 shad r1,r5 ! 34 cycles up to here 204 205 .balign 4 206GLOBAL(udivsi3_i4i): 207 mov.l r6,@-r15 208 extu.w r5,r6 209 cmp/eq r5,r6 210 mov #0x7f,r0 211 bf LOCAL(udiv_ge64k) 212 cmp/hi r0,r5 213 bf LOCAL(udiv_le128) 214 mov r4,r1 215 shlr8 r1 216 div0u 217 shlr r1 218 shll16 r6 219 div1 r6,r1 220 extu.b r4,r0 ! 7 cycles up to here 221 .rept 8 222 div1 r6,r1 223 .endr ! 15 cycles up to here 224 xor r1,r0 ! xor dividend with result lsb 225 .rept 6 226 div1 r6,r1 227 .endr 228 mov.l r7,@-r15 ! 21 cycles up to here 229 div1 r6,r1 230 extu.b r0,r7 231 div1 r6,r1 232 shll8 r7 233 extu.w r1,r0 234 xor r7,r1 ! replace lsb of result with lsb of dividend 235 div1 r6,r1 236 mov #0,r7 237 div1 r6,r1 238 ! 239 div1 r6,r1 240 bra LOCAL(div_end) 241 div1 r6,r1 ! 28 cycles up to here 242 243 /* This is link-compatible with a GLOBAL(sdivsi3) call, 244 but we effectively clobber only r1, macl and mach */ 245 /* Because negative quotients are calculated as one's complements, 246 -0x80000000 divided by the smallest positive number of a number 247 range (0x80, 0x8000, 0x800000) causes saturation in the one's 248 complement representation, and we have to suppress the 249 one's -> two's complement adjustment. Since positive numbers 250 don't get such an adjustment, it's OK to also compute one's -> two's 251 complement adjustment suppression for a dividend of 0. */ 252 .balign 4 253GLOBAL(sdivsi3_i4i): 254 mov.l r6,@-r15 255 exts.b r5,r6 256 cmp/eq r5,r6 257 mov #-1,r1 258 bt/s LOCAL(div_le128) 259 cmp/pz r4 260 addc r4,r1 261 exts.w r5,r6 262 cmp/eq r5,r6 263 mov #-7,r0 264 bf/s LOCAL(div_ge32k) 265 cmp/hi r1,r4 ! copy sign bit of r4 into T 266 rotcr r1 267 shll16 r6 ! 7 cycles up to here 268 shad r0,r1 269 div0s r5,r4 270 div1 r6,r1 271 mov.l r7,@-r15 272 div1 r6,r1 273 mov r4,r0 ! re-compute adjusted dividend 274 div1 r6,r1 275 mov #-31,r7 276 div1 r6,r1 277 shad r7,r0 278 div1 r6,r1 279 add r4,r0 ! adjusted dividend 280 div1 r6,r1 281 mov.l r8,@-r15 282 div1 r6,r1 283 swap.w r4,r8 ! detect special case r4 = 0x80000000, r5 = 0x80 284 div1 r6,r1 285 swap.b r8,r8 286 xor r1,r0 ! xor dividend with result lsb 287 div1 r6,r1 288 div1 r6,r1 289 or r5,r8 290 div1 r6,r1 291 add #-0x80,r8 ! r8 is 0 iff there is a match 292 div1 r6,r1 293 swap.w r8,r7 ! or upper 16 bits... 294 div1 r6,r1 295 or r7,r8 !...into lower 16 bits 296 div1 r6,r1 297 extu.w r8,r8 298 div1 r6,r1 299 extu.b r0,r7 300 div1 r6,r1 301 shll8 r7 302 exts.w r1,r0 303 xor r7,r1 ! replace lsb of result with lsb of dividend 304 div1 r6,r1 305 neg r8,r8 ! upper 16 bits of r8 are now 0xffff iff we want end adjm. 306 div1 r6,r1 307 and r0,r8 308 div1 r6,r1 309 swap.w r8,r7 310 div1 r6,r1 311 mov.l @r15+,r8 ! 58 insns, 29 cycles up to here 312LOCAL(div_end): 313 div1 r6,r1 314 shll8 r0 315 div1 r6,r1 316 exts.w r7,r7 317 div1 r6,r1 318 add r0,r0 319 div1 r6,r1 320 sub r7,r0 321 extu.b r1,r1 322 mov.l @r15+,r7 323 rotcl r1 324 mov.l @r15+,r6 325 rts 326 add r1,r0 327 328 .balign 4 329LOCAL(udiv_le128): ! 4 cycles up to here (or 7 for mispredict) 330 mova LOCAL(div_table_inv),r0 331 shll2 r6 332 mov.l @(r0,r6),r1 333 mova LOCAL(div_table_clz),r0 334 lds r4,mach 335 ! 336 ! 337 ! 338 tst r1,r1 339 ! 340 bt 0f 341 dmulu.l r1,r4 3420: mov.b @(r0,r5),r1 343 clrt 344 ! 345 ! 346 sts mach,r0 347 addc r4,r0 348 rotcr r0 349 mov.l @r15+,r6 350 rts 351 shld r1,r0 352 353 .balign 4 354LOCAL(div_le128): ! 3 cycles up to here (or 6 for mispredict) 355 mova LOCAL(div_table_inv),r0 356 shll2 r6 357 mov.l @(r0,r6),r1 358 mova LOCAL(div_table_clz),r0 359 neg r4,r6 360 bf 0f 361 mov r4,r6 3620: lds r6,mach 363 tst r1,r1 364 bt 0f 365 dmulu.l r1,r6 3660: div0s r4,r5 367 mov.b @(r0,r5),r1 368 bt/s LOCAL(le128_neg) 369 clrt 370 ! 371 sts mach,r0 372 addc r6,r0 373 rotcr r0 374 mov.l @r15+,r6 375 rts 376 shld r1,r0 377 378/* Could trap divide by zero for the cost of one cycle more mispredict penalty: 379... 380 dmulu.l r1,r6 3810: div0s r4,r5 382 bt/s LOCAL(le128_neg) 383 tst r5,r5 384 bt LOCAL(div_by_zero) 385 mov.b @(r0,r5),r1 386 sts mach,r0 387 addc r6,r0 388... 389LOCAL(div_by_zero): 390 trapa # 391 .balign 4 392LOCAL(le128_neg): 393 bt LOCAL(div_by_zero) 394 mov.b @(r0,r5),r1 395 sts mach,r0 396 addc r6,r0 397... */ 398 399 .balign 4 400LOCAL(le128_neg): 401 sts mach,r0 402 addc r6,r0 403 rotcr r0 404 mov.l @r15+,r6 405 shad r1,r0 406 rts 407 neg r0,r0 408 ENDFUNC(GLOBAL(udivsi3_i4i)) 409 ENDFUNC(GLOBAL(sdivsi3_i4i)) 410 411/* This table has been generated by divtab-sh4.c. */ 412 .balign 4 413 .byte -7 414 .byte -6 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 -5 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 -4 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 -3 527 .byte -3 528 .byte -3 529 .byte -3 530 .byte -3 531 .byte -3 532 .byte -3 533 .byte -3 534 .byte -2 535 .byte -2 536 .byte -2 537 .byte -2 538 .byte -1 539 .byte -1 540 .byte 0 541LOCAL(div_table_clz): 542 .byte 0 543 .byte 0 544 .byte -1 545 .byte -1 546 .byte -2 547 .byte -2 548 .byte -2 549 .byte -2 550 .byte -3 551 .byte -3 552 .byte -3 553 .byte -3 554 .byte -3 555 .byte -3 556 .byte -3 557 .byte -3 558 .byte -4 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 -5 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 -6 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/* 1/-128 .. 1/127, normalized. There is an implicit leading 1 in bit 32, 671 or in bit 33 for powers of two. */ 672 .balign 4 673 .long 0x0 674 .long 0x2040811 675 .long 0x4104105 676 .long 0x624DD30 677 .long 0x8421085 678 .long 0xA6810A7 679 .long 0xC9714FC 680 .long 0xECF56BF 681 .long 0x11111112 682 .long 0x135C8114 683 .long 0x15B1E5F8 684 .long 0x18118119 685 .long 0x1A7B9612 686 .long 0x1CF06ADB 687 .long 0x1F7047DD 688 .long 0x21FB7813 689 .long 0x24924925 690 .long 0x27350B89 691 .long 0x29E4129F 692 .long 0x2C9FB4D9 693 .long 0x2F684BDB 694 .long 0x323E34A3 695 .long 0x3521CFB3 696 .long 0x38138139 697 .long 0x3B13B13C 698 .long 0x3E22CBCF 699 .long 0x41414142 700 .long 0x446F8657 701 .long 0x47AE147B 702 .long 0x4AFD6A06 703 .long 0x4E5E0A73 704 .long 0x51D07EAF 705 .long 0x55555556 706 .long 0x58ED2309 707 .long 0x5C9882BA 708 .long 0x60581606 709 .long 0x642C8591 710 .long 0x68168169 711 .long 0x6C16C16D 712 .long 0x702E05C1 713 .long 0x745D1746 714 .long 0x78A4C818 715 .long 0x7D05F418 716 .long 0x81818182 717 .long 0x86186187 718 .long 0x8ACB90F7 719 .long 0x8F9C18FA 720 .long 0x948B0FCE 721 .long 0x9999999A 722 .long 0x9EC8E952 723 .long 0xA41A41A5 724 .long 0xA98EF607 725 .long 0xAF286BCB 726 .long 0xB4E81B4F 727 .long 0xBACF914D 728 .long 0xC0E07039 729 .long 0xC71C71C8 730 .long 0xCD856891 731 .long 0xD41D41D5 732 .long 0xDAE6076C 733 .long 0xE1E1E1E2 734 .long 0xE9131AC0 735 .long 0xF07C1F08 736 .long 0xF81F81F9 737 .long 0x0 738 .long 0x4104105 739 .long 0x8421085 740 .long 0xC9714FC 741 .long 0x11111112 742 .long 0x15B1E5F8 743 .long 0x1A7B9612 744 .long 0x1F7047DD 745 .long 0x24924925 746 .long 0x29E4129F 747 .long 0x2F684BDB 748 .long 0x3521CFB3 749 .long 0x3B13B13C 750 .long 0x41414142 751 .long 0x47AE147B 752 .long 0x4E5E0A73 753 .long 0x55555556 754 .long 0x5C9882BA 755 .long 0x642C8591 756 .long 0x6C16C16D 757 .long 0x745D1746 758 .long 0x7D05F418 759 .long 0x86186187 760 .long 0x8F9C18FA 761 .long 0x9999999A 762 .long 0xA41A41A5 763 .long 0xAF286BCB 764 .long 0xBACF914D 765 .long 0xC71C71C8 766 .long 0xD41D41D5 767 .long 0xE1E1E1E2 768 .long 0xF07C1F08 769 .long 0x0 770 .long 0x8421085 771 .long 0x11111112 772 .long 0x1A7B9612 773 .long 0x24924925 774 .long 0x2F684BDB 775 .long 0x3B13B13C 776 .long 0x47AE147B 777 .long 0x55555556 778 .long 0x642C8591 779 .long 0x745D1746 780 .long 0x86186187 781 .long 0x9999999A 782 .long 0xAF286BCB 783 .long 0xC71C71C8 784 .long 0xE1E1E1E2 785 .long 0x0 786 .long 0x11111112 787 .long 0x24924925 788 .long 0x3B13B13C 789 .long 0x55555556 790 .long 0x745D1746 791 .long 0x9999999A 792 .long 0xC71C71C8 793 .long 0x0 794 .long 0x24924925 795 .long 0x55555556 796 .long 0x9999999A 797 .long 0x0 798 .long 0x55555556 799 .long 0x0 800 .long 0x0 801LOCAL(div_table_inv): 802 .long 0x0 803 .long 0x0 804 .long 0x0 805 .long 0x55555556 806 .long 0x0 807 .long 0x9999999A 808 .long 0x55555556 809 .long 0x24924925 810 .long 0x0 811 .long 0xC71C71C8 812 .long 0x9999999A 813 .long 0x745D1746 814 .long 0x55555556 815 .long 0x3B13B13C 816 .long 0x24924925 817 .long 0x11111112 818 .long 0x0 819 .long 0xE1E1E1E2 820 .long 0xC71C71C8 821 .long 0xAF286BCB 822 .long 0x9999999A 823 .long 0x86186187 824 .long 0x745D1746 825 .long 0x642C8591 826 .long 0x55555556 827 .long 0x47AE147B 828 .long 0x3B13B13C 829 .long 0x2F684BDB 830 .long 0x24924925 831 .long 0x1A7B9612 832 .long 0x11111112 833 .long 0x8421085 834 .long 0x0 835 .long 0xF07C1F08 836 .long 0xE1E1E1E2 837 .long 0xD41D41D5 838 .long 0xC71C71C8 839 .long 0xBACF914D 840 .long 0xAF286BCB 841 .long 0xA41A41A5 842 .long 0x9999999A 843 .long 0x8F9C18FA 844 .long 0x86186187 845 .long 0x7D05F418 846 .long 0x745D1746 847 .long 0x6C16C16D 848 .long 0x642C8591 849 .long 0x5C9882BA 850 .long 0x55555556 851 .long 0x4E5E0A73 852 .long 0x47AE147B 853 .long 0x41414142 854 .long 0x3B13B13C 855 .long 0x3521CFB3 856 .long 0x2F684BDB 857 .long 0x29E4129F 858 .long 0x24924925 859 .long 0x1F7047DD 860 .long 0x1A7B9612 861 .long 0x15B1E5F8 862 .long 0x11111112 863 .long 0xC9714FC 864 .long 0x8421085 865 .long 0x4104105 866 .long 0x0 867 .long 0xF81F81F9 868 .long 0xF07C1F08 869 .long 0xE9131AC0 870 .long 0xE1E1E1E2 871 .long 0xDAE6076C 872 .long 0xD41D41D5 873 .long 0xCD856891 874 .long 0xC71C71C8 875 .long 0xC0E07039 876 .long 0xBACF914D 877 .long 0xB4E81B4F 878 .long 0xAF286BCB 879 .long 0xA98EF607 880 .long 0xA41A41A5 881 .long 0x9EC8E952 882 .long 0x9999999A 883 .long 0x948B0FCE 884 .long 0x8F9C18FA 885 .long 0x8ACB90F7 886 .long 0x86186187 887 .long 0x81818182 888 .long 0x7D05F418 889 .long 0x78A4C818 890 .long 0x745D1746 891 .long 0x702E05C1 892 .long 0x6C16C16D 893 .long 0x68168169 894 .long 0x642C8591 895 .long 0x60581606 896 .long 0x5C9882BA 897 .long 0x58ED2309 898 .long 0x55555556 899 .long 0x51D07EAF 900 .long 0x4E5E0A73 901 .long 0x4AFD6A06 902 .long 0x47AE147B 903 .long 0x446F8657 904 .long 0x41414142 905 .long 0x3E22CBCF 906 .long 0x3B13B13C 907 .long 0x38138139 908 .long 0x3521CFB3 909 .long 0x323E34A3 910 .long 0x2F684BDB 911 .long 0x2C9FB4D9 912 .long 0x29E4129F 913 .long 0x27350B89 914 .long 0x24924925 915 .long 0x21FB7813 916 .long 0x1F7047DD 917 .long 0x1CF06ADB 918 .long 0x1A7B9612 919 .long 0x18118119 920 .long 0x15B1E5F8 921 .long 0x135C8114 922 .long 0x11111112 923 .long 0xECF56BF 924 .long 0xC9714FC 925 .long 0xA6810A7 926 .long 0x8421085 927 .long 0x624DD30 928 .long 0x4104105 929 .long 0x2040811 930 /* maximum error: 0.987342 scaled: 0.921875*/ 931 932#endif /* SH3 / SH4 */ 933 934#endif /* L_div_table */ 935