1/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2 2004, 2005, 2006 3 Free Software Foundation, Inc. 4 5This file is free software; you can redistribute it and/or modify it 6under the terms of the GNU General Public License as published by the 7Free Software Foundation; either version 2, or (at your option) any 8later version. 9 10In addition to the permissions in the GNU General Public License, the 11Free Software Foundation gives you unlimited permission to link the 12compiled version of this file into combinations with other programs, 13and to distribute those combinations without any restriction coming 14from the use of this file. (The General Public License restrictions 15do apply in other respects; for example, they cover modification of 16the file, and distribution when not linked into a combine 17executable.) 18 19This file is distributed in the hope that it will be useful, but 20WITHOUT ANY WARRANTY; without even the implied warranty of 21MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22General Public License for more details. 23 24You should have received a copy of the GNU General Public License 25along with this program; see the file COPYING. If not, write to 26the Free Software Foundation, 51 Franklin Street, Fifth Floor, 27Boston, MA 02110-1301, USA. */ 28 29!! libgcc routines for the Renesas / SuperH SH CPUs. 30!! Contributed by Steve Chamberlain. 31!! sac@cygnus.com 32 33!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 34!! recoded in assembly by Toshiyasu Morita 35!! tm@netcom.com 36 37/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 38 ELF local label prefixes by J"orn Rennecke 39 amylaar@cygnus.com */ 40 41! 42! __lshrsi3 43! 44! Entry: 45! 46! r4: Value to shift 47! r5: Shifts 48! 49! Exit: 50! 51! r0: Result 52! 53! Destroys: 54! 55! (none) 56! 57 .global __lshrsi3 58 59 .align 2 60__lshrsi3: 61 mov #31,r0 62 and r0,r5 63 mova lshrsi3_table,r0 64 mov.b @(r0,r5),r5 65#ifdef __sh1__ 66 add r5,r0 67 jmp @r0 68#else 69 braf r5 70#endif 71 mov r4,r0 72 73 .align 2 74lshrsi3_table: 75 .byte lshrsi3_0-lshrsi3_table 76 .byte lshrsi3_1-lshrsi3_table 77 .byte lshrsi3_2-lshrsi3_table 78 .byte lshrsi3_3-lshrsi3_table 79 .byte lshrsi3_4-lshrsi3_table 80 .byte lshrsi3_5-lshrsi3_table 81 .byte lshrsi3_6-lshrsi3_table 82 .byte lshrsi3_7-lshrsi3_table 83 .byte lshrsi3_8-lshrsi3_table 84 .byte lshrsi3_9-lshrsi3_table 85 .byte lshrsi3_10-lshrsi3_table 86 .byte lshrsi3_11-lshrsi3_table 87 .byte lshrsi3_12-lshrsi3_table 88 .byte lshrsi3_13-lshrsi3_table 89 .byte lshrsi3_14-lshrsi3_table 90 .byte lshrsi3_15-lshrsi3_table 91 .byte lshrsi3_16-lshrsi3_table 92 .byte lshrsi3_17-lshrsi3_table 93 .byte lshrsi3_18-lshrsi3_table 94 .byte lshrsi3_19-lshrsi3_table 95 .byte lshrsi3_20-lshrsi3_table 96 .byte lshrsi3_21-lshrsi3_table 97 .byte lshrsi3_22-lshrsi3_table 98 .byte lshrsi3_23-lshrsi3_table 99 .byte lshrsi3_24-lshrsi3_table 100 .byte lshrsi3_25-lshrsi3_table 101 .byte lshrsi3_26-lshrsi3_table 102 .byte lshrsi3_27-lshrsi3_table 103 .byte lshrsi3_28-lshrsi3_table 104 .byte lshrsi3_29-lshrsi3_table 105 .byte lshrsi3_30-lshrsi3_table 106 .byte lshrsi3_31-lshrsi3_table 107 108lshrsi3_6: 109 shlr2 r0 110lshrsi3_4: 111 shlr2 r0 112lshrsi3_2: 113 rts 114 shlr2 r0 115 116lshrsi3_7: 117 shlr2 r0 118lshrsi3_5: 119 shlr2 r0 120lshrsi3_3: 121 shlr2 r0 122lshrsi3_1: 123 rts 124 shlr r0 125 126lshrsi3_14: 127 shlr2 r0 128lshrsi3_12: 129 shlr2 r0 130lshrsi3_10: 131 shlr2 r0 132lshrsi3_8: 133 rts 134 shlr8 r0 135 136lshrsi3_15: 137 shlr2 r0 138lshrsi3_13: 139 shlr2 r0 140lshrsi3_11: 141 shlr2 r0 142lshrsi3_9: 143 shlr8 r0 144 rts 145 shlr r0 146 147lshrsi3_22: 148 shlr2 r0 149lshrsi3_20: 150 shlr2 r0 151lshrsi3_18: 152 shlr2 r0 153lshrsi3_16: 154 rts 155 shlr16 r0 156 157lshrsi3_23: 158 shlr2 r0 159lshrsi3_21: 160 shlr2 r0 161lshrsi3_19: 162 shlr2 r0 163lshrsi3_17: 164 shlr16 r0 165 rts 166 shlr r0 167 168lshrsi3_30: 169 shlr2 r0 170lshrsi3_28: 171 shlr2 r0 172lshrsi3_26: 173 shlr2 r0 174lshrsi3_24: 175 shlr16 r0 176 rts 177 shlr8 r0 178 179lshrsi3_31: 180 shlr2 r0 181lshrsi3_29: 182 shlr2 r0 183lshrsi3_27: 184 shlr2 r0 185lshrsi3_25: 186 shlr16 r0 187 shlr8 r0 188 rts 189 shlr r0 190 191lshrsi3_0: 192 rts 193 nop 194