[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     ! 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