Home | History | Annotate | Line # | Download | only in sh
lib1funcs.S revision 1.10
      1  1.10  mrg /* Copyright (C) 1994-2022 Free Software Foundation, Inc.
      2   1.1  mrg 
      3   1.1  mrg This file is free software; you can redistribute it and/or modify it
      4   1.1  mrg under the terms of the GNU General Public License as published by the
      5   1.1  mrg Free Software Foundation; either version 3, or (at your option) any
      6   1.1  mrg later version.
      7   1.1  mrg 
      8   1.1  mrg This file is distributed in the hope that it will be useful, but
      9   1.1  mrg WITHOUT ANY WARRANTY; without even the implied warranty of
     10   1.1  mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     11   1.1  mrg General Public License for more details.
     12   1.1  mrg 
     13   1.1  mrg Under Section 7 of GPL version 3, you are granted additional
     14   1.1  mrg permissions described in the GCC Runtime Library Exception, version
     15   1.1  mrg 3.1, as published by the Free Software Foundation.
     16   1.1  mrg 
     17   1.1  mrg You should have received a copy of the GNU General Public License and
     18   1.1  mrg a copy of the GCC Runtime Library Exception along with this program;
     19   1.1  mrg see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     20   1.1  mrg <http://www.gnu.org/licenses/>.  */
     21   1.1  mrg 
     22   1.1  mrg 
     23   1.1  mrg !! libgcc routines for the Renesas / SuperH SH CPUs.
     24   1.1  mrg !! Contributed by Steve Chamberlain.
     25   1.1  mrg !! sac@cygnus.com
     26   1.1  mrg 
     27   1.1  mrg !! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
     28   1.1  mrg !! recoded in assembly by Toshiyasu Morita
     29   1.1  mrg !! tm@netcom.com
     30   1.1  mrg 
     31   1.1  mrg #if defined(__ELF__) && defined(__linux__)
     32   1.1  mrg .section .note.GNU-stack,"",%progbits
     33   1.1  mrg .previous
     34   1.1  mrg #endif
     35   1.1  mrg 
     36   1.1  mrg /* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
     37   1.1  mrg    ELF local label prefixes by J"orn Rennecke
     38   1.1  mrg    amylaar (at) cygnus.com  */
     39   1.1  mrg 
     40   1.1  mrg #include "lib1funcs.h"
     41   1.1  mrg 
     42   1.1  mrg /* t-vxworks needs to build both PIC and non-PIC versions of libgcc,
     43   1.1  mrg    so it is more convenient to define NO_FPSCR_VALUES here than to
     44   1.1  mrg    define it on the command line.  */
     45   1.1  mrg #if defined __vxworks && defined __PIC__
     46   1.1  mrg #define NO_FPSCR_VALUES
     47   1.1  mrg #endif
     48   1.1  mrg 
     49   1.1  mrg #ifdef L_ashiftrt
     50   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_0)
     51   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_1)
     52   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_2)
     53   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_3)
     54   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_4)
     55   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_5)
     56   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_6)
     57   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_7)
     58   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_8)
     59   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_9)
     60   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_10)
     61   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_11)
     62   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_12)
     63   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_13)
     64   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_14)
     65   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_15)
     66   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_16)
     67   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_17)
     68   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_18)
     69   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_19)
     70   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_20)
     71   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_21)
     72   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_22)
     73   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_23)
     74   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_24)
     75   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_25)
     76   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_26)
     77   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_27)
     78   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_28)
     79   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_29)
     80   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_30)
     81   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_31)
     82   1.1  mrg 	.global	GLOBAL(ashiftrt_r4_32)
     83   1.1  mrg 
     84   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_0))
     85   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_1))
     86   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_2))
     87   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_3))
     88   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_4))
     89   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_5))
     90   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_6))
     91   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_7))
     92   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_8))
     93   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_9))
     94   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_10))
     95   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_11))
     96   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_12))
     97   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_13))
     98   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_14))
     99   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_15))
    100   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_16))
    101   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_17))
    102   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_18))
    103   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_19))
    104   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_20))
    105   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_21))
    106   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_22))
    107   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_23))
    108   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_24))
    109   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_25))
    110   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_26))
    111   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_27))
    112   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_28))
    113   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_29))
    114   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_30))
    115   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_31))
    116   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_32))
    117   1.1  mrg 
    118   1.1  mrg 	.align	1
    119   1.1  mrg GLOBAL(ashiftrt_r4_32):
    120   1.1  mrg GLOBAL(ashiftrt_r4_31):
    121   1.1  mrg 	rotcl	r4
    122   1.1  mrg 	rts
    123   1.1  mrg 	subc	r4,r4
    124   1.1  mrg 
    125   1.1  mrg GLOBAL(ashiftrt_r4_30):
    126   1.1  mrg 	shar	r4
    127   1.1  mrg GLOBAL(ashiftrt_r4_29):
    128   1.1  mrg 	shar	r4
    129   1.1  mrg GLOBAL(ashiftrt_r4_28):
    130   1.1  mrg 	shar	r4
    131   1.1  mrg GLOBAL(ashiftrt_r4_27):
    132   1.1  mrg 	shar	r4
    133   1.1  mrg GLOBAL(ashiftrt_r4_26):
    134   1.1  mrg 	shar	r4
    135   1.1  mrg GLOBAL(ashiftrt_r4_25):
    136   1.1  mrg 	shar	r4
    137   1.1  mrg GLOBAL(ashiftrt_r4_24):
    138   1.1  mrg 	shlr16	r4
    139   1.1  mrg 	shlr8	r4
    140   1.1  mrg 	rts
    141   1.1  mrg 	exts.b	r4,r4
    142   1.1  mrg 
    143   1.1  mrg GLOBAL(ashiftrt_r4_23):
    144   1.1  mrg 	shar	r4
    145   1.1  mrg GLOBAL(ashiftrt_r4_22):
    146   1.1  mrg 	shar	r4
    147   1.1  mrg GLOBAL(ashiftrt_r4_21):
    148   1.1  mrg 	shar	r4
    149   1.1  mrg GLOBAL(ashiftrt_r4_20):
    150   1.1  mrg 	shar	r4
    151   1.1  mrg GLOBAL(ashiftrt_r4_19):
    152   1.1  mrg 	shar	r4
    153   1.1  mrg GLOBAL(ashiftrt_r4_18):
    154   1.1  mrg 	shar	r4
    155   1.1  mrg GLOBAL(ashiftrt_r4_17):
    156   1.1  mrg 	shar	r4
    157   1.1  mrg GLOBAL(ashiftrt_r4_16):
    158   1.1  mrg 	shlr16	r4
    159   1.1  mrg 	rts
    160   1.1  mrg 	exts.w	r4,r4
    161   1.1  mrg 
    162   1.1  mrg GLOBAL(ashiftrt_r4_15):
    163   1.1  mrg 	shar	r4
    164   1.1  mrg GLOBAL(ashiftrt_r4_14):
    165   1.1  mrg 	shar	r4
    166   1.1  mrg GLOBAL(ashiftrt_r4_13):
    167   1.1  mrg 	shar	r4
    168   1.1  mrg GLOBAL(ashiftrt_r4_12):
    169   1.1  mrg 	shar	r4
    170   1.1  mrg GLOBAL(ashiftrt_r4_11):
    171   1.1  mrg 	shar	r4
    172   1.1  mrg GLOBAL(ashiftrt_r4_10):
    173   1.1  mrg 	shar	r4
    174   1.1  mrg GLOBAL(ashiftrt_r4_9):
    175   1.1  mrg 	shar	r4
    176   1.1  mrg GLOBAL(ashiftrt_r4_8):
    177   1.1  mrg 	shar	r4
    178   1.1  mrg GLOBAL(ashiftrt_r4_7):
    179   1.1  mrg 	shar	r4
    180   1.1  mrg GLOBAL(ashiftrt_r4_6):
    181   1.1  mrg 	shar	r4
    182   1.1  mrg GLOBAL(ashiftrt_r4_5):
    183   1.1  mrg 	shar	r4
    184   1.1  mrg GLOBAL(ashiftrt_r4_4):
    185   1.1  mrg 	shar	r4
    186   1.1  mrg GLOBAL(ashiftrt_r4_3):
    187   1.1  mrg 	shar	r4
    188   1.1  mrg GLOBAL(ashiftrt_r4_2):
    189   1.1  mrg 	shar	r4
    190   1.1  mrg GLOBAL(ashiftrt_r4_1):
    191   1.1  mrg 	rts
    192   1.1  mrg 	shar	r4
    193   1.1  mrg 
    194   1.1  mrg GLOBAL(ashiftrt_r4_0):
    195   1.1  mrg 	rts
    196   1.1  mrg 	nop
    197   1.1  mrg 
    198   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_0))
    199   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_1))
    200   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_2))
    201   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_3))
    202   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_4))
    203   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_5))
    204   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_6))
    205   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_7))
    206   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_8))
    207   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_9))
    208   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_10))
    209   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_11))
    210   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_12))
    211   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_13))
    212   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_14))
    213   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_15))
    214   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_16))
    215   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_17))
    216   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_18))
    217   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_19))
    218   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_20))
    219   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_21))
    220   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_22))
    221   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_23))
    222   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_24))
    223   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_25))
    224   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_26))
    225   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_27))
    226   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_28))
    227   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_29))
    228   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_30))
    229   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_31))
    230   1.1  mrg 	ENDFUNC(GLOBAL(ashiftrt_r4_32))
    231   1.1  mrg #endif
    232   1.1  mrg 
    233   1.1  mrg #ifdef L_ashiftrt_n
    234   1.1  mrg 
    235   1.1  mrg !
    236   1.1  mrg ! GLOBAL(ashrsi3)
    237   1.1  mrg !
    238   1.1  mrg ! Entry:
    239   1.1  mrg !
    240   1.1  mrg ! r4: Value to shift
    241   1.1  mrg ! r5: Shift count
    242   1.1  mrg !
    243   1.1  mrg ! Exit:
    244   1.1  mrg !
    245   1.1  mrg ! r0: Result
    246   1.1  mrg !
    247   1.1  mrg ! Destroys:
    248   1.1  mrg !
    249   1.1  mrg ! T bit, r5
    250   1.1  mrg !
    251   1.1  mrg 
    252   1.1  mrg 	.global	GLOBAL(ashrsi3)
    253   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashrsi3))
    254   1.1  mrg 	.align	2
    255   1.1  mrg GLOBAL(ashrsi3):
    256   1.1  mrg 	mov	#31,r0
    257   1.1  mrg 	and	r0,r5
    258   1.1  mrg 	mova	LOCAL(ashrsi3_table),r0
    259   1.1  mrg 	mov.b	@(r0,r5),r5
    260   1.1  mrg #ifdef __sh1__
    261   1.1  mrg 	add	r5,r0
    262   1.1  mrg 	jmp	@r0
    263   1.1  mrg #else
    264   1.1  mrg 	braf	r5
    265   1.1  mrg #endif
    266   1.1  mrg 	mov	r4,r0
    267   1.1  mrg 
    268   1.1  mrg 	.align	2
    269   1.1  mrg LOCAL(ashrsi3_table):
    270   1.1  mrg 	.byte		LOCAL(ashrsi3_0)-LOCAL(ashrsi3_table)
    271   1.1  mrg 	.byte		LOCAL(ashrsi3_1)-LOCAL(ashrsi3_table)
    272   1.1  mrg 	.byte		LOCAL(ashrsi3_2)-LOCAL(ashrsi3_table)
    273   1.1  mrg 	.byte		LOCAL(ashrsi3_3)-LOCAL(ashrsi3_table)
    274   1.1  mrg 	.byte		LOCAL(ashrsi3_4)-LOCAL(ashrsi3_table)
    275   1.1  mrg 	.byte		LOCAL(ashrsi3_5)-LOCAL(ashrsi3_table)
    276   1.1  mrg 	.byte		LOCAL(ashrsi3_6)-LOCAL(ashrsi3_table)
    277   1.1  mrg 	.byte		LOCAL(ashrsi3_7)-LOCAL(ashrsi3_table)
    278   1.1  mrg 	.byte		LOCAL(ashrsi3_8)-LOCAL(ashrsi3_table)
    279   1.1  mrg 	.byte		LOCAL(ashrsi3_9)-LOCAL(ashrsi3_table)
    280   1.1  mrg 	.byte		LOCAL(ashrsi3_10)-LOCAL(ashrsi3_table)
    281   1.1  mrg 	.byte		LOCAL(ashrsi3_11)-LOCAL(ashrsi3_table)
    282   1.1  mrg 	.byte		LOCAL(ashrsi3_12)-LOCAL(ashrsi3_table)
    283   1.1  mrg 	.byte		LOCAL(ashrsi3_13)-LOCAL(ashrsi3_table)
    284   1.1  mrg 	.byte		LOCAL(ashrsi3_14)-LOCAL(ashrsi3_table)
    285   1.1  mrg 	.byte		LOCAL(ashrsi3_15)-LOCAL(ashrsi3_table)
    286   1.1  mrg 	.byte		LOCAL(ashrsi3_16)-LOCAL(ashrsi3_table)
    287   1.1  mrg 	.byte		LOCAL(ashrsi3_17)-LOCAL(ashrsi3_table)
    288   1.1  mrg 	.byte		LOCAL(ashrsi3_18)-LOCAL(ashrsi3_table)
    289   1.1  mrg 	.byte		LOCAL(ashrsi3_19)-LOCAL(ashrsi3_table)
    290   1.1  mrg 	.byte		LOCAL(ashrsi3_20)-LOCAL(ashrsi3_table)
    291   1.1  mrg 	.byte		LOCAL(ashrsi3_21)-LOCAL(ashrsi3_table)
    292   1.1  mrg 	.byte		LOCAL(ashrsi3_22)-LOCAL(ashrsi3_table)
    293   1.1  mrg 	.byte		LOCAL(ashrsi3_23)-LOCAL(ashrsi3_table)
    294   1.1  mrg 	.byte		LOCAL(ashrsi3_24)-LOCAL(ashrsi3_table)
    295   1.1  mrg 	.byte		LOCAL(ashrsi3_25)-LOCAL(ashrsi3_table)
    296   1.1  mrg 	.byte		LOCAL(ashrsi3_26)-LOCAL(ashrsi3_table)
    297   1.1  mrg 	.byte		LOCAL(ashrsi3_27)-LOCAL(ashrsi3_table)
    298   1.1  mrg 	.byte		LOCAL(ashrsi3_28)-LOCAL(ashrsi3_table)
    299   1.1  mrg 	.byte		LOCAL(ashrsi3_29)-LOCAL(ashrsi3_table)
    300   1.1  mrg 	.byte		LOCAL(ashrsi3_30)-LOCAL(ashrsi3_table)
    301   1.1  mrg 	.byte		LOCAL(ashrsi3_31)-LOCAL(ashrsi3_table)
    302   1.1  mrg 
    303   1.1  mrg LOCAL(ashrsi3_31):
    304   1.1  mrg 	rotcl	r0
    305   1.1  mrg 	rts
    306   1.1  mrg 	subc	r0,r0
    307   1.1  mrg 
    308   1.1  mrg LOCAL(ashrsi3_30):
    309   1.1  mrg 	shar	r0
    310   1.1  mrg LOCAL(ashrsi3_29):
    311   1.1  mrg 	shar	r0
    312   1.1  mrg LOCAL(ashrsi3_28):
    313   1.1  mrg 	shar	r0
    314   1.1  mrg LOCAL(ashrsi3_27):
    315   1.1  mrg 	shar	r0
    316   1.1  mrg LOCAL(ashrsi3_26):
    317   1.1  mrg 	shar	r0
    318   1.1  mrg LOCAL(ashrsi3_25):
    319   1.1  mrg 	shar	r0
    320   1.1  mrg LOCAL(ashrsi3_24):
    321   1.1  mrg 	shlr16	r0
    322   1.1  mrg 	shlr8	r0
    323   1.1  mrg 	rts
    324   1.1  mrg 	exts.b	r0,r0
    325   1.1  mrg 
    326   1.1  mrg LOCAL(ashrsi3_23):
    327   1.1  mrg 	shar	r0
    328   1.1  mrg LOCAL(ashrsi3_22):
    329   1.1  mrg 	shar	r0
    330   1.1  mrg LOCAL(ashrsi3_21):
    331   1.1  mrg 	shar	r0
    332   1.1  mrg LOCAL(ashrsi3_20):
    333   1.1  mrg 	shar	r0
    334   1.1  mrg LOCAL(ashrsi3_19):
    335   1.1  mrg 	shar	r0
    336   1.1  mrg LOCAL(ashrsi3_18):
    337   1.1  mrg 	shar	r0
    338   1.1  mrg LOCAL(ashrsi3_17):
    339   1.1  mrg 	shar	r0
    340   1.1  mrg LOCAL(ashrsi3_16):
    341   1.1  mrg 	shlr16	r0
    342   1.1  mrg 	rts
    343   1.1  mrg 	exts.w	r0,r0
    344   1.1  mrg 
    345   1.1  mrg LOCAL(ashrsi3_15):
    346   1.1  mrg 	shar	r0
    347   1.1  mrg LOCAL(ashrsi3_14):
    348   1.1  mrg 	shar	r0
    349   1.1  mrg LOCAL(ashrsi3_13):
    350   1.1  mrg 	shar	r0
    351   1.1  mrg LOCAL(ashrsi3_12):
    352   1.1  mrg 	shar	r0
    353   1.1  mrg LOCAL(ashrsi3_11):
    354   1.1  mrg 	shar	r0
    355   1.1  mrg LOCAL(ashrsi3_10):
    356   1.1  mrg 	shar	r0
    357   1.1  mrg LOCAL(ashrsi3_9):
    358   1.1  mrg 	shar	r0
    359   1.1  mrg LOCAL(ashrsi3_8):
    360   1.1  mrg 	shar	r0
    361   1.1  mrg LOCAL(ashrsi3_7):
    362   1.1  mrg 	shar	r0
    363   1.1  mrg LOCAL(ashrsi3_6):
    364   1.1  mrg 	shar	r0
    365   1.1  mrg LOCAL(ashrsi3_5):
    366   1.1  mrg 	shar	r0
    367   1.1  mrg LOCAL(ashrsi3_4):
    368   1.1  mrg 	shar	r0
    369   1.1  mrg LOCAL(ashrsi3_3):
    370   1.1  mrg 	shar	r0
    371   1.1  mrg LOCAL(ashrsi3_2):
    372   1.1  mrg 	shar	r0
    373   1.1  mrg LOCAL(ashrsi3_1):
    374   1.1  mrg 	rts
    375   1.1  mrg 	shar	r0
    376   1.1  mrg 
    377   1.1  mrg LOCAL(ashrsi3_0):
    378   1.1  mrg 	rts
    379   1.1  mrg 	nop
    380   1.1  mrg 
    381   1.1  mrg 	ENDFUNC(GLOBAL(ashrsi3))
    382   1.1  mrg #endif
    383   1.1  mrg 
    384   1.1  mrg #ifdef L_ashiftlt
    385   1.1  mrg 
    386   1.1  mrg !
    387   1.1  mrg ! GLOBAL(ashlsi3)
    388   1.1  mrg ! (For compatibility with older binaries, not used by compiler)
    389   1.1  mrg !
    390   1.1  mrg ! Entry:
    391   1.1  mrg !	r4: Value to shift
    392   1.1  mrg !	r5: Shift count
    393   1.1  mrg !
    394   1.1  mrg ! Exit:
    395   1.1  mrg !	r0: Result
    396   1.1  mrg !
    397   1.1  mrg ! Destroys:
    398   1.1  mrg !	T bit
    399   1.1  mrg !
    400   1.1  mrg !
    401   1.1  mrg ! GLOBAL(ashlsi3_r0)
    402   1.1  mrg !
    403   1.1  mrg ! Entry:
    404   1.1  mrg !	r4: Value to shift
    405   1.1  mrg !	r0: Shift count
    406   1.1  mrg !
    407   1.1  mrg ! Exit:
    408   1.1  mrg !	r0: Result
    409   1.1  mrg !
    410   1.1  mrg ! Destroys:
    411   1.1  mrg !	T bit
    412   1.1  mrg 
    413   1.1  mrg 	.global	GLOBAL(ashlsi3)
    414   1.1  mrg 	.global GLOBAL(ashlsi3_r0)
    415   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashlsi3))
    416   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ashlsi3_r0))
    417   1.1  mrg GLOBAL(ashlsi3):
    418   1.1  mrg 	mov	r5,r0
    419   1.1  mrg 	.align	2
    420   1.1  mrg GLOBAL(ashlsi3_r0):
    421   1.1  mrg 
    422   1.1  mrg #ifdef __sh1__
    423   1.1  mrg 	and	#31,r0
    424   1.1  mrg 	shll2	r0
    425   1.1  mrg 	mov.l	r4,@-r15
    426   1.1  mrg 	mov	r0,r4
    427   1.1  mrg 	mova	LOCAL(ashlsi3_table),r0
    428   1.1  mrg 	add	r4,r0
    429   1.1  mrg 	mov.l	@r15+,r4
    430   1.1  mrg 	jmp	@r0
    431   1.1  mrg 	mov	r4,r0
    432   1.1  mrg 	.align 2
    433   1.1  mrg #else
    434   1.1  mrg 	and	#31,r0
    435   1.1  mrg 	shll2	r0
    436   1.1  mrg 	braf	r0
    437   1.1  mrg 	mov	r4,r0
    438   1.1  mrg #endif
    439   1.1  mrg 
    440   1.1  mrg LOCAL(ashlsi3_table):
    441   1.1  mrg 	rts				// << 0
    442   1.1  mrg 	nop
    443   1.1  mrg LOCAL(ashlsi_1):
    444   1.1  mrg 	rts				// << 1
    445   1.1  mrg 	shll	r0
    446   1.1  mrg LOCAL(ashlsi_2):			// << 2
    447   1.1  mrg 	rts
    448   1.1  mrg 	shll2	r0
    449   1.1  mrg 	bra	LOCAL(ashlsi_1)		// << 3
    450   1.1  mrg 	shll2	r0
    451   1.1  mrg 	bra	LOCAL(ashlsi_2)		// << 4
    452   1.1  mrg 	shll2	r0
    453   1.1  mrg 	bra	LOCAL(ashlsi_5)		// << 5
    454   1.1  mrg 	shll	r0
    455   1.1  mrg 	bra	LOCAL(ashlsi_6)		// << 6
    456   1.1  mrg 	shll2	r0
    457   1.1  mrg 	bra	LOCAL(ashlsi_7)		// << 7
    458   1.1  mrg 	shll	r0
    459   1.1  mrg LOCAL(ashlsi_8):			// << 8
    460   1.1  mrg 	rts
    461   1.1  mrg 	shll8	r0
    462   1.1  mrg 	bra	LOCAL(ashlsi_8)		// << 9
    463   1.1  mrg 	shll	r0
    464   1.1  mrg 	bra	LOCAL(ashlsi_8)		// << 10
    465   1.1  mrg 	shll2	r0
    466   1.1  mrg 	bra	LOCAL(ashlsi_11)	// << 11
    467   1.1  mrg 	shll	r0
    468   1.1  mrg 	bra	LOCAL(ashlsi_12)	// << 12
    469   1.1  mrg 	shll2	r0
    470   1.1  mrg 	bra	LOCAL(ashlsi_13)	// << 13
    471   1.1  mrg 	shll	r0
    472   1.1  mrg 	bra	LOCAL(ashlsi_14)	// << 14
    473   1.1  mrg 	shll8	r0
    474   1.1  mrg 	bra	LOCAL(ashlsi_15)	// << 15
    475   1.1  mrg 	shll8	r0
    476   1.1  mrg LOCAL(ashlsi_16):			// << 16
    477   1.1  mrg 	rts
    478   1.1  mrg 	shll16	r0
    479   1.1  mrg 	bra	LOCAL(ashlsi_16)	// << 17
    480   1.1  mrg 	shll	r0
    481   1.1  mrg 	bra	LOCAL(ashlsi_16)	// << 18
    482   1.1  mrg 	shll2	r0
    483   1.1  mrg 	bra	LOCAL(ashlsi_19)	// << 19
    484   1.1  mrg 	shll	r0
    485   1.1  mrg 	bra	LOCAL(ashlsi_20)	// << 20
    486   1.1  mrg 	shll2	r0
    487   1.1  mrg 	bra	LOCAL(ashlsi_21)	// << 21
    488   1.1  mrg 	shll	r0
    489   1.1  mrg 	bra	LOCAL(ashlsi_22)	// << 22
    490   1.1  mrg 	shll16	r0
    491   1.1  mrg 	bra	LOCAL(ashlsi_23)	// << 23
    492   1.1  mrg 	shll16	r0
    493   1.1  mrg 	bra	LOCAL(ashlsi_16)	// << 24
    494   1.1  mrg 	shll8	r0
    495   1.1  mrg 	bra	LOCAL(ashlsi_25)	// << 25
    496   1.1  mrg 	shll	r0
    497   1.1  mrg 	bra	LOCAL(ashlsi_26)	// << 26
    498   1.1  mrg 	shll2	r0
    499   1.1  mrg 	bra	LOCAL(ashlsi_27)	// << 27
    500   1.1  mrg 	shll	r0
    501   1.1  mrg 	bra	LOCAL(ashlsi_28)	// << 28
    502   1.1  mrg 	shll2	r0
    503   1.1  mrg 	bra	LOCAL(ashlsi_29)	// << 29
    504   1.1  mrg 	shll16	r0
    505   1.1  mrg 	bra	LOCAL(ashlsi_30)	// << 30
    506   1.1  mrg 	shll16	r0
    507   1.1  mrg 	and	#1,r0			// << 31
    508   1.1  mrg 	rts
    509   1.1  mrg 	rotr	r0
    510   1.1  mrg 
    511   1.1  mrg LOCAL(ashlsi_7):
    512   1.1  mrg 	shll2	r0
    513   1.1  mrg LOCAL(ashlsi_5):
    514   1.1  mrg LOCAL(ashlsi_6):
    515   1.1  mrg 	shll2	r0
    516   1.1  mrg 	rts
    517   1.1  mrg LOCAL(ashlsi_13):
    518   1.1  mrg 	shll2	r0
    519   1.1  mrg LOCAL(ashlsi_12):
    520   1.1  mrg LOCAL(ashlsi_11):
    521   1.1  mrg 	shll8	r0
    522   1.1  mrg 	rts
    523   1.1  mrg LOCAL(ashlsi_21):
    524   1.1  mrg 	shll2	r0
    525   1.1  mrg LOCAL(ashlsi_20):
    526   1.1  mrg LOCAL(ashlsi_19):
    527   1.1  mrg 	shll16	r0
    528   1.1  mrg 	rts
    529   1.1  mrg LOCAL(ashlsi_28):
    530   1.1  mrg LOCAL(ashlsi_27):
    531   1.1  mrg 	shll2	r0
    532   1.1  mrg LOCAL(ashlsi_26):
    533   1.1  mrg LOCAL(ashlsi_25):
    534   1.1  mrg 	shll16	r0
    535   1.1  mrg 	rts
    536   1.1  mrg 	shll8	r0
    537   1.1  mrg 
    538   1.1  mrg LOCAL(ashlsi_22):
    539   1.1  mrg LOCAL(ashlsi_14):
    540   1.1  mrg 	shlr2	r0
    541   1.1  mrg 	rts
    542   1.1  mrg 	shll8	r0
    543   1.1  mrg 
    544   1.1  mrg LOCAL(ashlsi_23):
    545   1.1  mrg LOCAL(ashlsi_15):
    546   1.1  mrg 	shlr	r0
    547   1.1  mrg 	rts
    548   1.1  mrg 	shll8	r0
    549   1.1  mrg 
    550   1.1  mrg LOCAL(ashlsi_29):
    551   1.1  mrg 	shlr	r0
    552   1.1  mrg LOCAL(ashlsi_30):
    553   1.1  mrg 	shlr2	r0
    554   1.1  mrg 	rts
    555   1.1  mrg 	shll16	r0
    556   1.1  mrg 
    557   1.1  mrg 	ENDFUNC(GLOBAL(ashlsi3))
    558   1.1  mrg 	ENDFUNC(GLOBAL(ashlsi3_r0))
    559   1.1  mrg #endif
    560   1.1  mrg 
    561   1.1  mrg #ifdef L_lshiftrt
    562   1.1  mrg 
    563   1.1  mrg !
    564   1.1  mrg ! GLOBAL(lshrsi3)
    565   1.1  mrg ! (For compatibility with older binaries, not used by compiler)
    566   1.1  mrg !
    567   1.1  mrg ! Entry:
    568   1.1  mrg !	r4: Value to shift
    569   1.1  mrg !	r5: Shift count
    570   1.1  mrg !
    571   1.1  mrg ! Exit:
    572   1.1  mrg !	r0: Result
    573   1.1  mrg !
    574   1.1  mrg ! Destroys:
    575   1.1  mrg !	T bit
    576   1.1  mrg !
    577   1.1  mrg !
    578   1.1  mrg ! GLOBAL(lshrsi3_r0)
    579   1.1  mrg !
    580   1.1  mrg ! Entry:
    581   1.1  mrg !	r4: Value to shift
    582   1.1  mrg !	r0: Shift count
    583   1.1  mrg !
    584   1.1  mrg ! Exit:
    585   1.1  mrg !	r0: Result
    586   1.1  mrg !
    587   1.1  mrg ! Destroys:
    588   1.1  mrg !	T bit
    589   1.1  mrg 
    590   1.1  mrg 	.global	GLOBAL(lshrsi3)
    591   1.1  mrg 	.global	GLOBAL(lshrsi3_r0)
    592   1.1  mrg 	HIDDEN_FUNC(GLOBAL(lshrsi3))
    593   1.1  mrg 	HIDDEN_FUNC(GLOBAL(lshrsi3_r0))
    594   1.1  mrg GLOBAL(lshrsi3):
    595   1.1  mrg 	mov	r5,r0
    596   1.1  mrg 	.align	2
    597   1.1  mrg GLOBAL(lshrsi3_r0):
    598   1.1  mrg 
    599   1.1  mrg #ifdef __sh1__
    600   1.1  mrg 	and	#31,r0
    601   1.1  mrg 	shll2	r0
    602   1.1  mrg 	mov.l	r4,@-r15
    603   1.1  mrg 	mov	r0,r4
    604   1.1  mrg 	mova	LOCAL(lshrsi3_table),r0
    605   1.1  mrg 	add	r4,r0
    606   1.1  mrg 	mov.l	@r15+,r4
    607   1.1  mrg 	jmp	@r0
    608   1.1  mrg 	mov	r4,r0
    609   1.1  mrg 	.align 2
    610   1.1  mrg #else
    611   1.1  mrg 	and	#31,r0
    612   1.1  mrg 	shll2	r0
    613   1.1  mrg 	braf	r0
    614   1.1  mrg 	mov	r4,r0
    615   1.1  mrg #endif
    616   1.1  mrg LOCAL(lshrsi3_table):
    617   1.1  mrg 	rts				// >> 0
    618   1.1  mrg 	nop
    619   1.1  mrg LOCAL(lshrsi_1):			// >> 1
    620   1.1  mrg 	rts
    621   1.1  mrg 	shlr	r0
    622   1.1  mrg LOCAL(lshrsi_2):			// >> 2
    623   1.1  mrg 	rts
    624   1.1  mrg 	shlr2	r0
    625   1.1  mrg 	bra	LOCAL(lshrsi_1)		// >> 3
    626   1.1  mrg 	shlr2	r0
    627   1.1  mrg 	bra	LOCAL(lshrsi_2)		// >> 4
    628   1.1  mrg 	shlr2	r0
    629   1.1  mrg 	bra	LOCAL(lshrsi_5)		// >> 5
    630   1.1  mrg 	shlr	r0
    631   1.1  mrg 	bra	LOCAL(lshrsi_6)		// >> 6
    632   1.1  mrg 	shlr2	r0
    633   1.1  mrg 	bra	LOCAL(lshrsi_7)		// >> 7
    634   1.1  mrg 	shlr	r0
    635   1.1  mrg LOCAL(lshrsi_8):			// >> 8
    636   1.1  mrg 	rts
    637   1.1  mrg 	shlr8	r0
    638   1.1  mrg 	bra	LOCAL(lshrsi_8)		// >> 9
    639   1.1  mrg 	shlr	r0
    640   1.1  mrg 	bra	LOCAL(lshrsi_8)		// >> 10
    641   1.1  mrg 	shlr2	r0
    642   1.1  mrg 	bra	LOCAL(lshrsi_11)	// >> 11
    643   1.1  mrg 	shlr	r0
    644   1.1  mrg 	bra	LOCAL(lshrsi_12)	// >> 12
    645   1.1  mrg 	shlr2	r0
    646   1.1  mrg 	bra	LOCAL(lshrsi_13)	// >> 13
    647   1.1  mrg 	shlr	r0
    648   1.1  mrg 	bra	LOCAL(lshrsi_14)	// >> 14
    649   1.1  mrg 	shlr8	r0
    650   1.1  mrg 	bra	LOCAL(lshrsi_15)	// >> 15
    651   1.1  mrg 	shlr8	r0
    652   1.1  mrg LOCAL(lshrsi_16):			// >> 16
    653   1.1  mrg 	rts
    654   1.1  mrg 	shlr16	r0
    655   1.1  mrg 	bra	LOCAL(lshrsi_16)	// >> 17
    656   1.1  mrg 	shlr	r0
    657   1.1  mrg 	bra	LOCAL(lshrsi_16)	// >> 18
    658   1.1  mrg 	shlr2	r0
    659   1.1  mrg 	bra	LOCAL(lshrsi_19)	// >> 19
    660   1.1  mrg 	shlr	r0
    661   1.1  mrg 	bra	LOCAL(lshrsi_20)	// >> 20
    662   1.1  mrg 	shlr2	r0
    663   1.1  mrg 	bra	LOCAL(lshrsi_21)	// >> 21
    664   1.1  mrg 	shlr	r0
    665   1.1  mrg 	bra	LOCAL(lshrsi_22)	// >> 22
    666   1.1  mrg 	shlr16	r0
    667   1.1  mrg 	bra	LOCAL(lshrsi_23)	// >> 23
    668   1.1  mrg 	shlr16	r0
    669   1.1  mrg 	bra	LOCAL(lshrsi_16)	// >> 24
    670   1.1  mrg 	shlr8	r0
    671   1.1  mrg 	bra	LOCAL(lshrsi_25)	// >> 25
    672   1.1  mrg 	shlr	r0
    673   1.1  mrg 	bra	LOCAL(lshrsi_26)	// >> 26
    674   1.1  mrg 	shlr2	r0
    675   1.1  mrg 	bra	LOCAL(lshrsi_27)	// >> 27
    676   1.1  mrg 	shlr	r0
    677   1.1  mrg 	bra	LOCAL(lshrsi_28)	// >> 28
    678   1.1  mrg 	shlr2	r0
    679   1.1  mrg 	bra	LOCAL(lshrsi_29)	// >> 29
    680   1.1  mrg 	shlr16	r0
    681   1.1  mrg 	bra	LOCAL(lshrsi_30)	// >> 30
    682   1.1  mrg 	shlr16	r0
    683   1.1  mrg 	shll	r0			// >> 31
    684   1.1  mrg 	rts
    685   1.1  mrg 	movt	r0
    686   1.1  mrg 
    687   1.1  mrg LOCAL(lshrsi_7):
    688   1.1  mrg 	shlr2	r0
    689   1.1  mrg LOCAL(lshrsi_5):
    690   1.1  mrg LOCAL(lshrsi_6):
    691   1.1  mrg 	shlr2	r0
    692   1.1  mrg 	rts
    693   1.1  mrg LOCAL(lshrsi_13):
    694   1.1  mrg 	shlr2	r0
    695   1.1  mrg LOCAL(lshrsi_12):
    696   1.1  mrg LOCAL(lshrsi_11):
    697   1.1  mrg 	shlr8	r0
    698   1.1  mrg 	rts
    699   1.1  mrg LOCAL(lshrsi_21):
    700   1.1  mrg 	shlr2	r0
    701   1.1  mrg LOCAL(lshrsi_20):
    702   1.1  mrg LOCAL(lshrsi_19):
    703   1.1  mrg 	shlr16	r0
    704   1.1  mrg 	rts
    705   1.1  mrg LOCAL(lshrsi_28):
    706   1.1  mrg LOCAL(lshrsi_27):
    707   1.1  mrg 	shlr2	r0
    708   1.1  mrg LOCAL(lshrsi_26):
    709   1.1  mrg LOCAL(lshrsi_25):
    710   1.1  mrg 	shlr16	r0
    711   1.1  mrg 	rts
    712   1.1  mrg 	shlr8	r0
    713   1.1  mrg 
    714   1.1  mrg LOCAL(lshrsi_22):
    715   1.1  mrg LOCAL(lshrsi_14):
    716   1.1  mrg 	shll2	r0
    717   1.1  mrg 	rts
    718   1.1  mrg 	shlr8	r0
    719   1.1  mrg 
    720   1.1  mrg LOCAL(lshrsi_23):
    721   1.1  mrg LOCAL(lshrsi_15):
    722   1.1  mrg 	shll	r0
    723   1.1  mrg 	rts
    724   1.1  mrg 	shlr8	r0
    725   1.1  mrg 
    726   1.1  mrg LOCAL(lshrsi_29):
    727   1.1  mrg 	shll	r0
    728   1.1  mrg LOCAL(lshrsi_30):
    729   1.1  mrg 	shll2	r0
    730   1.1  mrg 	rts
    731   1.1  mrg 	shlr16	r0
    732   1.1  mrg 
    733   1.1  mrg 	ENDFUNC(GLOBAL(lshrsi3))
    734   1.1  mrg 	ENDFUNC(GLOBAL(lshrsi3_r0))
    735   1.1  mrg #endif
    736   1.1  mrg 
    737   1.1  mrg #ifdef L_movmem
    738   1.1  mrg 	.text
    739   1.1  mrg 	.balign	4
    740   1.1  mrg 	.global	GLOBAL(movmem)
    741   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmem))
    742   1.1  mrg 	HIDDEN_ALIAS(movstr,movmem)
    743   1.1  mrg 	/* This would be a lot simpler if r6 contained the byte count
    744   1.1  mrg 	   minus 64, and we wouldn't be called here for a byte count of 64.  */
    745   1.1  mrg GLOBAL(movmem):
    746   1.1  mrg 	sts.l	pr,@-r15
    747   1.1  mrg 	shll2	r6
    748   1.1  mrg 	bsr	GLOBAL(movmemSI52+2)
    749   1.1  mrg 	mov.l	@(48,r5),r0
    750   1.1  mrg 	.balign	4
    751   1.1  mrg LOCAL(movmem_loop): /* Reached with rts */
    752   1.1  mrg 	mov.l	@(60,r5),r0
    753   1.1  mrg 	add	#-64,r6
    754   1.1  mrg 	mov.l	r0,@(60,r4)
    755   1.1  mrg 	tst	r6,r6
    756   1.1  mrg 	mov.l	@(56,r5),r0
    757   1.1  mrg 	bt	LOCAL(movmem_done)
    758   1.1  mrg 	mov.l	r0,@(56,r4)
    759   1.1  mrg 	cmp/pl	r6
    760   1.1  mrg 	mov.l	@(52,r5),r0
    761   1.1  mrg 	add	#64,r5
    762   1.1  mrg 	mov.l	r0,@(52,r4)
    763   1.1  mrg 	add	#64,r4
    764   1.1  mrg 	bt	GLOBAL(movmemSI52)
    765   1.1  mrg ! done all the large groups, do the remainder
    766   1.1  mrg ! jump to movmem+
    767   1.1  mrg 	mova	GLOBAL(movmemSI4)+4,r0
    768   1.1  mrg 	add	r6,r0
    769   1.1  mrg 	jmp	@r0
    770   1.1  mrg LOCAL(movmem_done): ! share slot insn, works out aligned.
    771   1.1  mrg 	lds.l	@r15+,pr
    772   1.1  mrg 	mov.l	r0,@(56,r4)
    773   1.1  mrg 	mov.l	@(52,r5),r0
    774   1.1  mrg 	rts
    775   1.1  mrg 	mov.l	r0,@(52,r4)
    776   1.1  mrg 	.balign	4
    777   1.1  mrg ! ??? We need aliases movstr* for movmem* for the older libraries.  These
    778   1.1  mrg ! aliases will be removed at the some point in the future.
    779   1.1  mrg 	.global	GLOBAL(movmemSI64)
    780   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI64))
    781   1.1  mrg 	HIDDEN_ALIAS(movstrSI64,movmemSI64)
    782   1.1  mrg GLOBAL(movmemSI64):
    783   1.1  mrg 	mov.l	@(60,r5),r0
    784   1.1  mrg 	mov.l	r0,@(60,r4)
    785   1.1  mrg 	.global	GLOBAL(movmemSI60)
    786   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI60))
    787   1.1  mrg 	HIDDEN_ALIAS(movstrSI60,movmemSI60)
    788   1.1  mrg GLOBAL(movmemSI60):
    789   1.1  mrg 	mov.l	@(56,r5),r0
    790   1.1  mrg 	mov.l	r0,@(56,r4)
    791   1.1  mrg 	.global	GLOBAL(movmemSI56)
    792   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI56))
    793   1.1  mrg 	HIDDEN_ALIAS(movstrSI56,movmemSI56)
    794   1.1  mrg GLOBAL(movmemSI56):
    795   1.1  mrg 	mov.l	@(52,r5),r0
    796   1.1  mrg 	mov.l	r0,@(52,r4)
    797   1.1  mrg 	.global	GLOBAL(movmemSI52)
    798   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI52))
    799   1.1  mrg 	HIDDEN_ALIAS(movstrSI52,movmemSI52)
    800   1.1  mrg GLOBAL(movmemSI52):
    801   1.1  mrg 	mov.l	@(48,r5),r0
    802   1.1  mrg 	mov.l	r0,@(48,r4)
    803   1.1  mrg 	.global	GLOBAL(movmemSI48)
    804   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI48))
    805   1.1  mrg 	HIDDEN_ALIAS(movstrSI48,movmemSI48)
    806   1.1  mrg GLOBAL(movmemSI48):
    807   1.1  mrg 	mov.l	@(44,r5),r0
    808   1.1  mrg 	mov.l	r0,@(44,r4)
    809   1.1  mrg 	.global	GLOBAL(movmemSI44)
    810   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI44))
    811   1.1  mrg 	HIDDEN_ALIAS(movstrSI44,movmemSI44)
    812   1.1  mrg GLOBAL(movmemSI44):
    813   1.1  mrg 	mov.l	@(40,r5),r0
    814   1.1  mrg 	mov.l	r0,@(40,r4)
    815   1.1  mrg 	.global	GLOBAL(movmemSI40)
    816   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI40))
    817   1.1  mrg 	HIDDEN_ALIAS(movstrSI40,movmemSI40)
    818   1.1  mrg GLOBAL(movmemSI40):
    819   1.1  mrg 	mov.l	@(36,r5),r0
    820   1.1  mrg 	mov.l	r0,@(36,r4)
    821   1.1  mrg 	.global	GLOBAL(movmemSI36)
    822   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI36))
    823   1.1  mrg 	HIDDEN_ALIAS(movstrSI36,movmemSI36)
    824   1.1  mrg GLOBAL(movmemSI36):
    825   1.1  mrg 	mov.l	@(32,r5),r0
    826   1.1  mrg 	mov.l	r0,@(32,r4)
    827   1.1  mrg 	.global	GLOBAL(movmemSI32)
    828   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI32))
    829   1.1  mrg 	HIDDEN_ALIAS(movstrSI32,movmemSI32)
    830   1.1  mrg GLOBAL(movmemSI32):
    831   1.1  mrg 	mov.l	@(28,r5),r0
    832   1.1  mrg 	mov.l	r0,@(28,r4)
    833   1.1  mrg 	.global	GLOBAL(movmemSI28)
    834   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI28))
    835   1.1  mrg 	HIDDEN_ALIAS(movstrSI28,movmemSI28)
    836   1.1  mrg GLOBAL(movmemSI28):
    837   1.1  mrg 	mov.l	@(24,r5),r0
    838   1.1  mrg 	mov.l	r0,@(24,r4)
    839   1.1  mrg 	.global	GLOBAL(movmemSI24)
    840   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI24))
    841   1.1  mrg 	HIDDEN_ALIAS(movstrSI24,movmemSI24)
    842   1.1  mrg GLOBAL(movmemSI24):
    843   1.1  mrg 	mov.l	@(20,r5),r0
    844   1.1  mrg 	mov.l	r0,@(20,r4)
    845   1.1  mrg 	.global	GLOBAL(movmemSI20)
    846   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI20))
    847   1.1  mrg 	HIDDEN_ALIAS(movstrSI20,movmemSI20)
    848   1.1  mrg GLOBAL(movmemSI20):
    849   1.1  mrg 	mov.l	@(16,r5),r0
    850   1.1  mrg 	mov.l	r0,@(16,r4)
    851   1.1  mrg 	.global	GLOBAL(movmemSI16)
    852   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI16))
    853   1.1  mrg 	HIDDEN_ALIAS(movstrSI16,movmemSI16)
    854   1.1  mrg GLOBAL(movmemSI16):
    855   1.1  mrg 	mov.l	@(12,r5),r0
    856   1.1  mrg 	mov.l	r0,@(12,r4)
    857   1.1  mrg 	.global	GLOBAL(movmemSI12)
    858   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI12))
    859   1.1  mrg 	HIDDEN_ALIAS(movstrSI12,movmemSI12)
    860   1.1  mrg GLOBAL(movmemSI12):
    861   1.1  mrg 	mov.l	@(8,r5),r0
    862   1.1  mrg 	mov.l	r0,@(8,r4)
    863   1.1  mrg 	.global	GLOBAL(movmemSI8)
    864   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI8))
    865   1.1  mrg 	HIDDEN_ALIAS(movstrSI8,movmemSI8)
    866   1.1  mrg GLOBAL(movmemSI8):
    867   1.1  mrg 	mov.l	@(4,r5),r0
    868   1.1  mrg 	mov.l	r0,@(4,r4)
    869   1.1  mrg 	.global	GLOBAL(movmemSI4)
    870   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI4))
    871   1.1  mrg 	HIDDEN_ALIAS(movstrSI4,movmemSI4)
    872   1.1  mrg GLOBAL(movmemSI4):
    873   1.1  mrg 	mov.l	@(0,r5),r0
    874   1.1  mrg 	rts
    875   1.1  mrg 	mov.l	r0,@(0,r4)
    876   1.1  mrg 
    877   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI64))
    878   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI60))
    879   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI56))
    880   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI52))
    881   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI48))
    882   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI44))
    883   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI40))
    884   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI36))
    885   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI32))
    886   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI28))
    887   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI24))
    888   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI20))
    889   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI16))
    890   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI12))
    891   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI8))
    892   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI4))
    893   1.1  mrg 	ENDFUNC(GLOBAL(movmem))
    894   1.1  mrg #endif
    895   1.1  mrg 
    896   1.1  mrg #ifdef L_movmem_i4
    897   1.1  mrg 	.text
    898   1.1  mrg 	.global	GLOBAL(movmem_i4_even)
    899   1.1  mrg 	.global	GLOBAL(movmem_i4_odd)
    900   1.1  mrg 	.global	GLOBAL(movmemSI12_i4)
    901   1.1  mrg 
    902   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmem_i4_even))
    903   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmem_i4_odd))
    904   1.1  mrg 	HIDDEN_FUNC(GLOBAL(movmemSI12_i4))
    905   1.1  mrg 
    906   1.1  mrg 	HIDDEN_ALIAS(movstr_i4_even,movmem_i4_even)
    907   1.1  mrg 	HIDDEN_ALIAS(movstr_i4_odd,movmem_i4_odd)
    908   1.1  mrg 	HIDDEN_ALIAS(movstrSI12_i4,movmemSI12_i4)
    909   1.1  mrg 
    910   1.1  mrg 	.p2align	5
    911   1.1  mrg L_movmem_2mod4_end:
    912   1.1  mrg 	mov.l	r0,@(16,r4)
    913   1.1  mrg 	rts
    914   1.1  mrg 	mov.l	r1,@(20,r4)
    915   1.1  mrg 
    916   1.1  mrg 	.p2align	2
    917   1.1  mrg 
    918   1.1  mrg GLOBAL(movmem_i4_even):
    919   1.1  mrg 	mov.l	@r5+,r0
    920   1.1  mrg 	bra	L_movmem_start_even
    921   1.1  mrg 	mov.l	@r5+,r1
    922   1.1  mrg 
    923   1.1  mrg GLOBAL(movmem_i4_odd):
    924   1.1  mrg 	mov.l	@r5+,r1
    925   1.1  mrg 	add	#-4,r4
    926   1.1  mrg 	mov.l	@r5+,r2
    927   1.1  mrg 	mov.l	@r5+,r3
    928   1.1  mrg 	mov.l	r1,@(4,r4)
    929   1.1  mrg 	mov.l	r2,@(8,r4)
    930   1.1  mrg 
    931   1.1  mrg L_movmem_loop:
    932   1.1  mrg 	mov.l	r3,@(12,r4)
    933   1.1  mrg 	dt	r6
    934   1.1  mrg 	mov.l	@r5+,r0
    935   1.1  mrg 	bt/s	L_movmem_2mod4_end
    936   1.1  mrg 	mov.l	@r5+,r1
    937   1.1  mrg 	add	#16,r4
    938   1.1  mrg L_movmem_start_even:
    939   1.1  mrg 	mov.l	@r5+,r2
    940   1.1  mrg 	mov.l	@r5+,r3
    941   1.1  mrg 	mov.l	r0,@r4
    942   1.1  mrg 	dt	r6
    943   1.1  mrg 	mov.l	r1,@(4,r4)
    944   1.1  mrg 	bf/s	L_movmem_loop
    945   1.1  mrg 	mov.l	r2,@(8,r4)
    946   1.1  mrg 	rts
    947   1.1  mrg 	mov.l	r3,@(12,r4)
    948   1.1  mrg 
    949   1.1  mrg 	ENDFUNC(GLOBAL(movmem_i4_even))
    950   1.1  mrg 	ENDFUNC(GLOBAL(movmem_i4_odd))
    951   1.1  mrg 
    952   1.1  mrg 	.p2align	4
    953   1.1  mrg GLOBAL(movmemSI12_i4):
    954   1.1  mrg 	mov.l	@r5,r0
    955   1.1  mrg 	mov.l	@(4,r5),r1
    956   1.1  mrg 	mov.l	@(8,r5),r2
    957   1.1  mrg 	mov.l	r0,@r4
    958   1.1  mrg 	mov.l	r1,@(4,r4)
    959   1.1  mrg 	rts
    960   1.1  mrg 	mov.l	r2,@(8,r4)
    961   1.1  mrg 
    962   1.1  mrg 	ENDFUNC(GLOBAL(movmemSI12_i4))
    963   1.1  mrg #endif
    964   1.1  mrg 
    965   1.1  mrg #ifdef L_mulsi3
    966   1.1  mrg 
    967   1.1  mrg 
    968   1.1  mrg 	.global	GLOBAL(mulsi3)
    969   1.1  mrg 	HIDDEN_FUNC(GLOBAL(mulsi3))
    970   1.1  mrg 
    971   1.1  mrg ! r4 =       aabb
    972   1.1  mrg ! r5 =       ccdd
    973   1.1  mrg ! r0 = aabb*ccdd  via partial products
    974   1.1  mrg !
    975   1.1  mrg ! if aa == 0 and cc = 0
    976   1.1  mrg ! r0 = bb*dd
    977   1.1  mrg !
    978   1.1  mrg ! else
    979   1.1  mrg ! aa = bb*dd + (aa*dd*65536) + (cc*bb*65536)
    980   1.1  mrg !
    981   1.1  mrg 
    982   1.1  mrg GLOBAL(mulsi3):
    983   1.1  mrg 	mulu.w  r4,r5		! multiply the lsws  macl=bb*dd
    984   1.1  mrg 	mov     r5,r3		! r3 = ccdd
    985   1.1  mrg 	swap.w  r4,r2		! r2 = bbaa
    986   1.1  mrg 	xtrct   r2,r3		! r3 = aacc
    987   1.1  mrg 	tst  	r3,r3		! msws zero ?
    988   1.1  mrg 	bf      hiset
    989   1.1  mrg 	rts			! yes - then we have the answer
    990   1.1  mrg 	sts     macl,r0
    991   1.1  mrg 
    992   1.1  mrg hiset:	sts	macl,r0		! r0 = bb*dd
    993   1.1  mrg 	mulu.w	r2,r5		! brewing macl = aa*dd
    994   1.1  mrg 	sts	macl,r1
    995   1.1  mrg 	mulu.w	r3,r4		! brewing macl = cc*bb
    996   1.1  mrg 	sts	macl,r2
    997   1.1  mrg 	add	r1,r2
    998   1.1  mrg 	shll16	r2
    999   1.1  mrg 	rts
   1000   1.1  mrg 	add	r2,r0
   1001   1.1  mrg 
   1002   1.1  mrg 	ENDFUNC(GLOBAL(mulsi3))
   1003   1.1  mrg #endif
   1004   1.3  mrg 
   1005   1.3  mrg /*------------------------------------------------------------------------------
   1006   1.3  mrg   32 bit signed integer division that uses FPU double precision division.  */
   1007   1.3  mrg 
   1008   1.1  mrg #ifdef L_sdivsi3_i4
   1009   1.1  mrg 	.title "SH DIVIDE"
   1010   1.3  mrg 
   1011   1.1  mrg #if defined (__SH4__) || defined (__SH2A__)
   1012   1.3  mrg /* This variant is used when FPSCR.PR = 1 (double precision) is the default
   1013   1.3  mrg    setting.
   1014   1.3  mrg    Args in r4 and r5, result in fpul, clobber dr0, dr2.  */
   1015   1.1  mrg 
   1016   1.1  mrg 	.global	GLOBAL(sdivsi3_i4)
   1017   1.1  mrg 	HIDDEN_FUNC(GLOBAL(sdivsi3_i4))
   1018   1.1  mrg GLOBAL(sdivsi3_i4):
   1019   1.1  mrg 	lds r4,fpul
   1020   1.1  mrg 	float fpul,dr0
   1021   1.1  mrg 	lds r5,fpul
   1022   1.1  mrg 	float fpul,dr2
   1023   1.1  mrg 	fdiv dr2,dr0
   1024   1.1  mrg 	rts
   1025   1.1  mrg 	ftrc dr0,fpul
   1026   1.1  mrg 
   1027   1.1  mrg 	ENDFUNC(GLOBAL(sdivsi3_i4))
   1028   1.3  mrg 
   1029   1.6  mrg #elif defined (__SH2A_SINGLE__) || defined (__SH2A_SINGLE_ONLY__) || defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
   1030   1.3  mrg /* This variant is used when FPSCR.PR = 0 (sigle precision) is the default
   1031   1.3  mrg    setting.
   1032   1.3  mrg    Args in r4 and r5, result in fpul, clobber r2, dr0, dr2.
   1033   1.3  mrg    For this to work, we must temporarily switch the FPU do double precision,
   1034   1.3  mrg    but we better do not touch FPSCR.FR.  See PR 6526.  */
   1035   1.1  mrg 
   1036   1.1  mrg 	.global	GLOBAL(sdivsi3_i4)
   1037   1.1  mrg 	HIDDEN_FUNC(GLOBAL(sdivsi3_i4))
   1038   1.1  mrg GLOBAL(sdivsi3_i4):
   1039   1.3  mrg 
   1040   1.3  mrg #ifndef __SH4A__
   1041   1.3  mrg 	mov.l	r3,@-r15
   1042   1.3  mrg 	sts	fpscr,r2
   1043   1.3  mrg 	mov	#8,r3
   1044   1.3  mrg 	swap.w	r3,r3		// r3 = 1 << 19 (FPSCR.PR bit)
   1045   1.3  mrg 	or	r2,r3
   1046   1.3  mrg 	lds	r3,fpscr	// Set FPSCR.PR = 1.
   1047   1.3  mrg 	lds	r4,fpul
   1048   1.3  mrg 	float	fpul,dr0
   1049   1.3  mrg 	lds	r5,fpul
   1050   1.3  mrg 	float	fpul,dr2
   1051   1.3  mrg 	fdiv	dr2,dr0
   1052   1.3  mrg 	ftrc	dr0,fpul
   1053   1.3  mrg 	lds	r2,fpscr
   1054   1.3  mrg 	rts
   1055   1.3  mrg 	mov.l	@r15+,r3
   1056   1.3  mrg #else
   1057   1.3  mrg /* On SH4A we can use the fpchg instruction to flip the FPSCR.PR bit.  */
   1058   1.3  mrg 	fpchg
   1059   1.3  mrg 	lds	r4,fpul
   1060   1.3  mrg 	float	fpul,dr0
   1061   1.3  mrg 	lds	r5,fpul
   1062   1.3  mrg 	float	fpul,dr2
   1063   1.3  mrg 	fdiv	dr2,dr0
   1064   1.3  mrg 	ftrc	dr0,fpul
   1065   1.1  mrg 	rts
   1066   1.3  mrg 	fpchg
   1067   1.3  mrg 
   1068   1.3  mrg #endif /* __SH4A__  */
   1069   1.1  mrg 
   1070   1.1  mrg 	ENDFUNC(GLOBAL(sdivsi3_i4))
   1071   1.1  mrg #endif /* ! __SH4__ || __SH2A__  */
   1072   1.3  mrg #endif /* L_sdivsi3_i4  */
   1073   1.1  mrg 
   1074   1.3  mrg //------------------------------------------------------------------------------
   1075   1.1  mrg #ifdef L_sdivsi3
   1076   1.1  mrg /* __SH4_SINGLE_ONLY__ keeps this part for link compatibility with
   1077   1.1  mrg    sh2e/sh3e code.  */
   1078   1.1  mrg !!
   1079   1.1  mrg !! Steve Chamberlain
   1080   1.1  mrg !! sac@cygnus.com
   1081   1.1  mrg !!
   1082   1.1  mrg !!
   1083   1.1  mrg 
   1084   1.1  mrg !! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit
   1085   1.1  mrg 
   1086   1.1  mrg 	.global	GLOBAL(sdivsi3)
   1087   1.1  mrg 	.align	2
   1088   1.6  mrg 
   1089   1.1  mrg 	FUNC(GLOBAL(sdivsi3))
   1090   1.1  mrg GLOBAL(sdivsi3):
   1091   1.1  mrg 	mov	r4,r1
   1092   1.1  mrg 	mov	r5,r0
   1093   1.1  mrg 
   1094   1.1  mrg 	tst	r0,r0
   1095   1.1  mrg 	bt	div0
   1096   1.1  mrg 	mov	#0,r2
   1097   1.1  mrg 	div0s	r2,r1
   1098   1.1  mrg 	subc	r3,r3
   1099   1.1  mrg 	subc	r2,r1
   1100   1.1  mrg 	div0s	r0,r3
   1101   1.1  mrg 	rotcl	r1
   1102   1.1  mrg 	div1	r0,r3
   1103   1.1  mrg 	rotcl	r1
   1104   1.1  mrg 	div1	r0,r3
   1105   1.1  mrg 	rotcl	r1
   1106   1.1  mrg 	div1	r0,r3
   1107   1.1  mrg 	rotcl	r1
   1108   1.1  mrg 	div1	r0,r3
   1109   1.1  mrg 	rotcl	r1
   1110   1.1  mrg 	div1	r0,r3
   1111   1.1  mrg 	rotcl	r1
   1112   1.1  mrg 	div1	r0,r3
   1113   1.1  mrg 	rotcl	r1
   1114   1.1  mrg 	div1	r0,r3
   1115   1.1  mrg 	rotcl	r1
   1116   1.1  mrg 	div1	r0,r3
   1117   1.1  mrg 	rotcl	r1
   1118   1.1  mrg 	div1	r0,r3
   1119   1.1  mrg 	rotcl	r1
   1120   1.1  mrg 	div1	r0,r3
   1121   1.1  mrg 	rotcl	r1
   1122   1.1  mrg 	div1	r0,r3
   1123   1.1  mrg 	rotcl	r1
   1124   1.1  mrg 	div1	r0,r3
   1125   1.1  mrg 	rotcl	r1
   1126   1.1  mrg 	div1	r0,r3
   1127   1.1  mrg 	rotcl	r1
   1128   1.1  mrg 	div1	r0,r3
   1129   1.1  mrg 	rotcl	r1
   1130   1.1  mrg 	div1	r0,r3
   1131   1.1  mrg 	rotcl	r1
   1132   1.1  mrg 	div1	r0,r3
   1133   1.1  mrg 	rotcl	r1
   1134   1.1  mrg 	div1	r0,r3
   1135   1.1  mrg 	rotcl	r1
   1136   1.1  mrg 	div1	r0,r3
   1137   1.1  mrg 	rotcl	r1
   1138   1.1  mrg 	div1	r0,r3
   1139   1.1  mrg 	rotcl	r1
   1140   1.1  mrg 	div1	r0,r3
   1141   1.1  mrg 	rotcl	r1
   1142   1.1  mrg 	div1	r0,r3
   1143   1.1  mrg 	rotcl	r1
   1144   1.1  mrg 	div1	r0,r3
   1145   1.1  mrg 	rotcl	r1
   1146   1.1  mrg 	div1	r0,r3
   1147   1.1  mrg 	rotcl	r1
   1148   1.1  mrg 	div1	r0,r3
   1149   1.1  mrg 	rotcl	r1
   1150   1.1  mrg 	div1	r0,r3
   1151   1.1  mrg 	rotcl	r1
   1152   1.1  mrg 	div1	r0,r3
   1153   1.1  mrg 	rotcl	r1
   1154   1.1  mrg 	div1	r0,r3
   1155   1.1  mrg 	rotcl	r1
   1156   1.1  mrg 	div1	r0,r3
   1157   1.1  mrg 	rotcl	r1
   1158   1.1  mrg 	div1	r0,r3
   1159   1.1  mrg 	rotcl	r1
   1160   1.1  mrg 	div1	r0,r3
   1161   1.1  mrg 	rotcl	r1
   1162   1.1  mrg 	div1	r0,r3
   1163   1.1  mrg 	rotcl	r1
   1164   1.1  mrg 	div1	r0,r3
   1165   1.1  mrg 	rotcl	r1
   1166   1.1  mrg 	addc	r2,r1
   1167   1.1  mrg 	rts
   1168   1.1  mrg 	mov	r1,r0
   1169   1.1  mrg 
   1170   1.1  mrg 
   1171   1.1  mrg div0:	rts
   1172   1.1  mrg 	mov	#0,r0
   1173   1.1  mrg 
   1174   1.1  mrg 	ENDFUNC(GLOBAL(sdivsi3))
   1175   1.3  mrg #endif /* L_sdivsi3  */
   1176   1.3  mrg 
   1177   1.3  mrg /*------------------------------------------------------------------------------
   1178   1.3  mrg   32 bit unsigned integer division that uses FPU double precision division.  */
   1179   1.3  mrg 
   1180   1.1  mrg #ifdef L_udivsi3_i4
   1181   1.3  mrg 	.title "SH DIVIDE"
   1182   1.1  mrg 
   1183   1.1  mrg #if defined (__SH4__) || defined (__SH2A__)
   1184   1.3  mrg /* This variant is used when FPSCR.PR = 1 (double precision) is the default
   1185   1.3  mrg    setting.
   1186   1.3  mrg    Args in r4 and r5, result in fpul,
   1187   1.3  mrg    clobber r0, r1, r4, r5, dr0, dr2, dr4, and t bit  */
   1188   1.1  mrg 
   1189   1.1  mrg 	.global	GLOBAL(udivsi3_i4)
   1190   1.1  mrg 	HIDDEN_FUNC(GLOBAL(udivsi3_i4))
   1191   1.1  mrg GLOBAL(udivsi3_i4):
   1192   1.3  mrg 	mov	#1,r1
   1193   1.3  mrg 	cmp/hi	r1,r5
   1194   1.3  mrg 	bf/s	trivial
   1195   1.3  mrg 	rotr	r1
   1196   1.3  mrg 	xor	r1,r4
   1197   1.3  mrg 	lds	r4,fpul
   1198   1.3  mrg 	mova	L1,r0
   1199   1.1  mrg #ifdef FMOVD_WORKS
   1200   1.3  mrg 	fmov.d	@r0+,dr4
   1201   1.1  mrg #else
   1202   1.3  mrg 	fmov.s	@r0+,DR40
   1203   1.3  mrg 	fmov.s	@r0,DR41
   1204   1.1  mrg #endif
   1205   1.3  mrg 	float	fpul,dr0
   1206   1.3  mrg 	xor	r1,r5
   1207   1.3  mrg 	lds	r5,fpul
   1208   1.3  mrg 	float	fpul,dr2
   1209   1.3  mrg 	fadd	dr4,dr0
   1210   1.3  mrg 	fadd	dr4,dr2
   1211   1.3  mrg 	fdiv	dr2,dr0
   1212   1.1  mrg 	rts
   1213   1.3  mrg 	ftrc	dr0,fpul
   1214   1.1  mrg 
   1215   1.1  mrg trivial:
   1216   1.1  mrg 	rts
   1217   1.3  mrg 	lds	r4,fpul
   1218   1.1  mrg 
   1219   1.1  mrg 	.align 2
   1220   1.1  mrg #ifdef FMOVD_WORKS
   1221   1.3  mrg 	.align 3	// Make the double below 8 byte aligned.
   1222   1.1  mrg #endif
   1223   1.1  mrg L1:
   1224   1.1  mrg 	.double 2147483648
   1225   1.1  mrg 
   1226   1.1  mrg 	ENDFUNC(GLOBAL(udivsi3_i4))
   1227   1.3  mrg 
   1228   1.1  mrg #elif defined (__SH2A_SINGLE__) || defined (__SH2A_SINGLE_ONLY__) || defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
   1229   1.3  mrg /* This variant is used when FPSCR.PR = 0 (sigle precision) is the default
   1230   1.3  mrg    setting.
   1231   1.3  mrg    Args in r4 and r5, result in fpul,
   1232   1.3  mrg    clobber r0, r1, r4, r5, dr0, dr2, dr4.
   1233   1.3  mrg    For this to work, we must temporarily switch the FPU do double precision,
   1234   1.3  mrg    but we better do not touch FPSCR.FR.  See PR 6526.  */
   1235   1.1  mrg 
   1236   1.1  mrg 	.global	GLOBAL(udivsi3_i4)
   1237   1.1  mrg 	HIDDEN_FUNC(GLOBAL(udivsi3_i4))
   1238   1.1  mrg GLOBAL(udivsi3_i4):
   1239   1.3  mrg 
   1240   1.3  mrg #ifndef __SH4A__
   1241   1.3  mrg 	mov	#1,r1
   1242   1.3  mrg 	cmp/hi	r1,r5
   1243   1.3  mrg 	bf/s	trivial
   1244   1.3  mrg 	rotr	r1		// r1 = 1 << 31
   1245   1.3  mrg 	sts.l	fpscr,@-r15
   1246   1.3  mrg 	xor	r1,r4
   1247   1.3  mrg 	mov.l	@(0,r15),r0
   1248   1.3  mrg 	xor	r1,r5
   1249   1.3  mrg 	mov.l	L2,r1
   1250   1.3  mrg 	lds	r4,fpul
   1251   1.3  mrg 	or	r0,r1
   1252   1.3  mrg 	mova	L1,r0
   1253   1.3  mrg 	lds	r1,fpscr
   1254   1.1  mrg #ifdef FMOVD_WORKS
   1255   1.3  mrg 	fmov.d	@r0+,dr4
   1256   1.1  mrg #else
   1257   1.3  mrg 	fmov.s	@r0+,DR40
   1258   1.3  mrg 	fmov.s	@r0,DR41
   1259   1.1  mrg #endif
   1260   1.3  mrg 	float	fpul,dr0
   1261   1.3  mrg 	lds	r5,fpul
   1262   1.3  mrg 	float	fpul,dr2
   1263   1.3  mrg 	fadd	dr4,dr0
   1264   1.3  mrg 	fadd	dr4,dr2
   1265   1.3  mrg 	fdiv	dr2,dr0
   1266   1.3  mrg 	ftrc	dr0,fpul
   1267   1.1  mrg 	rts
   1268   1.3  mrg 	lds.l	@r15+,fpscr
   1269   1.1  mrg 
   1270   1.1  mrg #ifdef FMOVD_WORKS
   1271   1.3  mrg 	.align 3	// Make the double below 8 byte aligned.
   1272   1.1  mrg #endif
   1273   1.1  mrg trivial:
   1274   1.1  mrg 	rts
   1275   1.3  mrg 	lds	r4,fpul
   1276   1.1  mrg 
   1277   1.1  mrg 	.align 2
   1278   1.3  mrg L2:
   1279   1.3  mrg #ifdef FMOVD_WORKS
   1280   1.3  mrg 	.long 0x180000	// FPSCR.PR = 1, FPSCR.SZ = 1
   1281   1.3  mrg #else
   1282   1.3  mrg 	.long 0x80000	// FPSCR.PR = 1
   1283   1.3  mrg #endif
   1284   1.1  mrg L1:
   1285   1.3  mrg 	.double 2147483648
   1286   1.3  mrg 
   1287   1.1  mrg #else
   1288   1.3  mrg /* On SH4A we can use the fpchg instruction to flip the FPSCR.PR bit.
   1289   1.3  mrg    Although on SH4A fmovd usually works, it would require either additional
   1290   1.3  mrg    two fschg instructions or an FPSCR push + pop.  It's not worth the effort
   1291   1.3  mrg    for loading only one double constant.  */
   1292   1.3  mrg 	mov	#1,r1
   1293   1.3  mrg 	cmp/hi	r1,r5
   1294   1.3  mrg 	bf/s	trivial
   1295   1.3  mrg 	rotr	r1		// r1 = 1 << 31
   1296   1.3  mrg 	fpchg
   1297   1.3  mrg 	mova	L1,r0
   1298   1.3  mrg 	xor	r1,r4
   1299   1.3  mrg 	fmov.s	@r0+,DR40
   1300   1.3  mrg 	lds	r4,fpul
   1301   1.3  mrg 	fmov.s	@r0,DR41
   1302   1.3  mrg 	xor	r1,r5
   1303   1.3  mrg 	float	fpul,dr0
   1304   1.3  mrg 	lds	r5,fpul
   1305   1.3  mrg 	float	fpul,dr2
   1306   1.3  mrg 	fadd	dr4,dr0
   1307   1.3  mrg 	fadd	dr4,dr2
   1308   1.3  mrg 	fdiv	dr2,dr0
   1309   1.3  mrg 	ftrc	dr0,fpul
   1310   1.3  mrg 	rts
   1311   1.3  mrg 	fpchg
   1312   1.3  mrg 
   1313   1.3  mrg trivial:
   1314   1.3  mrg 	rts
   1315   1.3  mrg 	lds	r4,fpul
   1316   1.3  mrg 
   1317   1.3  mrg 	.align 2
   1318   1.3  mrg L1:
   1319   1.1  mrg 	.double 2147483648
   1320   1.1  mrg 
   1321   1.3  mrg #endif /* __SH4A__  */
   1322   1.3  mrg 
   1323   1.3  mrg 
   1324   1.1  mrg 	ENDFUNC(GLOBAL(udivsi3_i4))
   1325   1.1  mrg #endif /* ! __SH4__ */
   1326   1.3  mrg #endif /* L_udivsi3_i4  */
   1327   1.1  mrg 
   1328   1.1  mrg #ifdef L_udivsi3
   1329   1.1  mrg /* __SH4_SINGLE_ONLY__ keeps this part for link compatibility with
   1330   1.1  mrg    sh2e/sh3e code.  */
   1331   1.1  mrg 
   1332   1.1  mrg !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit
   1333   1.1  mrg 	.global	GLOBAL(udivsi3)
   1334   1.1  mrg 	HIDDEN_FUNC(GLOBAL(udivsi3))
   1335   1.1  mrg 
   1336   1.1  mrg LOCAL(div8):
   1337   1.1  mrg  div1 r5,r4
   1338   1.1  mrg LOCAL(div7):
   1339   1.1  mrg  div1 r5,r4; div1 r5,r4; div1 r5,r4
   1340   1.1  mrg  div1 r5,r4; div1 r5,r4; div1 r5,r4; rts; div1 r5,r4
   1341   1.1  mrg 
   1342   1.1  mrg LOCAL(divx4):
   1343   1.1  mrg  div1 r5,r4; rotcl r0
   1344   1.1  mrg  div1 r5,r4; rotcl r0
   1345   1.1  mrg  div1 r5,r4; rotcl r0
   1346   1.1  mrg  rts; div1 r5,r4
   1347   1.1  mrg 
   1348   1.1  mrg GLOBAL(udivsi3):
   1349   1.1  mrg  sts.l pr,@-r15
   1350   1.1  mrg  extu.w r5,r0
   1351   1.1  mrg  cmp/eq r5,r0
   1352   1.1  mrg #ifdef __sh1__
   1353   1.1  mrg  bf LOCAL(large_divisor)
   1354   1.1  mrg #else
   1355   1.1  mrg  bf/s LOCAL(large_divisor)
   1356   1.1  mrg #endif
   1357   1.1  mrg  div0u
   1358   1.1  mrg  swap.w r4,r0
   1359   1.1  mrg  shlr16 r4
   1360   1.1  mrg  bsr LOCAL(div8)
   1361   1.1  mrg  shll16 r5
   1362   1.1  mrg  bsr LOCAL(div7)
   1363   1.1  mrg  div1 r5,r4
   1364   1.1  mrg  xtrct r4,r0
   1365   1.1  mrg  xtrct r0,r4
   1366   1.1  mrg  bsr LOCAL(div8)
   1367   1.1  mrg  swap.w r4,r4
   1368   1.1  mrg  bsr LOCAL(div7)
   1369   1.1  mrg  div1 r5,r4
   1370   1.1  mrg  lds.l @r15+,pr
   1371   1.1  mrg  xtrct r4,r0
   1372   1.1  mrg  swap.w r0,r0
   1373   1.1  mrg  rotcl r0
   1374   1.1  mrg  rts
   1375   1.1  mrg  shlr16 r5
   1376   1.1  mrg 
   1377   1.1  mrg LOCAL(large_divisor):
   1378   1.1  mrg #ifdef __sh1__
   1379   1.1  mrg  div0u
   1380   1.1  mrg #endif
   1381   1.1  mrg  mov #0,r0
   1382   1.1  mrg  xtrct r4,r0
   1383   1.1  mrg  xtrct r0,r4
   1384   1.1  mrg  bsr LOCAL(divx4)
   1385   1.1  mrg  rotcl r0
   1386   1.1  mrg  bsr LOCAL(divx4)
   1387   1.1  mrg  rotcl r0
   1388   1.1  mrg  bsr LOCAL(divx4)
   1389   1.1  mrg  rotcl r0
   1390   1.1  mrg  bsr LOCAL(divx4)
   1391   1.1  mrg  rotcl r0
   1392   1.1  mrg  lds.l @r15+,pr
   1393   1.1  mrg  rts
   1394   1.1  mrg  rotcl r0
   1395   1.1  mrg 
   1396   1.1  mrg 	ENDFUNC(GLOBAL(udivsi3))
   1397   1.1  mrg #endif /* L_udivsi3 */
   1398   1.1  mrg 
   1399   1.1  mrg #ifdef L_set_fpscr
   1400   1.1  mrg #if !defined (__SH2A_NOFPU__)
   1401   1.6  mrg #if defined (__SH2E__) || defined (__SH2A__) || defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__)
   1402   1.1  mrg 	.global GLOBAL(set_fpscr)
   1403   1.1  mrg 	HIDDEN_FUNC(GLOBAL(set_fpscr))
   1404   1.1  mrg GLOBAL(set_fpscr):
   1405   1.1  mrg 	lds r4,fpscr
   1406   1.1  mrg #ifdef __PIC__
   1407   1.1  mrg 	mov.l	r12,@-r15
   1408   1.1  mrg #ifdef __vxworks
   1409   1.1  mrg 	mov.l	LOCAL(set_fpscr_L0_base),r12
   1410   1.1  mrg 	mov.l	LOCAL(set_fpscr_L0_index),r0
   1411   1.1  mrg 	mov.l	@r12,r12
   1412   1.1  mrg 	mov.l	@(r0,r12),r12
   1413   1.1  mrg #else
   1414   1.1  mrg 	mova	LOCAL(set_fpscr_L0),r0
   1415   1.1  mrg 	mov.l	LOCAL(set_fpscr_L0),r12
   1416   1.1  mrg 	add	r0,r12
   1417   1.1  mrg #endif
   1418   1.1  mrg 	mov.l	LOCAL(set_fpscr_L1),r0
   1419   1.1  mrg 	mov.l	@(r0,r12),r1
   1420   1.1  mrg 	mov.l	@r15+,r12
   1421   1.1  mrg #else
   1422   1.1  mrg 	mov.l LOCAL(set_fpscr_L1),r1
   1423   1.1  mrg #endif
   1424   1.1  mrg 	swap.w r4,r0
   1425   1.1  mrg 	or #24,r0
   1426   1.1  mrg #ifndef FMOVD_WORKS
   1427   1.1  mrg 	xor #16,r0
   1428   1.1  mrg #endif
   1429   1.1  mrg #if defined(__SH4__) || defined (__SH2A_DOUBLE__)
   1430   1.1  mrg 	swap.w r0,r3
   1431   1.1  mrg 	mov.l r3,@(4,r1)
   1432   1.1  mrg #else /* defined (__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE*__) */
   1433   1.1  mrg 	swap.w r0,r2
   1434   1.1  mrg 	mov.l r2,@r1
   1435   1.1  mrg #endif
   1436   1.1  mrg #ifndef FMOVD_WORKS
   1437   1.1  mrg 	xor #8,r0
   1438   1.1  mrg #else
   1439   1.1  mrg 	xor #24,r0
   1440   1.1  mrg #endif
   1441   1.1  mrg #if defined(__SH4__) || defined (__SH2A_DOUBLE__)
   1442   1.1  mrg 	swap.w r0,r2
   1443   1.1  mrg 	rts
   1444   1.1  mrg 	mov.l r2,@r1
   1445   1.1  mrg #else /* defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE*__) */
   1446   1.1  mrg 	swap.w r0,r3
   1447   1.1  mrg 	rts
   1448   1.1  mrg 	mov.l r3,@(4,r1)
   1449   1.1  mrg #endif
   1450   1.1  mrg 	.align 2
   1451   1.1  mrg #ifdef __PIC__
   1452   1.1  mrg #ifdef __vxworks
   1453   1.1  mrg LOCAL(set_fpscr_L0_base):
   1454   1.1  mrg 	.long ___GOTT_BASE__
   1455   1.1  mrg LOCAL(set_fpscr_L0_index):
   1456   1.1  mrg 	.long ___GOTT_INDEX__
   1457   1.1  mrg #else
   1458   1.1  mrg LOCAL(set_fpscr_L0):
   1459   1.1  mrg 	.long _GLOBAL_OFFSET_TABLE_
   1460   1.1  mrg #endif
   1461   1.1  mrg LOCAL(set_fpscr_L1):
   1462   1.1  mrg 	.long GLOBAL(fpscr_values@GOT)
   1463   1.1  mrg #else
   1464   1.1  mrg LOCAL(set_fpscr_L1):
   1465   1.1  mrg 	.long GLOBAL(fpscr_values)
   1466   1.1  mrg #endif
   1467   1.1  mrg 
   1468   1.1  mrg 	ENDFUNC(GLOBAL(set_fpscr))
   1469   1.1  mrg #ifndef NO_FPSCR_VALUES
   1470   1.1  mrg #ifdef __ELF__
   1471   1.1  mrg         .comm   GLOBAL(fpscr_values),8,4
   1472   1.1  mrg #else
   1473   1.1  mrg         .comm   GLOBAL(fpscr_values),8
   1474   1.1  mrg #endif /* ELF */
   1475   1.1  mrg #endif /* NO_FPSCR_VALUES */
   1476   1.1  mrg #endif /* SH2E / SH3E / SH4 */
   1477   1.1  mrg #endif /* __SH2A_NOFPU__ */
   1478   1.1  mrg #endif /* L_set_fpscr */
   1479   1.1  mrg #ifdef L_ic_invalidate
   1480   1.6  mrg 
   1481   1.6  mrg #if defined(__SH4A__)
   1482   1.1  mrg 	.global GLOBAL(ic_invalidate)
   1483   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ic_invalidate))
   1484   1.1  mrg GLOBAL(ic_invalidate):
   1485   1.1  mrg 	ocbwb	@r4
   1486   1.1  mrg 	synco
   1487   1.1  mrg 	icbi	@r4
   1488   1.1  mrg 	rts
   1489   1.1  mrg 	  nop
   1490   1.1  mrg 	ENDFUNC(GLOBAL(ic_invalidate))
   1491   1.6  mrg #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH4_NOFPU__)
   1492   1.1  mrg 	/* For system code, we use ic_invalidate_line_i, but user code
   1493   1.1  mrg 	   needs a different mechanism.  A kernel call is generally not
   1494   1.1  mrg 	   available, and it would also be slow.  Different SH4 variants use
   1495   1.1  mrg 	   different sizes and associativities of the Icache.  We use a small
   1496   1.1  mrg 	   bit of dispatch code that can be put hidden in every shared object,
   1497   1.1  mrg 	   which calls the actual processor-specific invalidation code in a
   1498   1.1  mrg 	   separate module.
   1499   1.1  mrg 	   Or if you have operating system support, the OS could mmap the
   1500   1.1  mrg 	   procesor-specific code from a single page, since it is highly
   1501   1.1  mrg 	   repetitive.  */
   1502   1.1  mrg 	.global GLOBAL(ic_invalidate)
   1503   1.1  mrg 	HIDDEN_FUNC(GLOBAL(ic_invalidate))
   1504   1.1  mrg GLOBAL(ic_invalidate):
   1505   1.1  mrg #ifdef __pic__
   1506   1.1  mrg #ifdef __vxworks
   1507   1.1  mrg 	mov.l	1f,r1
   1508   1.1  mrg 	mov.l	2f,r0
   1509   1.1  mrg 	mov.l	@r1,r1
   1510   1.1  mrg 	mov.l	0f,r2
   1511   1.1  mrg 	mov.l	@(r0,r1),r0
   1512   1.1  mrg #else
   1513   1.1  mrg 	mov.l	1f,r1
   1514   1.1  mrg 	mova	1f,r0
   1515   1.1  mrg 	mov.l	0f,r2
   1516   1.1  mrg 	add	r1,r0
   1517   1.1  mrg #endif
   1518   1.1  mrg 	mov.l	@(r0,r2),r1
   1519   1.1  mrg #else
   1520   1.1  mrg 	mov.l	0f,r1
   1521   1.1  mrg #endif
   1522   1.1  mrg 	ocbwb	@r4
   1523   1.1  mrg 	mov.l	@(8,r1),r0
   1524   1.1  mrg 	sub	r1,r4
   1525   1.1  mrg 	and	r4,r0
   1526   1.1  mrg 	add	r1,r0
   1527   1.1  mrg 	jmp	@r0
   1528   1.1  mrg 	mov.l	@(4,r1),r0
   1529   1.1  mrg 	.align	2
   1530   1.1  mrg #ifndef __pic__
   1531   1.1  mrg 0:	.long   GLOBAL(ic_invalidate_array)
   1532   1.1  mrg #else /* __pic__ */
   1533   1.1  mrg 	.global GLOBAL(ic_invalidate_array)
   1534   1.1  mrg 0:	.long   GLOBAL(ic_invalidate_array)@GOT
   1535   1.1  mrg #ifdef __vxworks
   1536   1.1  mrg 1:	.long	___GOTT_BASE__
   1537   1.1  mrg 2:	.long	___GOTT_INDEX__
   1538   1.1  mrg #else
   1539   1.1  mrg 1:	.long   _GLOBAL_OFFSET_TABLE_
   1540   1.1  mrg #endif
   1541   1.1  mrg 	ENDFUNC(GLOBAL(ic_invalidate))
   1542   1.1  mrg #endif /* __pic__ */
   1543   1.1  mrg #endif /* SH4 */
   1544   1.1  mrg #endif /* L_ic_invalidate */
   1545   1.1  mrg 
   1546   1.1  mrg #ifdef L_ic_invalidate_array
   1547   1.6  mrg #if defined(__SH4A__) || (defined (__FORCE_SH4A__) && (defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH4_NOFPU__)))
   1548   1.1  mrg 	.global GLOBAL(ic_invalidate_array)
   1549   1.1  mrg 	/* This is needed when an SH4 dso with trampolines is used on SH4A.  */
   1550   1.1  mrg 	.global GLOBAL(ic_invalidate_array)
   1551   1.1  mrg 	FUNC(GLOBAL(ic_invalidate_array))
   1552   1.1  mrg GLOBAL(ic_invalidate_array):
   1553   1.1  mrg 	add	r1,r4
   1554   1.1  mrg 	synco
   1555   1.1  mrg 	icbi	@r4
   1556   1.1  mrg 	rts
   1557   1.1  mrg 	  nop
   1558   1.1  mrg 	.align 2
   1559   1.1  mrg 	.long	0
   1560   1.1  mrg 	ENDFUNC(GLOBAL(ic_invalidate_array))
   1561   1.6  mrg #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH4_NOFPU__)
   1562   1.1  mrg 	.global GLOBAL(ic_invalidate_array)
   1563   1.1  mrg 	.p2align 5
   1564   1.1  mrg 	FUNC(GLOBAL(ic_invalidate_array))
   1565   1.1  mrg /* This must be aligned to the beginning of a cache line.  */
   1566   1.1  mrg GLOBAL(ic_invalidate_array):
   1567   1.1  mrg #ifndef WAYS
   1568   1.1  mrg #define WAYS 4
   1569   1.1  mrg #define WAY_SIZE 0x4000
   1570   1.1  mrg #endif
   1571   1.1  mrg #if WAYS == 1
   1572   1.1  mrg 	.rept	WAY_SIZE * WAYS / 32
   1573   1.1  mrg 	rts
   1574   1.1  mrg 	nop
   1575   1.1  mrg 	.rept	7
   1576   1.1  mrg 	.long	WAY_SIZE - 32
   1577   1.1  mrg 	.endr
   1578   1.1  mrg 	.endr
   1579   1.1  mrg #elif WAYS <= 6
   1580   1.1  mrg 	.rept	WAY_SIZE * WAYS / 32
   1581   1.1  mrg 	braf	r0
   1582   1.1  mrg 	add	#-8,r0
   1583   1.1  mrg 	.long	WAY_SIZE + 8
   1584   1.1  mrg 	.long	WAY_SIZE - 32
   1585   1.1  mrg 	.rept	WAYS-2
   1586   1.1  mrg 	braf	r0
   1587   1.1  mrg 	nop
   1588   1.1  mrg 	.endr
   1589   1.1  mrg 	.rept	7 - WAYS
   1590   1.1  mrg 	rts
   1591   1.1  mrg 	nop
   1592   1.1  mrg 	.endr
   1593   1.1  mrg 	.endr
   1594   1.1  mrg #else /* WAYS > 6 */
   1595   1.1  mrg 	/* This variant needs two different pages for mmap-ing.  */
   1596   1.1  mrg  	.rept	WAYS-1
   1597   1.1  mrg 	.rept	WAY_SIZE / 32
   1598   1.1  mrg 	braf	r0
   1599   1.1  mrg 	nop
   1600   1.1  mrg 	.long	WAY_SIZE
   1601   1.1  mrg 	.rept 6
   1602   1.1  mrg 	.long	WAY_SIZE - 32
   1603   1.1  mrg 	.endr
   1604   1.1  mrg 	.endr
   1605   1.1  mrg 	.endr
   1606   1.1  mrg 	.rept	WAY_SIZE / 32
   1607   1.1  mrg 	rts
   1608   1.1  mrg 	.rept	15
   1609   1.1  mrg 	nop
   1610   1.1  mrg 	.endr
   1611   1.1  mrg 	.endr
   1612   1.1  mrg #endif /* WAYS */
   1613   1.1  mrg 	ENDFUNC(GLOBAL(ic_invalidate_array))
   1614   1.1  mrg #endif /* SH4 */
   1615   1.1  mrg #endif /* L_ic_invalidate_array */
   1616   1.1  mrg 
   1617   1.1  mrg 
   1618   1.1  mrg #ifdef L_div_table
   1619   1.1  mrg 
   1620   1.6  mrg #if defined (__SH2A__) || defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__)
   1621   1.1  mrg /* This code uses shld, thus is not suitable for SH1 / SH2.  */
   1622   1.1  mrg 
   1623   1.1  mrg /* Signed / unsigned division without use of FPU, optimized for SH4.
   1624   1.1  mrg    Uses a lookup table for divisors in the range -128 .. +128, and
   1625   1.1  mrg    div1 with case distinction for larger divisors in three more ranges.
   1626   1.1  mrg    The code is lumped together with the table to allow the use of mova.  */
   1627   1.1  mrg #ifdef __LITTLE_ENDIAN__
   1628   1.1  mrg #define L_LSB 0
   1629   1.1  mrg #define L_LSWMSB 1
   1630   1.1  mrg #define L_MSWLSB 2
   1631   1.1  mrg #else
   1632   1.1  mrg #define L_LSB 3
   1633   1.1  mrg #define L_LSWMSB 2
   1634   1.1  mrg #define L_MSWLSB 1
   1635   1.1  mrg #endif
   1636   1.1  mrg 
   1637   1.1  mrg 	.balign 4
   1638   1.1  mrg 	.global	GLOBAL(udivsi3_i4i)
   1639   1.1  mrg 	FUNC(GLOBAL(udivsi3_i4i))
   1640   1.1  mrg GLOBAL(udivsi3_i4i):
   1641   1.1  mrg 	mov.w LOCAL(c128_w), r1
   1642   1.1  mrg 	div0u
   1643   1.1  mrg 	mov r4,r0
   1644   1.1  mrg 	shlr8 r0
   1645   1.1  mrg 	cmp/hi r1,r5
   1646   1.1  mrg 	extu.w r5,r1
   1647   1.1  mrg 	bf LOCAL(udiv_le128)
   1648   1.1  mrg 	cmp/eq r5,r1
   1649   1.1  mrg 	bf LOCAL(udiv_ge64k)
   1650   1.1  mrg 	shlr r0
   1651   1.1  mrg 	mov r5,r1
   1652   1.1  mrg 	shll16 r5
   1653   1.1  mrg 	mov.l r4,@-r15
   1654   1.1  mrg 	div1 r5,r0
   1655   1.1  mrg 	mov.l r1,@-r15
   1656   1.1  mrg 	div1 r5,r0
   1657   1.1  mrg 	div1 r5,r0
   1658   1.1  mrg 	bra LOCAL(udiv_25)
   1659   1.1  mrg 	div1 r5,r0
   1660   1.1  mrg 
   1661   1.1  mrg LOCAL(div_le128):
   1662   1.1  mrg 	mova LOCAL(div_table_ix),r0
   1663   1.1  mrg 	bra LOCAL(div_le128_2)
   1664   1.1  mrg 	mov.b @(r0,r5),r1
   1665   1.1  mrg LOCAL(udiv_le128):
   1666   1.1  mrg 	mov.l r4,@-r15
   1667   1.1  mrg 	mova LOCAL(div_table_ix),r0
   1668   1.1  mrg 	mov.b @(r0,r5),r1
   1669   1.1  mrg 	mov.l r5,@-r15
   1670   1.1  mrg LOCAL(div_le128_2):
   1671   1.1  mrg 	mova LOCAL(div_table_inv),r0
   1672   1.1  mrg 	mov.l @(r0,r1),r1
   1673   1.1  mrg 	mov r5,r0
   1674   1.1  mrg 	tst #0xfe,r0
   1675   1.1  mrg 	mova LOCAL(div_table_clz),r0
   1676   1.1  mrg 	dmulu.l r1,r4
   1677   1.1  mrg 	mov.b @(r0,r5),r1
   1678   1.1  mrg 	bt/s LOCAL(div_by_1)
   1679   1.1  mrg 	mov r4,r0
   1680   1.1  mrg 	mov.l @r15+,r5
   1681   1.1  mrg 	sts mach,r0
   1682   1.1  mrg 	/* clrt */
   1683   1.1  mrg 	addc r4,r0
   1684   1.1  mrg 	mov.l @r15+,r4
   1685   1.1  mrg 	rotcr r0
   1686   1.1  mrg 	rts
   1687   1.1  mrg 	shld r1,r0
   1688   1.1  mrg 
   1689   1.1  mrg LOCAL(div_by_1_neg):
   1690   1.1  mrg 	neg r4,r0
   1691   1.1  mrg LOCAL(div_by_1):
   1692   1.1  mrg 	mov.l @r15+,r5
   1693   1.1  mrg 	rts
   1694   1.1  mrg 	mov.l @r15+,r4
   1695   1.1  mrg 
   1696   1.1  mrg LOCAL(div_ge64k):
   1697   1.1  mrg 	bt/s LOCAL(div_r8)
   1698   1.1  mrg 	div0u
   1699   1.1  mrg 	shll8 r5
   1700   1.1  mrg 	bra LOCAL(div_ge64k_2)
   1701   1.1  mrg 	div1 r5,r0
   1702   1.1  mrg LOCAL(udiv_ge64k):
   1703   1.1  mrg 	cmp/hi r0,r5
   1704   1.1  mrg 	mov r5,r1
   1705   1.1  mrg 	bt LOCAL(udiv_r8)
   1706   1.1  mrg 	shll8 r5
   1707   1.1  mrg 	mov.l r4,@-r15
   1708   1.1  mrg 	div1 r5,r0
   1709   1.1  mrg 	mov.l r1,@-r15
   1710   1.1  mrg LOCAL(div_ge64k_2):
   1711   1.1  mrg 	div1 r5,r0
   1712   1.1  mrg 	mov.l LOCAL(zero_l),r1
   1713   1.1  mrg 	.rept 4
   1714   1.1  mrg 	div1 r5,r0
   1715   1.1  mrg 	.endr
   1716   1.1  mrg 	mov.l r1,@-r15
   1717   1.1  mrg 	div1 r5,r0
   1718   1.1  mrg 	mov.w LOCAL(m256_w),r1
   1719   1.1  mrg 	div1 r5,r0
   1720   1.1  mrg 	mov.b r0,@(L_LSWMSB,r15)
   1721   1.1  mrg 	xor r4,r0
   1722   1.1  mrg 	and r1,r0
   1723   1.1  mrg 	bra LOCAL(div_ge64k_end)
   1724   1.1  mrg 	xor r4,r0
   1725   1.1  mrg 
   1726   1.1  mrg LOCAL(div_r8):
   1727   1.1  mrg 	shll16 r4
   1728   1.1  mrg 	bra LOCAL(div_r8_2)
   1729   1.1  mrg 	shll8 r4
   1730   1.1  mrg LOCAL(udiv_r8):
   1731   1.1  mrg 	mov.l r4,@-r15
   1732   1.1  mrg 	shll16 r4
   1733   1.1  mrg 	clrt
   1734   1.1  mrg 	shll8 r4
   1735   1.1  mrg 	mov.l r5,@-r15
   1736   1.1  mrg LOCAL(div_r8_2):
   1737   1.1  mrg 	rotcl r4
   1738   1.1  mrg 	mov r0,r1
   1739   1.1  mrg 	div1 r5,r1
   1740   1.1  mrg 	mov r4,r0
   1741   1.1  mrg 	rotcl r0
   1742   1.1  mrg 	mov r5,r4
   1743   1.1  mrg 	div1 r5,r1
   1744   1.1  mrg 	.rept 5
   1745   1.1  mrg 	rotcl r0; div1 r5,r1
   1746   1.1  mrg 	.endr
   1747   1.1  mrg 	rotcl r0
   1748   1.1  mrg 	mov.l @r15+,r5
   1749   1.1  mrg 	div1 r4,r1
   1750   1.1  mrg 	mov.l @r15+,r4
   1751   1.1  mrg 	rts
   1752   1.1  mrg 	rotcl r0
   1753   1.1  mrg 
   1754   1.1  mrg 	ENDFUNC(GLOBAL(udivsi3_i4i))
   1755   1.1  mrg 
   1756   1.1  mrg 	.global	GLOBAL(sdivsi3_i4i)
   1757   1.1  mrg 	FUNC(GLOBAL(sdivsi3_i4i))
   1758   1.1  mrg 	/* This is link-compatible with a GLOBAL(sdivsi3) call,
   1759   1.1  mrg 	   but we effectively clobber only r1.  */
   1760   1.1  mrg GLOBAL(sdivsi3_i4i):
   1761   1.1  mrg 	mov.l r4,@-r15
   1762   1.1  mrg 	cmp/pz r5
   1763   1.1  mrg 	mov.w LOCAL(c128_w), r1
   1764   1.1  mrg 	bt/s LOCAL(pos_divisor)
   1765   1.1  mrg 	cmp/pz r4
   1766   1.1  mrg 	mov.l r5,@-r15
   1767   1.1  mrg 	neg r5,r5
   1768   1.1  mrg 	bt/s LOCAL(neg_result)
   1769   1.1  mrg 	cmp/hi r1,r5
   1770   1.1  mrg 	neg r4,r4
   1771   1.1  mrg LOCAL(pos_result):
   1772   1.1  mrg 	extu.w r5,r0
   1773   1.1  mrg 	bf LOCAL(div_le128)
   1774   1.1  mrg 	cmp/eq r5,r0
   1775   1.1  mrg 	mov r4,r0
   1776   1.1  mrg 	shlr8 r0
   1777   1.1  mrg 	bf/s LOCAL(div_ge64k)
   1778   1.1  mrg 	cmp/hi r0,r5
   1779   1.1  mrg 	div0u
   1780   1.1  mrg 	shll16 r5
   1781   1.1  mrg 	div1 r5,r0
   1782   1.1  mrg 	div1 r5,r0
   1783   1.1  mrg 	div1 r5,r0
   1784   1.1  mrg LOCAL(udiv_25):
   1785   1.1  mrg 	mov.l LOCAL(zero_l),r1
   1786   1.1  mrg 	div1 r5,r0
   1787   1.1  mrg 	div1 r5,r0
   1788   1.1  mrg 	mov.l r1,@-r15
   1789   1.1  mrg 	.rept 3
   1790   1.1  mrg 	div1 r5,r0
   1791   1.1  mrg 	.endr
   1792   1.1  mrg 	mov.b r0,@(L_MSWLSB,r15)
   1793   1.1  mrg 	xtrct r4,r0
   1794   1.1  mrg 	swap.w r0,r0
   1795   1.1  mrg 	.rept 8
   1796   1.1  mrg 	div1 r5,r0
   1797   1.1  mrg 	.endr
   1798   1.1  mrg 	mov.b r0,@(L_LSWMSB,r15)
   1799   1.1  mrg LOCAL(div_ge64k_end):
   1800   1.1  mrg 	.rept 8
   1801   1.1  mrg 	div1 r5,r0
   1802   1.1  mrg 	.endr
   1803   1.1  mrg 	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
   1804   1.1  mrg 	extu.b r0,r0
   1805   1.1  mrg 	mov.l @r15+,r5
   1806   1.1  mrg 	or r4,r0
   1807   1.1  mrg 	mov.l @r15+,r4
   1808   1.1  mrg 	rts
   1809   1.1  mrg 	rotcl r0
   1810   1.1  mrg 
   1811   1.1  mrg LOCAL(div_le128_neg):
   1812   1.1  mrg 	tst #0xfe,r0
   1813   1.1  mrg 	mova LOCAL(div_table_ix),r0
   1814   1.1  mrg 	mov.b @(r0,r5),r1
   1815   1.1  mrg 	mova LOCAL(div_table_inv),r0
   1816   1.1  mrg 	bt/s LOCAL(div_by_1_neg)
   1817   1.1  mrg 	mov.l @(r0,r1),r1
   1818   1.1  mrg 	mova LOCAL(div_table_clz),r0
   1819   1.1  mrg 	dmulu.l r1,r4
   1820   1.1  mrg 	mov.b @(r0,r5),r1
   1821   1.1  mrg 	mov.l @r15+,r5
   1822   1.1  mrg 	sts mach,r0
   1823   1.1  mrg 	/* clrt */
   1824   1.1  mrg 	addc r4,r0
   1825   1.1  mrg 	mov.l @r15+,r4
   1826   1.1  mrg 	rotcr r0
   1827   1.1  mrg 	shld r1,r0
   1828   1.1  mrg 	rts
   1829   1.1  mrg 	neg r0,r0
   1830   1.1  mrg 
   1831   1.1  mrg LOCAL(pos_divisor):
   1832   1.1  mrg 	mov.l r5,@-r15
   1833   1.1  mrg 	bt/s LOCAL(pos_result)
   1834   1.1  mrg 	cmp/hi r1,r5
   1835   1.1  mrg 	neg r4,r4
   1836   1.1  mrg LOCAL(neg_result):
   1837   1.1  mrg 	extu.w r5,r0
   1838   1.1  mrg 	bf LOCAL(div_le128_neg)
   1839   1.1  mrg 	cmp/eq r5,r0
   1840   1.1  mrg 	mov r4,r0
   1841   1.1  mrg 	shlr8 r0
   1842   1.1  mrg 	bf/s LOCAL(div_ge64k_neg)
   1843   1.1  mrg 	cmp/hi r0,r5
   1844   1.1  mrg 	div0u
   1845   1.1  mrg 	mov.l LOCAL(zero_l),r1
   1846   1.1  mrg 	shll16 r5
   1847   1.1  mrg 	div1 r5,r0
   1848   1.1  mrg 	mov.l r1,@-r15
   1849   1.1  mrg 	.rept 7
   1850   1.1  mrg 	div1 r5,r0
   1851   1.1  mrg 	.endr
   1852   1.1  mrg 	mov.b r0,@(L_MSWLSB,r15)
   1853   1.1  mrg 	xtrct r4,r0
   1854   1.1  mrg 	swap.w r0,r0
   1855   1.1  mrg 	.rept 8
   1856   1.1  mrg 	div1 r5,r0
   1857   1.1  mrg 	.endr
   1858   1.1  mrg 	mov.b r0,@(L_LSWMSB,r15)
   1859   1.1  mrg LOCAL(div_ge64k_neg_end):
   1860   1.1  mrg 	.rept 8
   1861   1.1  mrg 	div1 r5,r0
   1862   1.1  mrg 	.endr
   1863   1.1  mrg 	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
   1864   1.1  mrg 	extu.b r0,r1
   1865   1.1  mrg 	mov.l @r15+,r5
   1866   1.1  mrg 	or r4,r1
   1867   1.1  mrg LOCAL(div_r8_neg_end):
   1868   1.1  mrg 	mov.l @r15+,r4
   1869   1.1  mrg 	rotcl r1
   1870   1.1  mrg 	rts
   1871   1.1  mrg 	neg r1,r0
   1872   1.1  mrg 
   1873   1.1  mrg LOCAL(div_ge64k_neg):
   1874   1.1  mrg 	bt/s LOCAL(div_r8_neg)
   1875   1.1  mrg 	div0u
   1876   1.1  mrg 	shll8 r5
   1877   1.1  mrg 	mov.l LOCAL(zero_l),r1
   1878   1.1  mrg 	.rept 6
   1879   1.1  mrg 	div1 r5,r0
   1880   1.1  mrg 	.endr
   1881   1.1  mrg 	mov.l r1,@-r15
   1882   1.1  mrg 	div1 r5,r0
   1883   1.1  mrg 	mov.w LOCAL(m256_w),r1
   1884   1.1  mrg 	div1 r5,r0
   1885   1.1  mrg 	mov.b r0,@(L_LSWMSB,r15)
   1886   1.1  mrg 	xor r4,r0
   1887   1.1  mrg 	and r1,r0
   1888   1.1  mrg 	bra LOCAL(div_ge64k_neg_end)
   1889   1.1  mrg 	xor r4,r0
   1890   1.1  mrg 
   1891   1.1  mrg LOCAL(c128_w):
   1892   1.1  mrg 	.word 128
   1893   1.1  mrg 
   1894   1.1  mrg LOCAL(div_r8_neg):
   1895   1.1  mrg 	clrt
   1896   1.1  mrg 	shll16 r4
   1897   1.1  mrg 	mov r4,r1
   1898   1.1  mrg 	shll8 r1
   1899   1.1  mrg 	mov r5,r4
   1900   1.1  mrg 	.rept 7
   1901   1.1  mrg 	rotcl r1; div1 r5,r0
   1902   1.1  mrg 	.endr
   1903   1.1  mrg 	mov.l @r15+,r5
   1904   1.1  mrg 	rotcl r1
   1905   1.1  mrg 	bra LOCAL(div_r8_neg_end)
   1906   1.1  mrg 	div1 r4,r0
   1907   1.1  mrg 
   1908   1.1  mrg LOCAL(m256_w):
   1909   1.1  mrg 	.word 0xff00
   1910   1.1  mrg /* This table has been generated by divtab-sh4.c.  */
   1911   1.1  mrg 	.balign 4
   1912   1.1  mrg LOCAL(div_table_clz):
   1913   1.1  mrg 	.byte	0
   1914   1.1  mrg 	.byte	1
   1915   1.1  mrg 	.byte	0
   1916   1.1  mrg 	.byte	-1
   1917   1.1  mrg 	.byte	-1
   1918   1.1  mrg 	.byte	-2
   1919   1.1  mrg 	.byte	-2
   1920   1.1  mrg 	.byte	-2
   1921   1.1  mrg 	.byte	-2
   1922   1.1  mrg 	.byte	-3
   1923   1.1  mrg 	.byte	-3
   1924   1.1  mrg 	.byte	-3
   1925   1.1  mrg 	.byte	-3
   1926   1.1  mrg 	.byte	-3
   1927   1.1  mrg 	.byte	-3
   1928   1.1  mrg 	.byte	-3
   1929   1.1  mrg 	.byte	-3
   1930   1.1  mrg 	.byte	-4
   1931   1.1  mrg 	.byte	-4
   1932   1.1  mrg 	.byte	-4
   1933   1.1  mrg 	.byte	-4
   1934   1.1  mrg 	.byte	-4
   1935   1.1  mrg 	.byte	-4
   1936   1.1  mrg 	.byte	-4
   1937   1.1  mrg 	.byte	-4
   1938   1.1  mrg 	.byte	-4
   1939   1.1  mrg 	.byte	-4
   1940   1.1  mrg 	.byte	-4
   1941   1.1  mrg 	.byte	-4
   1942   1.1  mrg 	.byte	-4
   1943   1.1  mrg 	.byte	-4
   1944   1.1  mrg 	.byte	-4
   1945   1.1  mrg 	.byte	-4
   1946   1.1  mrg 	.byte	-5
   1947   1.1  mrg 	.byte	-5
   1948   1.1  mrg 	.byte	-5
   1949   1.1  mrg 	.byte	-5
   1950   1.1  mrg 	.byte	-5
   1951   1.1  mrg 	.byte	-5
   1952   1.1  mrg 	.byte	-5
   1953   1.1  mrg 	.byte	-5
   1954   1.1  mrg 	.byte	-5
   1955   1.1  mrg 	.byte	-5
   1956   1.1  mrg 	.byte	-5
   1957   1.1  mrg 	.byte	-5
   1958   1.1  mrg 	.byte	-5
   1959   1.1  mrg 	.byte	-5
   1960   1.1  mrg 	.byte	-5
   1961   1.1  mrg 	.byte	-5
   1962   1.1  mrg 	.byte	-5
   1963   1.1  mrg 	.byte	-5
   1964   1.1  mrg 	.byte	-5
   1965   1.1  mrg 	.byte	-5
   1966   1.1  mrg 	.byte	-5
   1967   1.1  mrg 	.byte	-5
   1968   1.1  mrg 	.byte	-5
   1969   1.1  mrg 	.byte	-5
   1970   1.1  mrg 	.byte	-5
   1971   1.1  mrg 	.byte	-5
   1972   1.1  mrg 	.byte	-5
   1973   1.1  mrg 	.byte	-5
   1974   1.1  mrg 	.byte	-5
   1975   1.1  mrg 	.byte	-5
   1976   1.1  mrg 	.byte	-5
   1977   1.1  mrg 	.byte	-5
   1978   1.1  mrg 	.byte	-6
   1979   1.1  mrg 	.byte	-6
   1980   1.1  mrg 	.byte	-6
   1981   1.1  mrg 	.byte	-6
   1982   1.1  mrg 	.byte	-6
   1983   1.1  mrg 	.byte	-6
   1984   1.1  mrg 	.byte	-6
   1985   1.1  mrg 	.byte	-6
   1986   1.1  mrg 	.byte	-6
   1987   1.1  mrg 	.byte	-6
   1988   1.1  mrg 	.byte	-6
   1989   1.1  mrg 	.byte	-6
   1990   1.1  mrg 	.byte	-6
   1991   1.1  mrg 	.byte	-6
   1992   1.1  mrg 	.byte	-6
   1993   1.1  mrg 	.byte	-6
   1994   1.1  mrg 	.byte	-6
   1995   1.1  mrg 	.byte	-6
   1996   1.1  mrg 	.byte	-6
   1997   1.1  mrg 	.byte	-6
   1998   1.1  mrg 	.byte	-6
   1999   1.1  mrg 	.byte	-6
   2000   1.1  mrg 	.byte	-6
   2001   1.1  mrg 	.byte	-6
   2002   1.1  mrg 	.byte	-6
   2003   1.1  mrg 	.byte	-6
   2004   1.1  mrg 	.byte	-6
   2005   1.1  mrg 	.byte	-6
   2006   1.1  mrg 	.byte	-6
   2007   1.1  mrg 	.byte	-6
   2008   1.1  mrg 	.byte	-6
   2009   1.1  mrg 	.byte	-6
   2010   1.1  mrg 	.byte	-6
   2011   1.1  mrg 	.byte	-6
   2012   1.1  mrg 	.byte	-6
   2013   1.1  mrg 	.byte	-6
   2014   1.1  mrg 	.byte	-6
   2015   1.1  mrg 	.byte	-6
   2016   1.1  mrg 	.byte	-6
   2017   1.1  mrg 	.byte	-6
   2018   1.1  mrg 	.byte	-6
   2019   1.1  mrg 	.byte	-6
   2020   1.1  mrg 	.byte	-6
   2021   1.1  mrg 	.byte	-6
   2022   1.1  mrg 	.byte	-6
   2023   1.1  mrg 	.byte	-6
   2024   1.1  mrg 	.byte	-6
   2025   1.1  mrg 	.byte	-6
   2026   1.1  mrg 	.byte	-6
   2027   1.1  mrg 	.byte	-6
   2028   1.1  mrg 	.byte	-6
   2029   1.1  mrg 	.byte	-6
   2030   1.1  mrg 	.byte	-6
   2031   1.1  mrg 	.byte	-6
   2032   1.1  mrg 	.byte	-6
   2033   1.1  mrg 	.byte	-6
   2034   1.1  mrg 	.byte	-6
   2035   1.1  mrg 	.byte	-6
   2036   1.1  mrg 	.byte	-6
   2037   1.1  mrg 	.byte	-6
   2038   1.1  mrg 	.byte	-6
   2039   1.1  mrg 	.byte	-6
   2040   1.1  mrg 	.byte	-6
   2041   1.1  mrg /* Lookup table translating positive divisor to index into table of
   2042   1.1  mrg    normalized inverse.  N.B. the '0' entry is also the last entry of the
   2043   1.1  mrg  previous table, and causes an unaligned access for division by zero.  */
   2044   1.1  mrg LOCAL(div_table_ix):
   2045   1.1  mrg 	.byte	-6
   2046   1.1  mrg 	.byte	-128
   2047   1.1  mrg 	.byte	-128
   2048   1.1  mrg 	.byte	0
   2049   1.1  mrg 	.byte	-128
   2050   1.1  mrg 	.byte	-64
   2051   1.1  mrg 	.byte	0
   2052   1.1  mrg 	.byte	64
   2053   1.1  mrg 	.byte	-128
   2054   1.1  mrg 	.byte	-96
   2055   1.1  mrg 	.byte	-64
   2056   1.1  mrg 	.byte	-32
   2057   1.1  mrg 	.byte	0
   2058   1.1  mrg 	.byte	32
   2059   1.1  mrg 	.byte	64
   2060   1.1  mrg 	.byte	96
   2061   1.1  mrg 	.byte	-128
   2062   1.1  mrg 	.byte	-112
   2063   1.1  mrg 	.byte	-96
   2064   1.1  mrg 	.byte	-80
   2065   1.1  mrg 	.byte	-64
   2066   1.1  mrg 	.byte	-48
   2067   1.1  mrg 	.byte	-32
   2068   1.1  mrg 	.byte	-16
   2069   1.1  mrg 	.byte	0
   2070   1.1  mrg 	.byte	16
   2071   1.1  mrg 	.byte	32
   2072   1.1  mrg 	.byte	48
   2073   1.1  mrg 	.byte	64
   2074   1.1  mrg 	.byte	80
   2075   1.1  mrg 	.byte	96
   2076   1.1  mrg 	.byte	112
   2077   1.1  mrg 	.byte	-128
   2078   1.1  mrg 	.byte	-120
   2079   1.1  mrg 	.byte	-112
   2080   1.1  mrg 	.byte	-104
   2081   1.1  mrg 	.byte	-96
   2082   1.1  mrg 	.byte	-88
   2083   1.1  mrg 	.byte	-80
   2084   1.1  mrg 	.byte	-72
   2085   1.1  mrg 	.byte	-64
   2086   1.1  mrg 	.byte	-56
   2087   1.1  mrg 	.byte	-48
   2088   1.1  mrg 	.byte	-40
   2089   1.1  mrg 	.byte	-32
   2090   1.1  mrg 	.byte	-24
   2091   1.1  mrg 	.byte	-16
   2092   1.1  mrg 	.byte	-8
   2093   1.1  mrg 	.byte	0
   2094   1.1  mrg 	.byte	8
   2095   1.1  mrg 	.byte	16
   2096   1.1  mrg 	.byte	24
   2097   1.1  mrg 	.byte	32
   2098   1.1  mrg 	.byte	40
   2099   1.1  mrg 	.byte	48
   2100   1.1  mrg 	.byte	56
   2101   1.1  mrg 	.byte	64
   2102   1.1  mrg 	.byte	72
   2103   1.1  mrg 	.byte	80
   2104   1.1  mrg 	.byte	88
   2105   1.1  mrg 	.byte	96
   2106   1.1  mrg 	.byte	104
   2107   1.1  mrg 	.byte	112
   2108   1.1  mrg 	.byte	120
   2109   1.1  mrg 	.byte	-128
   2110   1.1  mrg 	.byte	-124
   2111   1.1  mrg 	.byte	-120
   2112   1.1  mrg 	.byte	-116
   2113   1.1  mrg 	.byte	-112
   2114   1.1  mrg 	.byte	-108
   2115   1.1  mrg 	.byte	-104
   2116   1.1  mrg 	.byte	-100
   2117   1.1  mrg 	.byte	-96
   2118   1.1  mrg 	.byte	-92
   2119   1.1  mrg 	.byte	-88
   2120   1.1  mrg 	.byte	-84
   2121   1.1  mrg 	.byte	-80
   2122   1.1  mrg 	.byte	-76
   2123   1.1  mrg 	.byte	-72
   2124   1.1  mrg 	.byte	-68
   2125   1.1  mrg 	.byte	-64
   2126   1.1  mrg 	.byte	-60
   2127   1.1  mrg 	.byte	-56
   2128   1.1  mrg 	.byte	-52
   2129   1.1  mrg 	.byte	-48
   2130   1.1  mrg 	.byte	-44
   2131   1.1  mrg 	.byte	-40
   2132   1.1  mrg 	.byte	-36
   2133   1.1  mrg 	.byte	-32
   2134   1.1  mrg 	.byte	-28
   2135   1.1  mrg 	.byte	-24
   2136   1.1  mrg 	.byte	-20
   2137   1.1  mrg 	.byte	-16
   2138   1.1  mrg 	.byte	-12
   2139   1.1  mrg 	.byte	-8
   2140   1.1  mrg 	.byte	-4
   2141   1.1  mrg 	.byte	0
   2142   1.1  mrg 	.byte	4
   2143   1.1  mrg 	.byte	8
   2144   1.1  mrg 	.byte	12
   2145   1.1  mrg 	.byte	16
   2146   1.1  mrg 	.byte	20
   2147   1.1  mrg 	.byte	24
   2148   1.1  mrg 	.byte	28
   2149   1.1  mrg 	.byte	32
   2150   1.1  mrg 	.byte	36
   2151   1.1  mrg 	.byte	40
   2152   1.1  mrg 	.byte	44
   2153   1.1  mrg 	.byte	48
   2154   1.1  mrg 	.byte	52
   2155   1.1  mrg 	.byte	56
   2156   1.1  mrg 	.byte	60
   2157   1.1  mrg 	.byte	64
   2158   1.1  mrg 	.byte	68
   2159   1.1  mrg 	.byte	72
   2160   1.1  mrg 	.byte	76
   2161   1.1  mrg 	.byte	80
   2162   1.1  mrg 	.byte	84
   2163   1.1  mrg 	.byte	88
   2164   1.1  mrg 	.byte	92
   2165   1.1  mrg 	.byte	96
   2166   1.1  mrg 	.byte	100
   2167   1.1  mrg 	.byte	104
   2168   1.1  mrg 	.byte	108
   2169   1.1  mrg 	.byte	112
   2170   1.1  mrg 	.byte	116
   2171   1.1  mrg 	.byte	120
   2172   1.1  mrg 	.byte	124
   2173   1.1  mrg 	.byte	-128
   2174   1.1  mrg /* 1/64 .. 1/127, normalized.  There is an implicit leading 1 in bit 32.  */
   2175   1.1  mrg 	.balign 4
   2176   1.1  mrg LOCAL(zero_l):
   2177   1.1  mrg 	.long	0x0
   2178   1.1  mrg 	.long	0xF81F81F9
   2179   1.1  mrg 	.long	0xF07C1F08
   2180   1.1  mrg 	.long	0xE9131AC0
   2181   1.1  mrg 	.long	0xE1E1E1E2
   2182   1.1  mrg 	.long	0xDAE6076C
   2183   1.1  mrg 	.long	0xD41D41D5
   2184   1.1  mrg 	.long	0xCD856891
   2185   1.1  mrg 	.long	0xC71C71C8
   2186   1.1  mrg 	.long	0xC0E07039
   2187   1.1  mrg 	.long	0xBACF914D
   2188   1.1  mrg 	.long	0xB4E81B4F
   2189   1.1  mrg 	.long	0xAF286BCB
   2190   1.1  mrg 	.long	0xA98EF607
   2191   1.1  mrg 	.long	0xA41A41A5
   2192   1.1  mrg 	.long	0x9EC8E952
   2193   1.1  mrg 	.long	0x9999999A
   2194   1.1  mrg 	.long	0x948B0FCE
   2195   1.1  mrg 	.long	0x8F9C18FA
   2196   1.1  mrg 	.long	0x8ACB90F7
   2197   1.1  mrg 	.long	0x86186187
   2198   1.1  mrg 	.long	0x81818182
   2199   1.1  mrg 	.long	0x7D05F418
   2200   1.1  mrg 	.long	0x78A4C818
   2201   1.1  mrg 	.long	0x745D1746
   2202   1.1  mrg 	.long	0x702E05C1
   2203   1.1  mrg 	.long	0x6C16C16D
   2204   1.1  mrg 	.long	0x68168169
   2205   1.1  mrg 	.long	0x642C8591
   2206   1.1  mrg 	.long	0x60581606
   2207   1.1  mrg 	.long	0x5C9882BA
   2208   1.1  mrg 	.long	0x58ED2309
   2209   1.1  mrg LOCAL(div_table_inv):
   2210   1.1  mrg 	.long	0x55555556
   2211   1.1  mrg 	.long	0x51D07EAF
   2212   1.1  mrg 	.long	0x4E5E0A73
   2213   1.1  mrg 	.long	0x4AFD6A06
   2214   1.1  mrg 	.long	0x47AE147B
   2215   1.1  mrg 	.long	0x446F8657
   2216   1.1  mrg 	.long	0x41414142
   2217   1.1  mrg 	.long	0x3E22CBCF
   2218   1.1  mrg 	.long	0x3B13B13C
   2219   1.1  mrg 	.long	0x38138139
   2220   1.1  mrg 	.long	0x3521CFB3
   2221   1.1  mrg 	.long	0x323E34A3
   2222   1.1  mrg 	.long	0x2F684BDB
   2223   1.1  mrg 	.long	0x2C9FB4D9
   2224   1.1  mrg 	.long	0x29E4129F
   2225   1.1  mrg 	.long	0x27350B89
   2226   1.1  mrg 	.long	0x24924925
   2227   1.1  mrg 	.long	0x21FB7813
   2228   1.1  mrg 	.long	0x1F7047DD
   2229   1.1  mrg 	.long	0x1CF06ADB
   2230   1.1  mrg 	.long	0x1A7B9612
   2231   1.1  mrg 	.long	0x18118119
   2232   1.1  mrg 	.long	0x15B1E5F8
   2233   1.1  mrg 	.long	0x135C8114
   2234   1.1  mrg 	.long	0x11111112
   2235   1.1  mrg 	.long	0xECF56BF
   2236   1.1  mrg 	.long	0xC9714FC
   2237   1.1  mrg 	.long	0xA6810A7
   2238   1.1  mrg 	.long	0x8421085
   2239   1.1  mrg 	.long	0x624DD30
   2240   1.1  mrg 	.long	0x4104105
   2241   1.1  mrg 	.long	0x2040811
   2242   1.1  mrg 	/* maximum error: 0.987342 scaled: 0.921875*/
   2243   1.1  mrg 
   2244   1.1  mrg 	ENDFUNC(GLOBAL(sdivsi3_i4i))
   2245   1.1  mrg #endif /* SH3 / SH4 */
   2246   1.1  mrg 
   2247   1.1  mrg #endif /* L_div_table */
   2248   1.1  mrg 
   2249   1.1  mrg #ifdef L_udiv_qrnnd_16
   2250   1.1  mrg 	HIDDEN_FUNC(GLOBAL(udiv_qrnnd_16))
   2251   1.1  mrg 	/* r0: rn r1: qn */ /* r0: n1 r4: n0 r5: d r6: d1 */ /* r2: __m */
   2252   1.1  mrg 	/* n1 < d, but n1 might be larger than d1.  */
   2253   1.1  mrg 	.global GLOBAL(udiv_qrnnd_16)
   2254   1.1  mrg 	.balign 8
   2255   1.1  mrg GLOBAL(udiv_qrnnd_16):
   2256   1.1  mrg 	div0u
   2257   1.1  mrg 	cmp/hi r6,r0
   2258   1.1  mrg 	bt .Lots
   2259   1.1  mrg 	.rept 16
   2260   1.1  mrg 	div1 r6,r0
   2261   1.1  mrg 	.endr
   2262   1.1  mrg 	extu.w r0,r1
   2263   1.1  mrg 	bt 0f
   2264   1.1  mrg 	add r6,r0
   2265   1.1  mrg 0:	rotcl r1
   2266   1.1  mrg 	mulu.w r1,r5
   2267   1.1  mrg 	xtrct r4,r0
   2268   1.1  mrg 	swap.w r0,r0
   2269   1.1  mrg 	sts macl,r2
   2270   1.1  mrg 	cmp/hs r2,r0
   2271   1.1  mrg 	sub r2,r0
   2272   1.1  mrg 	bt 0f
   2273   1.1  mrg 	addc r5,r0
   2274   1.1  mrg 	add #-1,r1
   2275   1.1  mrg 	bt 0f
   2276   1.1  mrg 1:	add #-1,r1
   2277   1.1  mrg 	rts
   2278   1.1  mrg 	add r5,r0
   2279   1.1  mrg 	.balign 8
   2280   1.1  mrg .Lots:
   2281   1.1  mrg 	sub r5,r0
   2282   1.1  mrg 	swap.w r4,r1
   2283   1.1  mrg 	xtrct r0,r1
   2284   1.1  mrg 	clrt
   2285   1.1  mrg 	mov r1,r0
   2286   1.1  mrg 	addc r5,r0
   2287   1.1  mrg 	mov #-1,r1
   2288   1.1  mrg 	SL1(bf, 1b,
   2289   1.1  mrg 	shlr16 r1)
   2290   1.1  mrg 0:	rts
   2291   1.1  mrg 	nop
   2292   1.1  mrg 	ENDFUNC(GLOBAL(udiv_qrnnd_16))
   2293   1.1  mrg #endif /* L_udiv_qrnnd_16 */
   2294