[BACK]Return to milli.S CVS log [TXT][DIR] Up to [local] / sys / lib / libkern / arch / hppa

Annotation of sys/lib/libkern/arch/hppa/milli.S, Revision 1.1.1.1

1.1       nbrk        1: ;      $OpenBSD: milli.S,v 1.5 2001/03/29 04:08:20 mickey Exp $
                      2: ;
                      3: ;  (c) Copyright 1986 HEWLETT-PACKARD COMPANY
                      4: ;
                      5: ;  To anyone who acknowledges that this file is provided "AS IS"
                      6: ;  without any express or implied warranty:
                      7: ;      permission to use, copy, modify, and distribute this file
                      8: ;  for any purpose is hereby granted without fee, provided that
                      9: ;  the above copyright notice and this notice appears in all
                     10: ;  copies, and that the name of Hewlett-Packard Company not be
                     11: ;  used in advertising or publicity pertaining to distribution
                     12: ;  of the software without specific, written prior permission.
                     13: ;  Hewlett-Packard Company makes no representations about the
                     14: ;  suitability of this software for any purpose.
                     15: ;
                     16:
                     17: ; Standard Hardware Register Definitions for Use with Assembler
                     18: ; version A.08.06
                     19: ;      - fr16-31 added at Utah
                     20: ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     21: ; Hardware General Registers
                     22: r0: .equ       0
                     23:
                     24: r1: .equ       1
                     25:
                     26: r2: .equ       2
                     27:
                     28: r3: .equ       3
                     29:
                     30: r4: .equ       4
                     31:
                     32: r5: .equ       5
                     33:
                     34: r6: .equ       6
                     35:
                     36: r7: .equ       7
                     37:
                     38: r8: .equ       8
                     39:
                     40: r9: .equ       9
                     41:
                     42: r10: .equ      10
                     43:
                     44: r11: .equ      11
                     45:
                     46: r12: .equ      12
                     47:
                     48: r13: .equ      13
                     49:
                     50: r14: .equ      14
                     51:
                     52: r15: .equ      15
                     53:
                     54: r16: .equ      16
                     55:
                     56: r17: .equ      17
                     57:
                     58: r18: .equ      18
                     59:
                     60: r19: .equ      19
                     61:
                     62: r20: .equ      20
                     63:
                     64: r21: .equ      21
                     65:
                     66: r22: .equ      22
                     67:
                     68: r23: .equ      23
                     69:
                     70: r24: .equ      24
                     71:
                     72: r25: .equ      25
                     73:
                     74: r26: .equ      26
                     75:
                     76: r27: .equ      27
                     77:
                     78: r28: .equ      28
                     79:
                     80: r29: .equ      29
                     81:
                     82: r30: .equ      30
                     83:
                     84: r31: .equ      31
                     85:
                     86: ; Hardware Space Registers
                     87: sr0: .equ      0
                     88:
                     89: sr1: .equ      1
                     90:
                     91: sr2: .equ      2
                     92:
                     93: sr3: .equ      3
                     94:
                     95: sr4: .equ      4
                     96:
                     97: sr5: .equ      5
                     98:
                     99: sr6: .equ      6
                    100:
                    101: sr7: .equ      7
                    102:
                    103: ; Hardware Floating Point Registers
                    104: fr0: .equ      0
                    105:
                    106: fr1: .equ      1
                    107:
                    108: fr2: .equ      2
                    109:
                    110: fr3: .equ      3
                    111:
                    112: fr4: .equ      4
                    113:
                    114: fr5: .equ      5
                    115:
                    116: fr6: .equ      6
                    117:
                    118: fr7: .equ      7
                    119:
                    120: fr8: .equ      8
                    121:
                    122: fr9: .equ      9
                    123:
                    124: fr10: .equ     10
                    125:
                    126: fr11: .equ     11
                    127:
                    128: fr12: .equ     12
                    129:
                    130: fr13: .equ     13
                    131:
                    132: fr14: .equ     14
                    133:
                    134: fr15: .equ     15
                    135:
                    136: fr16: .equ     16
                    137:
                    138: fr17: .equ     17
                    139:
                    140: fr18: .equ     18
                    141:
                    142: fr19: .equ     19
                    143:
                    144: fr20: .equ     20
                    145:
                    146: fr21: .equ     21
                    147:
                    148: fr22: .equ     22
                    149:
                    150: fr23: .equ     23
                    151:
                    152: fr24: .equ     24
                    153:
                    154: fr25: .equ     25
                    155:
                    156: fr26: .equ     26
                    157:
                    158: fr27: .equ     27
                    159:
                    160: fr28: .equ     28
                    161:
                    162: fr29: .equ     29
                    163:
                    164: fr30: .equ     30
                    165:
                    166: fr31: .equ     31
                    167:
                    168: ; Hardware Control Registers
                    169: cr0: .equ      0
                    170:
                    171: rctr: .equ     0                       ; Recovery Counter Register
                    172:
                    173: cr8: .equ      8                       ; Protection ID 1
                    174:
                    175: pidr1: .equ    8
                    176:
                    177: cr9: .equ      9                       ; Protection ID 2
                    178:
                    179: pidr2: .equ    9
                    180:
                    181: cr10: .equ     10
                    182:
                    183: ccr: .equ      10                      ; Coprocessor Confiquration Register
                    184:
                    185: cr11: .equ     11
                    186:
                    187: sar: .equ      11                      ; Shift Amount Register
                    188:
                    189: cr12: .equ     12
                    190:
                    191: pidr3: .equ    12                      ; Protection ID 3
                    192:
                    193: cr13: .equ     13
                    194:
                    195: pidr4: .equ    13                      ; Protection ID 4
                    196:
                    197: cr14: .equ     14
                    198:
                    199: iva: .equ      14                      ; Interrupt Vector Address
                    200:
                    201: cr15: .equ     15
                    202:
                    203: eiem: .equ     15                      ; External Interrupt Enable Mask
                    204:
                    205: cr16: .equ     16
                    206:
                    207: itmr: .equ     16                      ; Interval Timer
                    208:
                    209: cr17: .equ     17
                    210:
                    211: pcsq: .equ     17                      ; Program Counter Space queue
                    212:
                    213: cr18: .equ     18
                    214:
                    215: pcoq: .equ     18                      ; Program Counter Offset queue
                    216:
                    217: cr19: .equ     19
                    218:
                    219: iir: .equ      19                      ; Interruption Instruction Register
                    220:
                    221: cr20: .equ     20
                    222:
                    223: isr: .equ      20                      ; Interruption Space Register
                    224:
                    225: cr21: .equ     21
                    226:
                    227: ior: .equ      21                      ; Interruption Offset Register
                    228:
                    229: cr22: .equ     22
                    230:
                    231: ipsw: .equ     22                      ; Interrpution Processor Status Word
                    232:
                    233: cr23: .equ     23
                    234:
                    235: eirr: .equ     23                      ; External Interrupt Request
                    236:
                    237: cr24: .equ     24
                    238:
                    239: ppda: .equ     24                      ; Physcial Page Directory Address
                    240:
                    241: tr0: .equ      24                      ; Temporary register 0
                    242:
                    243: cr25: .equ     25
                    244:
                    245: hta: .equ      25                      ; Hash Table Address
                    246:
                    247: tr1: .equ      25                      ; Temporary register 1
                    248:
                    249: cr26: .equ     26
                    250:
                    251: tr2: .equ      26                      ; Temporary register 2
                    252:
                    253: cr27: .equ     27
                    254:
                    255: tr3: .equ      27                      ; Temporary register 3
                    256:
                    257: cr28: .equ     28
                    258:
                    259: tr4: .equ      28                      ; Temporary register 4
                    260:
                    261: cr29: .equ     29
                    262:
                    263: tr5: .equ      29                      ; Temporary register 5
                    264:
                    265: cr30: .equ     30
                    266:
                    267: tr6: .equ      30                      ; Temporary register 6
                    268:
                    269: cr31: .equ     31
                    270:
                    271: tr7: .equ      31                      ; Temporary register 7
                    272:
                    273: ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    274: ; Procedure Call Convention                                            ~
                    275: ; Register Definitions for Use with Assembler                          ~
                    276: ; version A.08.06                                                      ~
                    277: ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    278: ; Software Architecture General Registers
                    279: rp: .equ       r2      ; return pointer
                    280:
                    281: mrp: .equ      r31     ; millicode return pointer
                    282:
                    283: ret0: .equ     r28     ; return value
                    284:
                    285: ret1: .equ     r29     ; return value (high part of double)
                    286:
                    287: sl: .equ       r29     ; static link
                    288:
                    289: sp: .equ       r30     ; stack pointer
                    290:
                    291: dp: .equ       r27     ; data pointer
                    292:
                    293: arg0: .equ     r26     ; argument
                    294:
                    295: arg1: .equ     r25     ; argument or high part of double argument
                    296:
                    297: arg2: .equ     r24     ; argument
                    298:
                    299: arg3: .equ     r23     ; argument or high part of double argument
                    300:
                    301: ;_____________________________________________________________________________
                    302: ; Software Architecture Space Registers
                    303: ;              sr0     ; return link form BLE
                    304: sret: .equ     sr1     ; return value
                    305:
                    306: sarg: .equ     sr1     ; argument
                    307:
                    308: ;              sr4     ; PC SPACE tracker
                    309: ;              sr5     ; process private data
                    310: ;_____________________________________________________________________________
                    311: ; Software Architecture Pseudo Registers
                    312: previous_sp: .equ      64      ; old stack pointer (locates previous frame)
                    313:
                    314: ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    315: ; Standard space and subspace definitions.  version A.08.06
                    316: ; These are generally suitable for programs on HP_UX and HPE.
                    317: ; Statements commented out are used when building such things as operating
                    318: ; system kernels.
                    319: ;;;;;;;;;;;;;;;;
                    320: ; Additional code subspaces should have ALIGN=8 for an interspace BV
                    321: ; and should have SORT=24.
                    322: ;
                    323: ; For an incomplete executable (program bound to shared libraries),
                    324: ; sort keys $GLOBAL$ -1 and $GLOBAL$ -2 are reserved for the $DLT$
                    325: ; and $PLT$ subspaces respectively.
                    326: ;;;;;;;;;;;;;;;
                    327:
                    328:        .text
                    329:        .EXPORT $$remI,millicode
                    330: ;      .IMPORT cerror
                    331: $$remI:
                    332:        .PROC
                    333:        .CALLINFO NO_CALLS
                    334:        .ENTRY
                    335:        addit,= 0,arg1,r0
                    336:        add,>= r0,arg0,ret1
                    337:        sub r0,ret1,ret1
                    338:        sub r0,arg1,r1
                    339:        ds r0,r1,r0
                    340:        or r0,r0,r1
                    341:        add ret1,ret1,ret1
                    342:        ds r1,arg1,r1
                    343:        addc ret1,ret1,ret1
                    344:        ds r1,arg1,r1
                    345:        addc ret1,ret1,ret1
                    346:        ds r1,arg1,r1
                    347:        addc ret1,ret1,ret1
                    348:        ds r1,arg1,r1
                    349:        addc ret1,ret1,ret1
                    350:        ds r1,arg1,r1
                    351:        addc ret1,ret1,ret1
                    352:        ds r1,arg1,r1
                    353:        addc ret1,ret1,ret1
                    354:        ds r1,arg1,r1
                    355:        addc ret1,ret1,ret1
                    356:        ds r1,arg1,r1
                    357:        addc ret1,ret1,ret1
                    358:        ds r1,arg1,r1
                    359:        addc ret1,ret1,ret1
                    360:        ds r1,arg1,r1
                    361:        addc ret1,ret1,ret1
                    362:        ds r1,arg1,r1
                    363:        addc ret1,ret1,ret1
                    364:        ds r1,arg1,r1
                    365:        addc ret1,ret1,ret1
                    366:        ds r1,arg1,r1
                    367:        addc ret1,ret1,ret1
                    368:        ds r1,arg1,r1
                    369:        addc ret1,ret1,ret1
                    370:        ds r1,arg1,r1
                    371:        addc ret1,ret1,ret1
                    372:        ds r1,arg1,r1
                    373:        addc ret1,ret1,ret1
                    374:        ds r1,arg1,r1
                    375:        addc ret1,ret1,ret1
                    376:        ds r1,arg1,r1
                    377:        addc ret1,ret1,ret1
                    378:        ds r1,arg1,r1
                    379:        addc ret1,ret1,ret1
                    380:        ds r1,arg1,r1
                    381:        addc ret1,ret1,ret1
                    382:        ds r1,arg1,r1
                    383:        addc ret1,ret1,ret1
                    384:        ds r1,arg1,r1
                    385:        addc ret1,ret1,ret1
                    386:        ds r1,arg1,r1
                    387:        addc ret1,ret1,ret1
                    388:        ds r1,arg1,r1
                    389:        addc ret1,ret1,ret1
                    390:        ds r1,arg1,r1
                    391:        addc ret1,ret1,ret1
                    392:        ds r1,arg1,r1
                    393:        addc ret1,ret1,ret1
                    394:        ds r1,arg1,r1
                    395:        addc ret1,ret1,ret1
                    396:        ds r1,arg1,r1
                    397:        addc ret1,ret1,ret1
                    398:        ds r1,arg1,r1
                    399:        addc ret1,ret1,ret1
                    400:        ds r1,arg1,r1
                    401:        addc ret1,ret1,ret1
                    402:        ds r1,arg1,r1
                    403:        addc ret1,ret1,ret1
                    404:        ds r1,arg1,r1
                    405:        addc ret1,ret1,ret1
                    406:        movb,>=,n r1,ret1,remI300
                    407:        add,< arg1,r0,r0
                    408:        add,tr r1,arg1,ret1
                    409:        sub r1,arg1,ret1
                    410: remI300: add,>= arg0,r0,r0
                    411:
                    412:        sub r0,ret1,ret1
                    413:        bv r0(r31)
                    414:        nop
                    415:        .EXIT
                    416:        .PROCEND
                    417:
                    418: bit1:  .equ 1
                    419:
                    420: bit30: .equ 30
                    421: bit31: .equ 31
                    422:
                    423: len2:  .equ 2
                    424:
                    425: len4:  .equ 4
                    426:
                    427: #if 0
                    428: $$dyncall:
                    429:        .proc
                    430:        .callinfo NO_CALLS
                    431:        .export $$dyncall,MILLICODE
                    432:
                    433:        bb,>=,n 22,bit30,noshlibs
                    434:
                    435:        depi    0,bit31,len2,22
                    436:        ldw     4(22),19
                    437:        ldw     0(22),22
                    438: noshlibs:
                    439:        ldsid   (22),r1
                    440:        mtsp    r1,sr0
                    441:        be      0(sr0,r22)
                    442:        stw     rp,-24(sp)
                    443:        .procend
                    444: #endif
                    445:
                    446: $$sh_func_adrs:
                    447:        .proc
                    448:        .callinfo NO_CALLS
                    449:        .export $$sh_func_adrs, millicode
                    450:        ldo     0(r26),ret1
                    451:        dep     r0,30,1,r26
                    452:        probew  (r26),r31,r22
                    453:        extru,= r22,31,1,r22
                    454:        bv      r0(r31)
                    455:        ldws    0(r26),ret1
                    456:        .procend
                    457:
                    458: temp: .EQU     r1
                    459:
                    460: retreg: .EQU   ret1    ; r29
                    461:
                    462:        .export $$divU,millicode
                    463:        .import $$divU_3,millicode
                    464:        .import $$divU_5,millicode
                    465:        .import $$divU_6,millicode
                    466:        .import $$divU_7,millicode
                    467:        .import $$divU_9,millicode
                    468:        .import $$divU_10,millicode
                    469:        .import $$divU_12,millicode
                    470:        .import $$divU_14,millicode
                    471:        .import $$divU_15,millicode
                    472: $$divU:
                    473:        .proc
                    474:        .callinfo NO_CALLS
                    475: ; The subtract is not nullified since it does no harm and can be used
                    476: ; by the two cases that branch back to "normal".
                    477:        comib,>=  15,arg1,special_divisor
                    478:        sub     r0,arg1,temp            ; clear carry, negate the divisor
                    479:        ds      r0,temp,r0              ; set V-bit to 1
                    480: normal:
                    481:        add     arg0,arg0,retreg        ; shift msb bit into carry
                    482:        ds      r0,arg1,temp            ; 1st divide step, if no carry
                    483:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    484:        ds      temp,arg1,temp          ; 2nd divide step
                    485:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    486:        ds      temp,arg1,temp          ; 3rd divide step
                    487:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    488:        ds      temp,arg1,temp          ; 4th divide step
                    489:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    490:        ds      temp,arg1,temp          ; 5th divide step
                    491:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    492:        ds      temp,arg1,temp          ; 6th divide step
                    493:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    494:        ds      temp,arg1,temp          ; 7th divide step
                    495:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    496:        ds      temp,arg1,temp          ; 8th divide step
                    497:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    498:        ds      temp,arg1,temp          ; 9th divide step
                    499:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    500:        ds      temp,arg1,temp          ; 10th divide step
                    501:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    502:        ds      temp,arg1,temp          ; 11th divide step
                    503:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    504:        ds      temp,arg1,temp          ; 12th divide step
                    505:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    506:        ds      temp,arg1,temp          ; 13th divide step
                    507:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    508:        ds      temp,arg1,temp          ; 14th divide step
                    509:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    510:        ds      temp,arg1,temp          ; 15th divide step
                    511:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    512:        ds      temp,arg1,temp          ; 16th divide step
                    513:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    514:        ds      temp,arg1,temp          ; 17th divide step
                    515:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    516:        ds      temp,arg1,temp          ; 18th divide step
                    517:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    518:        ds      temp,arg1,temp          ; 19th divide step
                    519:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    520:        ds      temp,arg1,temp          ; 20th divide step
                    521:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    522:        ds      temp,arg1,temp          ; 21st divide step
                    523:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    524:        ds      temp,arg1,temp          ; 22nd divide step
                    525:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    526:        ds      temp,arg1,temp          ; 23rd divide step
                    527:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    528:        ds      temp,arg1,temp          ; 24th divide step
                    529:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    530:        ds      temp,arg1,temp          ; 25th divide step
                    531:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    532:        ds      temp,arg1,temp          ; 26th divide step
                    533:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    534:        ds      temp,arg1,temp          ; 27th divide step
                    535:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    536:        ds      temp,arg1,temp          ; 28th divide step
                    537:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    538:        ds      temp,arg1,temp          ; 29th divide step
                    539:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    540:        ds      temp,arg1,temp          ; 30th divide step
                    541:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    542:        ds      temp,arg1,temp          ; 31st divide step
                    543:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                    544:        ds      temp,arg1,temp          ; 32nd divide step,
                    545:        bv      0(r31)
                    546:        addc    retreg,retreg,retreg    ; shift last retreg bit into retreg
                    547: ;_____________________________________________________________________________
                    548: ; handle the cases where divisor is a small constant or has high bit on
                    549: special_divisor:
                    550:        blr     arg1,r0
                    551:        comib,>,n  0,arg1,big_divisor   ; nullify previous instruction
                    552: zero_divisor: ; this label is here to provide external visibility
                    553:
                    554:        addit,= 0,arg1,0                ; trap for zero dvr
                    555:        nop
                    556:        bv      0(r31)                  ; divisor == 1
                    557:        copy    arg0,retreg
                    558:        bv      0(r31)                  ; divisor == 2
                    559:        extru   arg0,30,31,retreg
                    560:         b,n    $$divU_3                ; divisor == 3
                    561:        nop
                    562:        bv      0(r31)                  ; divisor == 4
                    563:        extru   arg0,29,30,retreg
                    564:         b,n    $$divU_5                ; divisor == 5
                    565:        nop
                    566:         b,n    $$divU_6                ; divisor == 6
                    567:        nop
                    568:         b,n    $$divU_7                ; divisor == 7
                    569:        nop
                    570:        bv      0(r31)                  ; divisor == 8
                    571:        extru   arg0,28,29,retreg
                    572:         b,n    $$divU_9                ; divisor == 9
                    573:        nop
                    574:         b,n    $$divU_10               ; divisor == 10
                    575:        nop
                    576:        b       normal                  ; divisor == 11
                    577:        ds      r0,temp,r0              ; set V-bit to 1
                    578:         b,n    $$divU_12               ; divisor == 12
                    579:        nop
                    580:        b       normal                  ; divisor == 13
                    581:        ds      r0,temp,r0              ; set V-bit to 1
                    582:         b,n    $$divU_14               ; divisor == 14
                    583:        nop
                    584:         b,n    $$divU_15               ; divisor == 15
                    585:        nop
                    586: ;_____________________________________________________________________________
                    587: ; Handle the case where the high bit is on in the divisor.
                    588: ; Compute:     if( dividend>=divisor) quotient=1; else quotient=0;
                    589: ; Note:                dividend>==divisor iff dividend-divisor does not borrow
                    590: ; and          not borrow iff carry
                    591: big_divisor:
                    592:        sub     arg0,arg1,r0
                    593:        bv      0(r31)
                    594:        addc    r0,r0,retreg
                    595:        .procend
                    596:        .end
                    597:
                    598: t2: .EQU       r1
                    599:
                    600: ; x2   .EQU    arg0    ; r26
                    601: t1: .EQU       arg1    ; r25
                    602:
                    603: ; x1   .EQU    ret1    ; r29
                    604: ;_____________________________________________________________________________
                    605:
                    606: $$divide_by_constant:
                    607:        .PROC
                    608:        .CALLINFO NO_CALLS
                    609:        .export $$divide_by_constant,millicode
                    610: ; Provides a "nice" label for the code covered by the unwind descriptor
                    611: ; for things like gprof.
                    612:
                    613: $$divI_2:
                    614:        .EXPORT $$divI_2,MILLICODE
                    615:        COMCLR,>=       arg0,0,0
                    616:        ADDI            1,arg0,arg0
                    617:        bv              0(r31)
                    618:        EXTRS           arg0,30,31,ret1
                    619:
                    620: $$divI_4:
                    621:        .EXPORT         $$divI_4,MILLICODE
                    622:        COMCLR,>=       arg0,0,0
                    623:        ADDI            3,arg0,arg0
                    624:        bv              0(r31)
                    625:        EXTRS           arg0,29,30,ret1
                    626:
                    627: $$divI_8:
                    628:        .EXPORT         $$divI_8,MILLICODE
                    629:        COMCLR,>=       arg0,0,0
                    630:        ADDI            7,arg0,arg0
                    631:        bv              0(r31)
                    632:        EXTRS           arg0,28,29,ret1
                    633:
                    634: $$divI_16:
                    635:        .EXPORT         $$divI_16,MILLICODE
                    636:        COMCLR,>=       arg0,0,0
                    637:        ADDI            15,arg0,arg0
                    638:        bv              0(r31)
                    639:        EXTRS           arg0,27,28,ret1
                    640:
                    641: $$divI_3:
                    642:        .EXPORT         $$divI_3,MILLICODE
                    643:        COMB,<,N        arg0,0,$neg3
                    644:
                    645:        ADDI            1,arg0,arg0
                    646:        EXTRU           arg0,1,2,ret1
                    647:        SH2ADD          arg0,arg0,arg0
                    648:        B               $pos
                    649:        ADDC            ret1,0,ret1
                    650:
                    651: $neg3:
                    652:        SUBI            1,arg0,arg0
                    653:        EXTRU           arg0,1,2,ret1
                    654:        SH2ADD          arg0,arg0,arg0
                    655:        B               $neg
                    656:        ADDC            ret1,0,ret1
                    657:
                    658: $$divU_3:
                    659:        .EXPORT         $$divU_3,MILLICODE
                    660:        ADDI            1,arg0,arg0
                    661:        ADDC            0,0,ret1
                    662:        SHD             ret1,arg0,30,t1
                    663:        SH2ADD          arg0,arg0,arg0
                    664:        B               $pos
                    665:        ADDC            ret1,t1,ret1
                    666:
                    667: $$divI_5:
                    668:        .EXPORT         $$divI_5,MILLICODE
                    669:        COMB,<,N        arg0,0,$neg5
                    670:        ADDI            3,arg0,t1
                    671:        SH1ADD          arg0,t1,arg0
                    672:        B               $pos
                    673:        ADDC            0,0,ret1
                    674:
                    675: $neg5:
                    676:        SUB             0,arg0,arg0
                    677:        ADDI            1,arg0,arg0
                    678:        SHD             0,arg0,31,ret1
                    679:        SH1ADD          arg0,arg0,arg0
                    680:        B               $neg
                    681:        ADDC            ret1,0,ret1
                    682:
                    683: $$divU_5:
                    684:        .EXPORT         $$divU_5,MILLICODE
                    685:        ADDI            1,arg0,arg0
                    686:        ADDC            0,0,ret1
                    687:        SHD             ret1,arg0,31,t1
                    688:        SH1ADD          arg0,arg0,arg0
                    689:        B               $pos
                    690:        ADDC            t1,ret1,ret1
                    691:
                    692: $$divI_6:
                    693:        .EXPORT         $$divI_6,MILLICODE
                    694:        COMB,<,N        arg0,0,$neg6
                    695:        EXTRU           arg0,30,31,arg0
                    696:        ADDI            5,arg0,t1
                    697:        SH2ADD          arg0,t1,arg0
                    698:        B               $pos
                    699:        ADDC            0,0,ret1
                    700:
                    701: $neg6:
                    702:        SUBI            2,arg0,arg0
                    703:        EXTRU           arg0,30,31,arg0
                    704:        SHD             0,arg0,30,ret1
                    705:        SH2ADD          arg0,arg0,arg0
                    706:        B               $neg
                    707:        ADDC            ret1,0,ret1
                    708:
                    709: $$divU_6:
                    710:        .EXPORT         $$divU_6,MILLICODE
                    711:        EXTRU           arg0,30,31,arg0
                    712:        ADDI            1,arg0,arg0
                    713:        SHD             0,arg0,30,ret1
                    714:        SH2ADD          arg0,arg0,arg0
                    715:        B               $pos
                    716:        ADDC            ret1,0,ret1
                    717:
                    718: $$divU_10:
                    719:        .EXPORT         $$divU_10,MILLICODE
                    720:        EXTRU           arg0,30,31,arg0
                    721:        ADDI            3,arg0,t1
                    722:        SH1ADD          arg0,t1,arg0
                    723:        ADDC            0,0,ret1
                    724: $pos:
                    725:        SHD             ret1,arg0,28,t1
                    726:        SHD             arg0,0,28,t2
                    727:        ADD             arg0,t2,arg0
                    728:        ADDC            ret1,t1,ret1
                    729: $pos_for_17:
                    730:        SHD             ret1,arg0,24,t1
                    731:        SHD             arg0,0,24,t2
                    732:        ADD             arg0,t2,arg0
                    733:        ADDC            ret1,t1,ret1
                    734:
                    735:        SHD             ret1,arg0,16,t1
                    736:        SHD             arg0,0,16,t2
                    737:        ADD             arg0,t2,arg0
                    738:        bv              0(r31)
                    739:        ADDC            ret1,t1,ret1
                    740:
                    741: $$divI_10:
                    742:        .EXPORT         $$divI_10,MILLICODE
                    743:        COMB,<          arg0,0,$neg10
                    744:        COPY            0,ret1
                    745:        EXTRU           arg0,30,31,arg0
                    746:        ADDIB,TR        1,arg0,$pos
                    747:        SH1ADD          arg0,arg0,arg0
                    748:
                    749: $neg10:
                    750:        SUBI            2,arg0,arg0
                    751:        EXTRU           arg0,30,31,arg0
                    752:        SH1ADD          arg0,arg0,arg0
                    753: $neg:
                    754:        SHD             ret1,arg0,28,t1
                    755:        SHD             arg0,0,28,t2
                    756:        ADD             arg0,t2,arg0
                    757:        ADDC            ret1,t1,ret1
                    758: $neg_for_17:
                    759:        SHD             ret1,arg0,24,t1
                    760:        SHD             arg0,0,24,t2
                    761:        ADD             arg0,t2,arg0
                    762:        ADDC            ret1,t1,ret1
                    763:
                    764:        SHD             ret1,arg0,16,t1
                    765:        SHD             arg0,0,16,t2
                    766:        ADD             arg0,t2,arg0
                    767:        ADDC            ret1,t1,ret1
                    768:        bv              0(r31)
                    769:        SUB             0,ret1,ret1
                    770:
                    771: $$divI_12:
                    772:        .EXPORT         $$divI_12,MILLICODE
                    773:        COMB,<          arg0,0,$neg12
                    774:        COPY            0,ret1
                    775:        EXTRU           arg0,29,30,arg0
                    776:        ADDIB,TR        1,arg0,$pos
                    777:        SH2ADD          arg0,arg0,arg0
                    778:
                    779: $neg12:
                    780:        SUBI            4,arg0,arg0
                    781:        EXTRU           arg0,29,30,arg0
                    782:        B               $neg
                    783:        SH2ADD          arg0,arg0,arg0
                    784:
                    785: $$divU_12:
                    786:        .EXPORT         $$divU_12,MILLICODE
                    787:        EXTRU           arg0,29,30,arg0
                    788:        ADDI            5,arg0,t1
                    789:        SH2ADD          arg0,t1,arg0
                    790:        B               $pos
                    791:        ADDC            0,0,ret1
                    792:
                    793: $$divI_15:
                    794:        .EXPORT         $$divI_15,MILLICODE
                    795:        COMB,<          arg0,0,$neg15
                    796:        COPY            0,ret1
                    797:        ADDIB,TR        1,arg0,$pos+4
                    798:        SHD             ret1,arg0,28,t1
                    799:
                    800: $neg15:
                    801:        B               $neg
                    802:        SUBI            1,arg0,arg0
                    803:
                    804: $$divU_15:
                    805:        .EXPORT         $$divU_15,MILLICODE
                    806:        ADDI            1,arg0,arg0
                    807:        B               $pos
                    808:        ADDC            0,0,ret1
                    809:
                    810: $$divI_17:
                    811:        .EXPORT         $$divI_17,MILLICODE
                    812:        COMB,<,N        arg0,0,$neg17
                    813:        ADDI            1,arg0,arg0
                    814:        SHD             0,arg0,28,t1
                    815:        SHD             arg0,0,28,t2
                    816:        SUB             t2,arg0,arg0
                    817:        B               $pos_for_17
                    818:        SUBB            t1,0,ret1
                    819:
                    820: $neg17:
                    821:        SUBI            1,arg0,arg0
                    822:        SHD             0,arg0,28,t1
                    823:        SHD             arg0,0,28,t2
                    824:        SUB             t2,arg0,arg0
                    825:        B               $neg_for_17
                    826:        SUBB            t1,0,ret1
                    827:
                    828: $$divU_17:
                    829:        .EXPORT         $$divU_17,MILLICODE
                    830:        ADDI            1,arg0,arg0
                    831:        ADDC            0,0,ret1
                    832:        SHD             ret1,arg0,28,t1
                    833: $u17:
                    834:        SHD             arg0,0,28,t2
                    835:        SUB             t2,arg0,arg0
                    836:        B               $pos_for_17
                    837:        SUBB            t1,ret1,ret1
                    838:
                    839: $$divI_7:
                    840:        .EXPORT         $$divI_7,MILLICODE
                    841:        COMB,<,N        arg0,0,$neg7
                    842: $7:
                    843:        ADDI            1,arg0,arg0
                    844:        SHD             0,arg0,29,ret1
                    845:        SH3ADD          arg0,arg0,arg0
                    846:        ADDC            ret1,0,ret1
                    847: $pos7:
                    848:        SHD             ret1,arg0,26,t1
                    849:        SHD             arg0,0,26,t2
                    850:        ADD             arg0,t2,arg0
                    851:        ADDC            ret1,t1,ret1
                    852:
                    853:        SHD             ret1,arg0,20,t1
                    854:        SHD             arg0,0,20,t2
                    855:        ADD             arg0,t2,arg0
                    856:        ADDC            ret1,t1,t1
                    857:
                    858:        COPY            0,ret1
                    859:        SHD,=           t1,arg0,24,t1
                    860: $1:
                    861:        ADDB,TR         t1,ret1,$2
                    862:        EXTRU           arg0,31,24,arg0
                    863:
                    864:        bv,n  0(r31)
                    865:
                    866: $2:
                    867:        ADDB,TR         t1,arg0,$1
                    868:        EXTRU,=         arg0,7,8,t1
                    869:
                    870: $neg7:
                    871:        SUBI            1,arg0,arg0
                    872: $8:
                    873:        SHD             0,arg0,29,ret1
                    874:        SH3ADD          arg0,arg0,arg0
                    875:        ADDC            ret1,0,ret1
                    876:
                    877: $neg7_shift:
                    878:        SHD             ret1,arg0,26,t1
                    879:        SHD             arg0,0,26,t2
                    880:        ADD             arg0,t2,arg0
                    881:        ADDC            ret1,t1,ret1
                    882:
                    883:        SHD             ret1,arg0,20,t1
                    884:        SHD             arg0,0,20,t2
                    885:        ADD             arg0,t2,arg0
                    886:        ADDC            ret1,t1,t1
                    887:
                    888:        COPY            0,ret1
                    889:        SHD,=           t1,arg0,24,t1
                    890: $3:
                    891:        ADDB,TR         t1,ret1,$4
                    892:        EXTRU           arg0,31,24,arg0
                    893:
                    894:        bv              0(r31)
                    895:        SUB             0,ret1,ret1
                    896:
                    897: $4:
                    898:        ADDB,TR         t1,arg0,$3
                    899:        EXTRU,=         arg0,7,8,t1
                    900:
                    901: $$divU_7:
                    902:        .EXPORT         $$divU_7,MILLICODE
                    903:        ADDI            1,arg0,arg0
                    904:        ADDC            0,0,ret1
                    905:        SHD             ret1,arg0,29,t1
                    906:        SH3ADD          arg0,arg0,arg0
                    907:        B               $pos7
                    908:        ADDC            t1,ret1,ret1
                    909:
                    910: $$divI_9:
                    911:        .EXPORT         $$divI_9,MILLICODE
                    912:        COMB,<,N        arg0,0,$neg9
                    913:        ADDI            1,arg0,arg0
                    914:        SHD             0,arg0,29,t1
                    915:        SHD             arg0,0,29,t2
                    916:        SUB             t2,arg0,arg0
                    917:        B               $pos7
                    918:        SUBB            t1,0,ret1
                    919:
                    920: $neg9:
                    921:        SUBI            1,arg0,arg0
                    922:        SHD             0,arg0,29,t1
                    923:        SHD             arg0,0,29,t2
                    924:        SUB             t2,arg0,arg0
                    925:        B               $neg7_shift
                    926:        SUBB            t1,0,ret1
                    927:
                    928: $$divU_9:
                    929:        .EXPORT         $$divU_9,MILLICODE
                    930:        ADDI            1,arg0,arg0
                    931:        ADDC            0,0,ret1
                    932:        SHD             ret1,arg0,29,t1
                    933:        SHD             arg0,0,29,t2
                    934:        SUB             t2,arg0,arg0
                    935:        B               $pos7
                    936:        SUBB            t1,ret1,ret1
                    937:
                    938: $$divI_14:
                    939:        .EXPORT         $$divI_14,MILLICODE
                    940:        COMB,<,N        arg0,0,$neg14
                    941: $$divU_14:
                    942:        .EXPORT         $$divU_14,MILLICODE
                    943:        B               $7
                    944:        EXTRU           arg0,30,31,arg0
                    945:
                    946: $neg14:
                    947:        SUBI            2,arg0,arg0
                    948:        B               $8
                    949:        EXTRU           arg0,30,31,arg0
                    950:
                    951:        .PROCEND
                    952:        .END
                    953:
                    954: rmndr: .EQU    ret1    ; r29
                    955:
                    956:        .export $$remU,millicode
                    957: $$remU:
                    958:        .proc
                    959:        .callinfo NO_CALLS
                    960:        .entry
                    961:
                    962:        comib,>=,n  0,arg1,special_case
                    963:        sub     r0,arg1,rmndr           ; clear carry, negate the divisor
                    964:        ds      r0,rmndr,r0             ; set V-bit to 1
                    965:        add     arg0,arg0,temp          ; shift msb bit into carry
                    966:        ds      r0,arg1,rmndr           ; 1st divide step, if no carry
                    967:        addc    temp,temp,temp          ; shift temp with/into carry
                    968:        ds      rmndr,arg1,rmndr                ; 2nd divide step
                    969:        addc    temp,temp,temp          ; shift temp with/into carry
                    970:        ds      rmndr,arg1,rmndr                ; 3rd divide step
                    971:        addc    temp,temp,temp          ; shift temp with/into carry
                    972:        ds      rmndr,arg1,rmndr                ; 4th divide step
                    973:        addc    temp,temp,temp          ; shift temp with/into carry
                    974:        ds      rmndr,arg1,rmndr                ; 5th divide step
                    975:        addc    temp,temp,temp          ; shift temp with/into carry
                    976:        ds      rmndr,arg1,rmndr                ; 6th divide step
                    977:        addc    temp,temp,temp          ; shift temp with/into carry
                    978:        ds      rmndr,arg1,rmndr                ; 7th divide step
                    979:        addc    temp,temp,temp          ; shift temp with/into carry
                    980:        ds      rmndr,arg1,rmndr                ; 8th divide step
                    981:        addc    temp,temp,temp          ; shift temp with/into carry
                    982:        ds      rmndr,arg1,rmndr                ; 9th divide step
                    983:        addc    temp,temp,temp          ; shift temp with/into carry
                    984:        ds      rmndr,arg1,rmndr                ; 10th divide step
                    985:        addc    temp,temp,temp          ; shift temp with/into carry
                    986:        ds      rmndr,arg1,rmndr                ; 11th divide step
                    987:        addc    temp,temp,temp          ; shift temp with/into carry
                    988:        ds      rmndr,arg1,rmndr                ; 12th divide step
                    989:        addc    temp,temp,temp          ; shift temp with/into carry
                    990:        ds      rmndr,arg1,rmndr                ; 13th divide step
                    991:        addc    temp,temp,temp          ; shift temp with/into carry
                    992:        ds      rmndr,arg1,rmndr                ; 14th divide step
                    993:        addc    temp,temp,temp          ; shift temp with/into carry
                    994:        ds      rmndr,arg1,rmndr                ; 15th divide step
                    995:        addc    temp,temp,temp          ; shift temp with/into carry
                    996:        ds      rmndr,arg1,rmndr                ; 16th divide step
                    997:        addc    temp,temp,temp          ; shift temp with/into carry
                    998:        ds      rmndr,arg1,rmndr                ; 17th divide step
                    999:        addc    temp,temp,temp          ; shift temp with/into carry
                   1000:        ds      rmndr,arg1,rmndr                ; 18th divide step
                   1001:        addc    temp,temp,temp          ; shift temp with/into carry
                   1002:        ds      rmndr,arg1,rmndr                ; 19th divide step
                   1003:        addc    temp,temp,temp          ; shift temp with/into carry
                   1004:        ds      rmndr,arg1,rmndr                ; 20th divide step
                   1005:        addc    temp,temp,temp          ; shift temp with/into carry
                   1006:        ds      rmndr,arg1,rmndr                ; 21st divide step
                   1007:        addc    temp,temp,temp          ; shift temp with/into carry
                   1008:        ds      rmndr,arg1,rmndr                ; 22nd divide step
                   1009:        addc    temp,temp,temp          ; shift temp with/into carry
                   1010:        ds      rmndr,arg1,rmndr                ; 23rd divide step
                   1011:        addc    temp,temp,temp          ; shift temp with/into carry
                   1012:        ds      rmndr,arg1,rmndr                ; 24th divide step
                   1013:        addc    temp,temp,temp          ; shift temp with/into carry
                   1014:        ds      rmndr,arg1,rmndr                ; 25th divide step
                   1015:        addc    temp,temp,temp          ; shift temp with/into carry
                   1016:        ds      rmndr,arg1,rmndr                ; 26th divide step
                   1017:        addc    temp,temp,temp          ; shift temp with/into carry
                   1018:        ds      rmndr,arg1,rmndr                ; 27th divide step
                   1019:        addc    temp,temp,temp          ; shift temp with/into carry
                   1020:        ds      rmndr,arg1,rmndr                ; 28th divide step
                   1021:        addc    temp,temp,temp          ; shift temp with/into carry
                   1022:        ds      rmndr,arg1,rmndr                ; 29th divide step
                   1023:        addc    temp,temp,temp          ; shift temp with/into carry
                   1024:        ds      rmndr,arg1,rmndr                ; 30th divide step
                   1025:        addc    temp,temp,temp          ; shift temp with/into carry
                   1026:        ds      rmndr,arg1,rmndr                ; 31st divide step
                   1027:        addc    temp,temp,temp          ; shift temp with/into carry
                   1028:        ds      rmndr,arg1,rmndr                ; 32nd divide step,
                   1029:        comiclr,<= 0,rmndr,r0
                   1030:          add   rmndr,arg1,rmndr        ; correction
                   1031: ;      .exit
                   1032:        bv,n  0(r31)
                   1033:        nop
                   1034: ; Putting >= on the last DS and deleting COMICLR does not work!
                   1035: ;_____________________________________________________________________________
                   1036: special_case:
                   1037:        addit,= 0,arg1,r0               ; trap on div by zero
                   1038:        sub,>>= arg0,arg1,rmndr
                   1039:          copy  arg0,rmndr
                   1040:        .exit
                   1041:        bv,n  0(r31)
                   1042:        nop
                   1043:        .procend
                   1044:        .end
                   1045:
                   1046: ; Use bv  0(r31) and bv,n  0(r31) instead.
                   1047: ; #define      return          bv      0(%mrp)
                   1048: ; #define      return_n        bv,n    0(%mrp)
                   1049:
                   1050:        .align 16
                   1051: $$mulI:
                   1052:
                   1053:        .proc
                   1054:        .callinfo NO_CALLS
                   1055:        .export $$mulI, millicode
                   1056:        combt,<<=       %r25,%r26,l4    ; swap args if unsigned %r25>%r26
                   1057:        copy            0,%r29          ; zero out the result
                   1058:        xor             %r26,%r25,%r26  ; swap %r26 & %r25 using the
                   1059:        xor             %r26,%r25,%r25  ;  old xor trick
                   1060:        xor             %r26,%r25,%r26
                   1061: l4: combt,<=   0,%r26,l3               ; if %r26>=0 then proceed like unsigned
                   1062:
                   1063:        zdep            %r25,30,8,%r1   ; %r1 = (%r25&0xff)<<1 *********
                   1064:        sub,>           0,%r25,%r1              ; otherwise negate both and
                   1065:        combt,<=,n      %r26,%r1,l2     ;  swap back if |%r26|<|%r25|
                   1066:        sub             0,%r26,%r25
                   1067:        movb,tr,n       %r1,%r26,l2     ; 10th inst.
                   1068:
                   1069: l0:    add     %r29,%r1,%r29                           ; add in this partial product
                   1070:
                   1071: l1: zdep       %r26,23,24,%r26                 ; %r26 <<= 8 ******************
                   1072:
                   1073: l2: zdep               %r25,30,8,%r1   ; %r1 = (%r25&0xff)<<1 *********
                   1074:
                   1075: l3: blr                %r1,0           ; case on these 8 bits ******
                   1076:
                   1077:        extru           %r25,23,24,%r25 ; %r25 >>= 8 ******************
                   1078:
                   1079: ;16 insts before this.
                   1080: ;                        %r26 <<= 8 **************************
                   1081: x0: comb,<>    %r25,0,l2       ! zdep  %r26,23,24,%r26 ! bv,n  0(r31)  ! nop
                   1082:
                   1083: x1: comb,<>    %r25,0,l1       !       add     %r29,%r26,%r29  ! bv,n  0(r31)  ! nop
                   1084:
                   1085: x2: comb,<>    %r25,0,l1       ! sh1add        %r26,%r29,%r29  ! bv,n  0(r31)  ! nop
                   1086:
                   1087: x3: comb,<>    %r25,0,l0       !       sh1add  %r26,%r26,%r1   ! bv    0(r31)  !       add     %r29,%r1,%r29
                   1088:
                   1089: x4: comb,<>    %r25,0,l1       ! sh2add        %r26,%r29,%r29  ! bv,n  0(r31)  ! nop
                   1090:
                   1091: x5: comb,<>    %r25,0,l0       !       sh2add  %r26,%r26,%r1   ! bv    0(r31)  !       add     %r29,%r1,%r29
                   1092:
                   1093: x6:    sh1add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh1add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1094:
                   1095: x7:    sh1add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh2add        %r26,%r29,%r29  ! b,n   ret_t0
                   1096:
                   1097: x8: comb,<>    %r25,0,l1       ! sh3add        %r26,%r29,%r29  ! bv,n  0(r31)  ! nop
                   1098:
                   1099: x9: comb,<>    %r25,0,l0       !       sh3add  %r26,%r26,%r1   ! bv    0(r31)  !       add     %r29,%r1,%r29
                   1100:
                   1101: x10:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh1add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1102:
                   1103: x11:   sh1add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh3add        %r26,%r29,%r29  ! b,n   ret_t0
                   1104:
                   1105: x12:   sh1add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh2add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1106:
                   1107: x13:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh3add        %r26,%r29,%r29  ! b,n   ret_t0
                   1108:
                   1109: x14:   sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1110:
                   1111: x15:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       !       sh1add  %r1,%r1,%r1     ! b,n   ret_t0
                   1112:
                   1113: x16: zdep      %r26,27,28,%r1  ! comb,<>       %r25,0,l1       !       add     %r29,%r1,%r29   ! bv,n  0(r31)
                   1114:
                   1115: x17:   sh3add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh3add        %r26,%r1,%r1    ! b,n   ret_t0
                   1116:
                   1117: x18:   sh3add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh1add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1118:
                   1119: x19:   sh3add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh1add        %r1,%r26,%r1    ! b,n   ret_t0
                   1120:
                   1121: x20:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh2add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1122:
                   1123: x21:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh2add        %r1,%r26,%r1    ! b,n   ret_t0
                   1124:
                   1125: x22:   sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1126:
                   1127: x23:   sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1128:
                   1129: x24:   sh1add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh3add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1130:
                   1131: x25:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       !       sh2add  %r1,%r1,%r1     ! b,n   ret_t0
                   1132:
                   1133: x26:   sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1134:
                   1135: x27:   sh1add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       !       sh3add  %r1,%r1,%r1     ! b,n   ret_t0
                   1136:
                   1137: x28:   sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1138:
                   1139: x29:   sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1140:
                   1141: x30:   sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1142:
                   1143: x31: zdep      %r26,26,27,%r1  ! comb,<>       %r25,0,l0       ! sub   %r1,%r26,%r1    ! b,n   ret_t0
                   1144:
                   1145: x32: zdep      %r26,26,27,%r1  ! comb,<>       %r25,0,l1       !       add     %r29,%r1,%r29   ! bv,n  0(r31)
                   1146:
                   1147: x33:   sh3add  %r26,0,%r1              ! comb,<>       %r25,0,l0       ! sh2add        %r1,%r26,%r1    ! b,n   ret_t0
                   1148:
                   1149: x34: zdep      %r26,27,28,%r1  ! add   %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1150:
                   1151: x35:   sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh3add        %r26,%r1,%r1
                   1152:
                   1153: x36:   sh3add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh2add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1154:
                   1155: x37:   sh3add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh2add        %r1,%r26,%r1    ! b,n   ret_t0
                   1156:
                   1157: x38:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1158:
                   1159: x39:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1160:
                   1161: x40:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh3add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1162:
                   1163: x41:   sh2add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! sh3add        %r1,%r26,%r1    ! b,n   ret_t0
                   1164:
                   1165: x42:   sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1166:
                   1167: x43:   sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1168:
                   1169: x44:   sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1170:
                   1171: x45:   sh3add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       !       sh2add  %r1,%r1,%r1     ! b,n   ret_t0
                   1172:
                   1173: x46:   sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! add   %r1,%r26,%r1
                   1174:
                   1175: x47:   sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sh1add        %r26,%r1,%r1
                   1176:
                   1177: x48:   sh1add  %r26,%r26,%r1           ! comb,<>       %r25,0,l0       ! zdep  %r1,27,28,%r1   ! b,n   ret_t0
                   1178:
                   1179: x49:   sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sh2add        %r26,%r1,%r1
                   1180:
                   1181: x50:   sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1182:
                   1183: x51:   sh3add  %r26,%r26,%r1           ! sh3add        %r26,%r1,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1184:
                   1185: x52:   sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1186:
                   1187: x53:   sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1188:
                   1189: x54:   sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1190:
                   1191: x55:   sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1192:
                   1193: x56:   sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1194:
                   1195: x57:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1196:
                   1197: x58:   sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1198:
                   1199: x59:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_t02a0 !       sh1add  %r1,%r1,%r1
                   1200:
                   1201: x60:   sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1202:
                   1203: x61:   sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1204:
                   1205: x62: zdep      %r26,26,27,%r1  ! sub   %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1206:
                   1207: x63: zdep      %r26,25,26,%r1  ! comb,<>       %r25,0,l0       ! sub   %r1,%r26,%r1    ! b,n   ret_t0
                   1208:
                   1209: x64: zdep      %r26,25,26,%r1  ! comb,<>       %r25,0,l1       !       add     %r29,%r1,%r29   ! bv,n  0(r31)
                   1210:
                   1211: x65:   sh3add  %r26,0,%r1              ! comb,<>       %r25,0,l0       ! sh3add        %r1,%r26,%r1    ! b,n   ret_t0
                   1212:
                   1213: x66: zdep      %r26,26,27,%r1  ! add   %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1214:
                   1215: x67:   sh3add  %r26,0,%r1              ! sh2add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1216:
                   1217: x68:   sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1218:
                   1219: x69:   sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1220:
                   1221: x70: zdep      %r26,25,26,%r1  ! sh2add        %r26,%r1,%r1    !       b       e_t0    ! sh1add        %r26,%r1,%r1
                   1222:
                   1223: x71:   sh3add  %r26,%r26,%r1           !       sh3add  %r1,0,%r1       !       b       e_t0    ! sub   %r1,%r26,%r1
                   1224:
                   1225: x72:   sh3add  %r26,%r26,%r1           ! comb,<>       %r25,0,l1       ! sh3add        %r1,%r29,%r29   ! bv,n  0(r31)
                   1226:
                   1227: x73:   sh3add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    ! b     e_shift !       add     %r29,%r1,%r29
                   1228:
                   1229: x74:   sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1230:
                   1231: x75:   sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1232:
                   1233: x76:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1234:
                   1235: x77:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1236:
                   1237: x78:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_2t0   ! sh1add        %r1,%r26,%r1
                   1238:
                   1239: x79: zdep      %r26,27,28,%r1  !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sub   %r1,%r26,%r1
                   1240:
                   1241: x80: zdep      %r26,27,28,%r1  !       sh2add  %r1,%r1,%r1     ! b     e_shift !       add     %r29,%r1,%r29
                   1242:
                   1243: x81:   sh3add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     ! b     e_shift !       add     %r29,%r1,%r29
                   1244:
                   1245: x82:   sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1246:
                   1247: x83:   sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1248:
                   1249: x84:   sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1250:
                   1251: x85:   sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1252:
                   1253: x86:   sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_2t0   ! sh1add        %r1,%r26,%r1
                   1254:
                   1255: x87:   sh3add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     ! b     e_t02a0 ! sh2add        %r26,%r1,%r1
                   1256:
                   1257: x88:   sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1258:
                   1259: x89:   sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1260:
                   1261: x90:   sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1262:
                   1263: x91:   sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1264:
                   1265: x92:   sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_4t0   ! sh1add        %r1,%r26,%r1
                   1266:
                   1267: x93: zdep      %r26,26,27,%r1  ! sub   %r1,%r26,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1268:
                   1269: x94:   sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_2t0   ! sh1add        %r26,%r1,%r1
                   1270:
                   1271: x95:   sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1272:
                   1273: x96:   sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1274:
                   1275: x97:   sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1276:
                   1277: x98: zdep      %r26,26,27,%r1  !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh1add        %r26,%r1,%r1
                   1278:
                   1279: x99:   sh3add  %r26,0,%r1              ! sh2add        %r1,%r26,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1280:
                   1281: x100:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1282:
                   1283: x101:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1284:
                   1285: x102: zdep     %r26,26,27,%r1  ! sh1add        %r26,%r1,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1286:
                   1287: x103:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_t02a0 ! sh2add        %r1,%r26,%r1
                   1288:
                   1289: x104:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1290:
                   1291: x105:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1292:
                   1293: x106:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1294:
                   1295: x107:  sh3add  %r26,%r26,%r1           ! sh2add        %r26,%r1,%r1    ! b     e_t02a0 ! sh3add        %r1,%r26,%r1
                   1296:
                   1297: x108:  sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1298:
                   1299: x109:  sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1300:
                   1301: x110:  sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_2t0   ! sh1add        %r1,%r26,%r1
                   1302:
                   1303: x111:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1304:
                   1305: x112:  sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! zdep  %r1,27,28,%r1
                   1306:
                   1307: x113:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_t02a0 !       sh1add  %r1,%r1,%r1
                   1308:
                   1309: x114:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_2t0   !       sh1add  %r1,%r1,%r1
                   1310:
                   1311: x115:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_2t0a0 !       sh1add  %r1,%r1,%r1
                   1312:
                   1313: x116:  sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_4t0   ! sh2add        %r1,%r26,%r1
                   1314:
                   1315: x117:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    !       sh3add  %r1,%r1,%r1
                   1316:
                   1317: x118:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_t0a0  !       sh3add  %r1,%r1,%r1
                   1318:
                   1319: x119:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_t02a0 !       sh3add  %r1,%r1,%r1
                   1320:
                   1321: x120:  sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1322:
                   1323: x121:  sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1324:
                   1325: x122:  sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1326:
                   1327: x123:  sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1328:
                   1329: x124: zdep     %r26,26,27,%r1  ! sub   %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1330:
                   1331: x125:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1332:
                   1333: x126: zdep     %r26,25,26,%r1  ! sub   %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1334:
                   1335: x127: zdep     %r26,24,25,%r1  ! comb,<>       %r25,0,l0       ! sub   %r1,%r26,%r1    ! b,n   ret_t0
                   1336:
                   1337: x128: zdep     %r26,24,25,%r1  ! comb,<>       %r25,0,l1       !       add     %r29,%r1,%r29   ! bv,n  0(r31)
                   1338:
                   1339: x129: zdep     %r26,24,25,%r1  ! comb,<>       %r25,0,l0       ! add   %r1,%r26,%r1    ! b,n   ret_t0
                   1340:
                   1341: x130: zdep     %r26,25,26,%r1  ! add   %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1342:
                   1343: x131:  sh3add  %r26,0,%r1              ! sh3add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1344:
                   1345: x132:  sh3add  %r26,0,%r1              ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1346:
                   1347: x133:  sh3add  %r26,0,%r1              ! sh2add        %r1,%r26,%r1    !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1348:
                   1349: x134:  sh3add  %r26,0,%r1              ! sh2add        %r1,%r26,%r1    !       b       e_2t0   ! sh1add        %r1,%r26,%r1
                   1350:
                   1351: x135:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1352:
                   1353: x136:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1354:
                   1355: x137:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1356:
                   1357: x138:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1358:
                   1359: x139:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    ! b     e_2t0a0 ! sh2add        %r1,%r26,%r1
                   1360:
                   1361: x140:  sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_4t0   !       sh2add  %r1,%r1,%r1
                   1362:
                   1363: x141:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    ! b     e_4t0a0 ! sh1add        %r1,%r26,%r1
                   1364:
                   1365: x142:  sh3add  %r26,%r26,%r1           !       sh3add  %r1,0,%r1       !       b       e_2t0   ! sub   %r1,%r26,%r1
                   1366:
                   1367: x143: zdep     %r26,27,28,%r1  !       sh3add  %r1,%r1,%r1     !       b       e_t0    ! sub   %r1,%r26,%r1
                   1368:
                   1369: x144:  sh3add  %r26,%r26,%r1           !       sh3add  %r1,0,%r1       ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1370:
                   1371: x145:  sh3add  %r26,%r26,%r1           !       sh3add  %r1,0,%r1       !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1372:
                   1373: x146:  sh3add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1374:
                   1375: x147:  sh3add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1376:
                   1377: x148:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1378:
                   1379: x149:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1380:
                   1381: x150:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_2t0   ! sh1add        %r1,%r26,%r1
                   1382:
                   1383: x151:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_2t0a0 ! sh1add        %r1,%r26,%r1
                   1384:
                   1385: x152:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1386:
                   1387: x153:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1388:
                   1389: x154:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1390:
                   1391: x155: zdep     %r26,26,27,%r1  ! sub   %r1,%r26,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1392:
                   1393: x156:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_4t0   ! sh1add        %r1,%r26,%r1
                   1394:
                   1395: x157: zdep     %r26,26,27,%r1  ! sub   %r1,%r26,%r1    ! b     e_t02a0 !       sh2add  %r1,%r1,%r1
                   1396:
                   1397: x158: zdep     %r26,27,28,%r1  !       sh2add  %r1,%r1,%r1     !       b       e_2t0   ! sub   %r1,%r26,%r1
                   1398:
                   1399: x159: zdep     %r26,26,27,%r1  !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sub   %r1,%r26,%r1
                   1400:
                   1401: x160:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,0,%r1       ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1402:
                   1403: x161:  sh3add  %r26,0,%r1              !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1404:
                   1405: x162:  sh3add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1406:
                   1407: x163:  sh3add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     !       b       e_t0    ! sh1add        %r1,%r26,%r1
                   1408:
                   1409: x164:  sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1410:
                   1411: x165:  sh3add  %r26,0,%r1              ! sh2add        %r1,%r26,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1412:
                   1413: x166:  sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    !       b       e_2t0   ! sh1add        %r1,%r26,%r1
                   1414:
                   1415: x167:  sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    ! b     e_2t0a0 ! sh1add        %r1,%r26,%r1
                   1416:
                   1417: x168:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1418:
                   1419: x169:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1420:
                   1421: x170: zdep     %r26,26,27,%r1  ! sh1add        %r26,%r1,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1422:
                   1423: x171:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_t0    !       sh3add  %r1,%r1,%r1
                   1424:
                   1425: x172:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_4t0   ! sh1add        %r1,%r26,%r1
                   1426:
                   1427: x173:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_t02a0 !       sh3add  %r1,%r1,%r1
                   1428:
                   1429: x174: zdep     %r26,26,27,%r1  ! sh1add        %r26,%r1,%r1    ! b     e_t04a0 !       sh2add  %r1,%r1,%r1
                   1430:
                   1431: x175:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    !       b       e_5t0   ! sh1add        %r1,%r26,%r1
                   1432:
                   1433: x176:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_8t0   ! add   %r1,%r26,%r1
                   1434:
                   1435: x177:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_8t0a0 ! add   %r1,%r26,%r1
                   1436:
                   1437: x178:  sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_2t0   ! sh3add        %r1,%r26,%r1
                   1438:
                   1439: x179:  sh2add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_2t0a0 ! sh3add        %r1,%r26,%r1
                   1440:
                   1441: x180:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1442:
                   1443: x181:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1444:
                   1445: x182:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_2t0   ! sh1add        %r1,%r26,%r1
                   1446:
                   1447: x183:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_2t0a0 ! sh1add        %r1,%r26,%r1
                   1448:
                   1449: x184:  sh2add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     !       b       e_4t0   ! add   %r1,%r26,%r1
                   1450:
                   1451: x185:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1452:
                   1453: x186: zdep     %r26,26,27,%r1  ! sub   %r1,%r26,%r1    !       b       e_2t0   !       sh1add  %r1,%r1,%r1
                   1454:
                   1455: x187:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_t02a0 !       sh2add  %r1,%r1,%r1
                   1456:
                   1457: x188:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_4t0   ! sh1add        %r26,%r1,%r1
                   1458:
                   1459: x189:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_t0    !       sh3add  %r1,%r1,%r1
                   1460:
                   1461: x190:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_2t0   !       sh2add  %r1,%r1,%r1
                   1462:
                   1463: x191: zdep     %r26,25,26,%r1  !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sub   %r1,%r26,%r1
                   1464:
                   1465: x192:  sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1466:
                   1467: x193:  sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1468:
                   1469: x194:  sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1470:
                   1471: x195:  sh3add  %r26,0,%r1              ! sh3add        %r1,%r26,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1472:
                   1473: x196:  sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     !       b       e_4t0   ! sh1add        %r1,%r26,%r1
                   1474:
                   1475: x197:  sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     ! b     e_4t0a0 ! sh1add        %r1,%r26,%r1
                   1476:
                   1477: x198: zdep     %r26,25,26,%r1  ! sh1add        %r26,%r1,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1478:
                   1479: x199:  sh3add  %r26,0,%r1              ! sh2add        %r1,%r26,%r1    ! b     e_2t0a0 !       sh1add  %r1,%r1,%r1
                   1480:
                   1481: x200:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1482:
                   1483: x201:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1484:
                   1485: x202:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1486:
                   1487: x203:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_2t0a0 ! sh2add        %r1,%r26,%r1
                   1488:
                   1489: x204:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    !       b       e_4t0   !       sh1add  %r1,%r1,%r1
                   1490:
                   1491: x205:  sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1492:
                   1493: x206: zdep     %r26,25,26,%r1  ! sh2add        %r26,%r1,%r1    ! b     e_t02a0 !       sh1add  %r1,%r1,%r1
                   1494:
                   1495: x207:  sh3add  %r26,0,%r1              ! sh1add        %r1,%r26,%r1    !       b       e_3t0   ! sh2add        %r1,%r26,%r1
                   1496:
                   1497: x208:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_8t0   ! add   %r1,%r26,%r1
                   1498:
                   1499: x209:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_8t0a0 ! add   %r1,%r26,%r1
                   1500:
                   1501: x210:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_2t0   !       sh2add  %r1,%r1,%r1
                   1502:
                   1503: x211:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_2t0a0 !       sh2add  %r1,%r1,%r1
                   1504:
                   1505: x212:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_4t0   ! sh2add        %r1,%r26,%r1
                   1506:
                   1507: x213:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_4t0a0 ! sh2add        %r1,%r26,%r1
                   1508:
                   1509: x214:  sh3add  %r26,%r26,%r1           ! sh2add        %r26,%r1,%r1    ! b     e2t04a0 ! sh3add        %r1,%r26,%r1
                   1510:
                   1511: x215:  sh2add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_5t0   ! sh1add        %r1,%r26,%r1
                   1512:
                   1513: x216:  sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1514:
                   1515: x217:  sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1516:
                   1517: x218:  sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_2t0   ! sh2add        %r1,%r26,%r1
                   1518:
                   1519: x219:  sh3add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1520:
                   1521: x220:  sh1add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     !       b       e_4t0   ! sh1add        %r1,%r26,%r1
                   1522:
                   1523: x221:  sh1add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     ! b     e_4t0a0 ! sh1add        %r1,%r26,%r1
                   1524:
                   1525: x222:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_2t0   !       sh1add  %r1,%r1,%r1
                   1526:
                   1527: x223:  sh3add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_2t0a0 !       sh1add  %r1,%r1,%r1
                   1528:
                   1529: x224:  sh3add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_8t0   ! add   %r1,%r26,%r1
                   1530:
                   1531: x225:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_t0    !       sh2add  %r1,%r1,%r1
                   1532:
                   1533: x226:  sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_t02a0 ! zdep  %r1,26,27,%r1
                   1534:
                   1535: x227:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_t02a0 !       sh2add  %r1,%r1,%r1
                   1536:
                   1537: x228:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_4t0   !       sh1add  %r1,%r1,%r1
                   1538:
                   1539: x229:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_4t0a0 !       sh1add  %r1,%r1,%r1
                   1540:
                   1541: x230:  sh3add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_5t0   ! add   %r1,%r26,%r1
                   1542:
                   1543: x231:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_3t0   ! sh2add        %r1,%r26,%r1
                   1544:
                   1545: x232:  sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    !       b       e_8t0   ! sh2add        %r1,%r26,%r1
                   1546:
                   1547: x233:  sh1add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e_8t0a0 ! sh2add        %r1,%r26,%r1
                   1548:
                   1549: x234:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    !       b       e_2t0   !       sh3add  %r1,%r1,%r1
                   1550:
                   1551: x235:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e_2t0a0 !       sh3add  %r1,%r1,%r1
                   1552:
                   1553: x236:  sh3add  %r26,%r26,%r1           ! sh1add        %r1,%r26,%r1    ! b     e4t08a0 !       sh1add  %r1,%r1,%r1
                   1554:
                   1555: x237: zdep     %r26,27,28,%r1  !       sh2add  %r1,%r1,%r1     !       b       e_3t0   ! sub   %r1,%r26,%r1
                   1556:
                   1557: x238:  sh1add  %r26,%r26,%r1           ! sh2add        %r1,%r26,%r1    ! b     e2t04a0 !       sh3add  %r1,%r1,%r1
                   1558:
                   1559: x239: zdep     %r26,27,28,%r1  !       sh2add  %r1,%r1,%r1     ! b     e_t0ma0 !       sh1add  %r1,%r1,%r1
                   1560:
                   1561: x240:  sh3add  %r26,%r26,%r1           ! add   %r1,%r26,%r1    !       b       e_8t0   !       sh1add  %r1,%r1,%r1
                   1562:
                   1563: x241:  sh3add  %r26,%r26,%r1           ! add   %r1,%r26,%r1    ! b     e_8t0a0 !       sh1add  %r1,%r1,%r1
                   1564:
                   1565: x242:  sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_2t0   ! sh3add        %r1,%r26,%r1
                   1566:
                   1567: x243:  sh3add  %r26,%r26,%r1           !       sh3add  %r1,%r1,%r1     !       b       e_t0    !       sh1add  %r1,%r1,%r1
                   1568:
                   1569: x244:  sh2add  %r26,%r26,%r1           !       sh1add  %r1,%r1,%r1     !       b       e_4t0   ! sh2add        %r1,%r26,%r1
                   1570:
                   1571: x245:  sh3add  %r26,0,%r1              !       sh1add  %r1,%r1,%r1     !       b       e_5t0   ! sh1add        %r1,%r26,%r1
                   1572:
                   1573: x246:  sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    !       b       e_2t0   !       sh1add  %r1,%r1,%r1
                   1574:
                   1575: x247:  sh2add  %r26,%r26,%r1           ! sh3add        %r1,%r26,%r1    ! b     e_2t0a0 !       sh1add  %r1,%r1,%r1
                   1576:
                   1577: x248: zdep     %r26,26,27,%r1  ! sub   %r1,%r26,%r1    ! b     e_shift ! sh3add        %r1,%r29,%r29
                   1578:
                   1579: x249: zdep     %r26,26,27,%r1  ! sub   %r1,%r26,%r1    !       b       e_t0    ! sh3add        %r1,%r26,%r1
                   1580:
                   1581: x250:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     !       b       e_2t0   !       sh2add  %r1,%r1,%r1
                   1582:
                   1583: x251:  sh2add  %r26,%r26,%r1           !       sh2add  %r1,%r1,%r1     ! b     e_2t0a0 !       sh2add  %r1,%r1,%r1
                   1584:
                   1585: x252: zdep     %r26,25,26,%r1  ! sub   %r1,%r26,%r1    ! b     e_shift ! sh2add        %r1,%r29,%r29
                   1586:
                   1587: x253: zdep     %r26,25,26,%r1  ! sub   %r1,%r26,%r1    !       b       e_t0    ! sh2add        %r1,%r26,%r1
                   1588:
                   1589: x254: zdep     %r26,24,25,%r1  ! sub   %r1,%r26,%r1    ! b     e_shift ! sh1add        %r1,%r29,%r29
                   1590:
                   1591: x255: zdep     %r26,23,24,%r1  ! comb,<>       %r25,0,l0       ! sub   %r1,%r26,%r1    ! b,n   ret_t0
                   1592:
                   1593: ;1040 insts before this.
                   1594: ret_t0: bv     0(r31)
                   1595:
                   1596: e_t0:  add     %r29,%r1,%r29
                   1597:
                   1598: e_shift: comb,<>       %r25,0,l2
                   1599:
                   1600:        zdep    %r26,23,24,%r26 ; %r26 <<= 8 ***********
                   1601:        bv,n  0(r31)
                   1602: e_t0ma0: comb,<>       %r25,0,l0
                   1603:
                   1604:        sub     %r1,%r26,%r1
                   1605:        bv      0(r31)
                   1606:        add     %r29,%r1,%r29
                   1607: e_t0a0: comb,<>        %r25,0,l0
                   1608:
                   1609:        add     %r1,%r26,%r1
                   1610:        bv      0(r31)
                   1611:        add     %r29,%r1,%r29
                   1612: e_t02a0: comb,<>       %r25,0,l0
                   1613:
                   1614:        sh1add  %r26,%r1,%r1
                   1615:        bv      0(r31)
                   1616:        add     %r29,%r1,%r29
                   1617: e_t04a0: comb,<>       %r25,0,l0
                   1618:
                   1619:        sh2add  %r26,%r1,%r1
                   1620:        bv      0(r31)
                   1621:        add     %r29,%r1,%r29
                   1622: e_2t0: comb,<> %r25,0,l1
                   1623:
                   1624:        sh1add  %r1,%r29,%r29
                   1625:        bv,n  0(r31)
                   1626: e_2t0a0: comb,<>       %r25,0,l0
                   1627:
                   1628:        sh1add  %r1,%r26,%r1
                   1629:        bv      0(r31)
                   1630:        add     %r29,%r1,%r29
                   1631: e2t04a0: sh1add        %r26,%r1,%r1
                   1632:
                   1633:        comb,<> %r25,0,l1
                   1634:        sh1add  %r1,%r29,%r29
                   1635:        bv,n  0(r31)
                   1636: e_3t0: comb,<> %r25,0,l0
                   1637:
                   1638:        sh1add  %r1,%r1,%r1
                   1639:        bv      0(r31)
                   1640:        add     %r29,%r1,%r29
                   1641: e_4t0: comb,<> %r25,0,l1
                   1642:
                   1643:        sh2add  %r1,%r29,%r29
                   1644:        bv,n  0(r31)
                   1645: e_4t0a0: comb,<>       %r25,0,l0
                   1646:
                   1647:        sh2add  %r1,%r26,%r1
                   1648:        bv      0(r31)
                   1649:        add     %r29,%r1,%r29
                   1650: e4t08a0: sh1add        %r26,%r1,%r1
                   1651:
                   1652:        comb,<> %r25,0,l1
                   1653:        sh2add  %r1,%r29,%r29
                   1654:        bv,n  0(r31)
                   1655: e_5t0: comb,<> %r25,0,l0
                   1656:
                   1657:        sh2add  %r1,%r1,%r1
                   1658:        bv      0(r31)
                   1659:        add     %r29,%r1,%r29
                   1660: e_8t0: comb,<> %r25,0,l1
                   1661:
                   1662:        sh3add  %r1,%r29,%r29
                   1663:        bv,n  0(r31)
                   1664: e_8t0a0: comb,<>       %r25,0,l0
                   1665:
                   1666:        sh3add  %r1,%r26,%r1
                   1667:        bv      0(r31)
                   1668:        add     %r29,%r1,%r29
                   1669:
                   1670:        .procend
                   1671:        .end
                   1672:
                   1673:        .import $$divI_2,millicode
                   1674:        .import $$divI_3,millicode
                   1675:        .import $$divI_4,millicode
                   1676:        .import $$divI_5,millicode
                   1677:        .import $$divI_6,millicode
                   1678:        .import $$divI_7,millicode
                   1679:        .import $$divI_8,millicode
                   1680:        .import $$divI_9,millicode
                   1681:        .import $$divI_10,millicode
                   1682:        .import $$divI_12,millicode
                   1683:        .import $$divI_14,millicode
                   1684:        .import $$divI_15,millicode
                   1685:        .export $$divI,millicode
                   1686:        .export $$divoI,millicode
                   1687: $$divoI:
                   1688:        .proc
                   1689:        .callinfo       NO_CALLS
                   1690:        comib,=,n  -1,arg1,negative1    ; when divisor == -1
                   1691: $$divI:
                   1692:        comib,>>=,n 15,arg1,small_divisor
                   1693:        add,>=  0,arg0,retreg           ; move dividend, if retreg < 0,
                   1694: normal1:
                   1695:          sub   0,retreg,retreg         ;   make it positive
                   1696:        sub     0,arg1,temp             ; clear carry,
                   1697:                                        ;   negate the divisor
                   1698:        ds      0,temp,0                ; set V-bit to the comple-
                   1699:                                        ;   ment of the divisor sign
                   1700:        add     retreg,retreg,retreg    ; shift msb bit into carry
                   1701:        ds      r0,arg1,temp            ; 1st divide step, if no carry
                   1702:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1703:        ds      temp,arg1,temp          ; 2nd divide step
                   1704:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1705:        ds      temp,arg1,temp          ; 3rd divide step
                   1706:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1707:        ds      temp,arg1,temp          ; 4th divide step
                   1708:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1709:        ds      temp,arg1,temp          ; 5th divide step
                   1710:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1711:        ds      temp,arg1,temp          ; 6th divide step
                   1712:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1713:        ds      temp,arg1,temp          ; 7th divide step
                   1714:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1715:        ds      temp,arg1,temp          ; 8th divide step
                   1716:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1717:        ds      temp,arg1,temp          ; 9th divide step
                   1718:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1719:        ds      temp,arg1,temp          ; 10th divide step
                   1720:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1721:        ds      temp,arg1,temp          ; 11th divide step
                   1722:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1723:        ds      temp,arg1,temp          ; 12th divide step
                   1724:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1725:        ds      temp,arg1,temp          ; 13th divide step
                   1726:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1727:        ds      temp,arg1,temp          ; 14th divide step
                   1728:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1729:        ds      temp,arg1,temp          ; 15th divide step
                   1730:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1731:        ds      temp,arg1,temp          ; 16th divide step
                   1732:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1733:        ds      temp,arg1,temp          ; 17th divide step
                   1734:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1735:        ds      temp,arg1,temp          ; 18th divide step
                   1736:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1737:        ds      temp,arg1,temp          ; 19th divide step
                   1738:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1739:        ds      temp,arg1,temp          ; 20th divide step
                   1740:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1741:        ds      temp,arg1,temp          ; 21st divide step
                   1742:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1743:        ds      temp,arg1,temp          ; 22nd divide step
                   1744:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1745:        ds      temp,arg1,temp          ; 23rd divide step
                   1746:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1747:        ds      temp,arg1,temp          ; 24th divide step
                   1748:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1749:        ds      temp,arg1,temp          ; 25th divide step
                   1750:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1751:        ds      temp,arg1,temp          ; 26th divide step
                   1752:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1753:        ds      temp,arg1,temp          ; 27th divide step
                   1754:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1755:        ds      temp,arg1,temp          ; 28th divide step
                   1756:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1757:        ds      temp,arg1,temp          ; 29th divide step
                   1758:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1759:        ds      temp,arg1,temp          ; 30th divide step
                   1760:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1761:        ds      temp,arg1,temp          ; 31st divide step
                   1762:        addc    retreg,retreg,retreg    ; shift retreg with/into carry
                   1763:        ds      temp,arg1,temp          ; 32nd divide step,
                   1764:        addc    retreg,retreg,retreg    ; shift last retreg bit into retreg
                   1765:        xor,>=  arg0,arg1,0             ; get correct sign of quotient
                   1766:          sub   0,retreg,retreg         ;   based on operand signs
                   1767:        bv,n  0(r31)
                   1768:        nop
                   1769: ;______________________________________________________________________
                   1770: small_divisor:
                   1771:        blr,n   arg1,r0
                   1772:        nop
                   1773: ; table for divisor == 0,1, ... ,15
                   1774:        addit,= 0,arg1,r0       ; trap if divisor == 0
                   1775:        nop
                   1776:        bv      0(r31)          ; divisor == 1
                   1777:        copy    arg0,retreg
                   1778:         b,n    $$divI_2        ; divisor == 2
                   1779:        nop
                   1780:         b,n    $$divI_3        ; divisor == 3
                   1781:        nop
                   1782:         b,n    $$divI_4        ; divisor == 4
                   1783:        nop
                   1784:         b,n    $$divI_5        ; divisor == 5
                   1785:        nop
                   1786:         b,n    $$divI_6        ; divisor == 6
                   1787:        nop
                   1788:         b,n    $$divI_7        ; divisor == 7
                   1789:        nop
                   1790:         b,n    $$divI_8        ; divisor == 8
                   1791:        nop
                   1792:         b,n    $$divI_9        ; divisor == 9
                   1793:        nop
                   1794:         b,n    $$divI_10       ; divisor == 10
                   1795:        nop
                   1796:        b       normal1         ; divisor == 11
                   1797:        add,>=  0,arg0,retreg
                   1798:         b,n    $$divI_12       ; divisor == 12
                   1799:        nop
                   1800:        b       normal1         ; divisor == 13
                   1801:        add,>=  0,arg0,retreg
                   1802:         b,n    $$divI_14       ; divisor == 14
                   1803:        nop
                   1804:         b,n    $$divI_15       ; divisor == 15
                   1805:        nop
                   1806: ;______________________________________________________________________
                   1807: negative1:
                   1808:        sub     0,arg0,retreg   ; result is negation of dividend
                   1809:        bv      0(r31)
                   1810:        addo    arg0,arg1,r0    ; trap iff dividend==0x80000000 && divisor==-1
                   1811:        .procend
                   1812:        .end

CVSweb