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