1/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0 2 3 Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 4 2004, 2005, 2006 5 Free Software Foundation, Inc. 6*/ 7 8!! libgcc routines for the Renesas / SuperH SH CPUs. 9!! Contributed by Steve Chamberlain. 10!! sac@cygnus.com 11 12!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 13!! recoded in assembly by Toshiyasu Morita 14!! tm@netcom.com 15 16/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 17 ELF local label prefixes by J"orn Rennecke 18 amylaar@cygnus.com */ 19 20! 21! __lshrsi3 22! 23! Entry: 24! 25! r4: Value to shift 26! r5: Shifts 27! 28! Exit: 29! 30! r0: Result 31! 32! Destroys: 33! 34! (none) 35! 36! __lshrsi3_r0 37! 38! Entry: 39! 40! r0: Value to shift 41! r5: Shifts 42! 43! Exit: 44! 45! r0: Result 46! 47! Destroys: 48! 49! (none) 50! 51 .global __lshrsi3 52 .global __lshrsi3_r0 53 54 .align 2 55__lshrsi3: 56 mov r5,r0 57 .align 2 58__lshrsi3_r0: 59 and #31,r0 60 mov.l r4,@-r15 61 mov r0,r4 62 mova lshrsi3_table,r0 63 mov.b @(r0,r4),r4 64 add r4,r0 65 jmp @r0 66 mov.l @r15+,r0 67 68 .align 2 69lshrsi3_table: 70 .byte lshrsi3_0-lshrsi3_table 71 .byte lshrsi3_1-lshrsi3_table 72 .byte lshrsi3_2-lshrsi3_table 73 .byte lshrsi3_3-lshrsi3_table 74 .byte lshrsi3_4-lshrsi3_table 75 .byte lshrsi3_5-lshrsi3_table 76 .byte lshrsi3_6-lshrsi3_table 77 .byte lshrsi3_7-lshrsi3_table 78 .byte lshrsi3_8-lshrsi3_table 79 .byte lshrsi3_9-lshrsi3_table 80 .byte lshrsi3_10-lshrsi3_table 81 .byte lshrsi3_11-lshrsi3_table 82 .byte lshrsi3_12-lshrsi3_table 83 .byte lshrsi3_13-lshrsi3_table 84 .byte lshrsi3_14-lshrsi3_table 85 .byte lshrsi3_15-lshrsi3_table 86 .byte lshrsi3_16-lshrsi3_table 87 .byte lshrsi3_17-lshrsi3_table 88 .byte lshrsi3_18-lshrsi3_table 89 .byte lshrsi3_19-lshrsi3_table 90 .byte lshrsi3_20-lshrsi3_table 91 .byte lshrsi3_21-lshrsi3_table 92 .byte lshrsi3_22-lshrsi3_table 93 .byte lshrsi3_23-lshrsi3_table 94 .byte lshrsi3_24-lshrsi3_table 95 .byte lshrsi3_25-lshrsi3_table 96 .byte lshrsi3_26-lshrsi3_table 97 .byte lshrsi3_27-lshrsi3_table 98 .byte lshrsi3_28-lshrsi3_table 99 .byte lshrsi3_29-lshrsi3_table 100 .byte lshrsi3_30-lshrsi3_table 101 .byte lshrsi3_31-lshrsi3_table 102 103lshrsi3_6: 104 shlr2 r0 105lshrsi3_4: 106 shlr2 r0 107lshrsi3_2: 108 rts 109 shlr2 r0 110 111lshrsi3_7: 112 shlr2 r0 113lshrsi3_5: 114 shlr2 r0 115lshrsi3_3: 116 shlr2 r0 117lshrsi3_1: 118 rts 119 shlr r0 120 121lshrsi3_14: 122 shlr2 r0 123lshrsi3_12: 124 shlr2 r0 125lshrsi3_10: 126 shlr2 r0 127lshrsi3_8: 128 rts 129 shlr8 r0 130 131lshrsi3_15: 132 shlr2 r0 133lshrsi3_13: 134 shlr2 r0 135lshrsi3_11: 136 shlr2 r0 137lshrsi3_9: 138 shlr8 r0 139 rts 140 shlr r0 141 142lshrsi3_22: 143 shlr2 r0 144lshrsi3_20: 145 shlr2 r0 146lshrsi3_18: 147 shlr2 r0 148lshrsi3_16: 149 rts 150 shlr16 r0 151 152lshrsi3_23: 153 shlr2 r0 154lshrsi3_21: 155 shlr2 r0 156lshrsi3_19: 157 shlr2 r0 158lshrsi3_17: 159 shlr16 r0 160 rts 161 shlr r0 162 163lshrsi3_30: 164 shlr2 r0 165lshrsi3_28: 166 shlr2 r0 167lshrsi3_26: 168 shlr2 r0 169lshrsi3_24: 170 shlr16 r0 171 rts 172 shlr8 r0 173 174lshrsi3_31: 175 shlr2 r0 176lshrsi3_29: 177 shlr2 r0 178lshrsi3_27: 179 shlr2 r0 180lshrsi3_25: 181 shlr16 r0 182 shlr8 r0 183 rts 184 shlr r0 185 186lshrsi3_0: 187 rts 188 nop 189