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! __ashrsi3 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 58 .global __ashrsi3 59 60 .align 2 61__ashrsi3: 62 mov #31,r0 63 and r0,r5 64 mova ashrsi3_table,r0 65 mov.b @(r0,r5),r5 66#ifdef __sh1__ 67 add r5,r0 68 jmp @r0 69#else 70 braf r5 71#endif 72 mov r4,r0 73 74 .align 2 75ashrsi3_table: 76 .byte ashrsi3_0-ashrsi3_table 77 .byte ashrsi3_1-ashrsi3_table 78 .byte ashrsi3_2-ashrsi3_table 79 .byte ashrsi3_3-ashrsi3_table 80 .byte ashrsi3_4-ashrsi3_table 81 .byte ashrsi3_5-ashrsi3_table 82 .byte ashrsi3_6-ashrsi3_table 83 .byte ashrsi3_7-ashrsi3_table 84 .byte ashrsi3_8-ashrsi3_table 85 .byte ashrsi3_9-ashrsi3_table 86 .byte ashrsi3_10-ashrsi3_table 87 .byte ashrsi3_11-ashrsi3_table 88 .byte ashrsi3_12-ashrsi3_table 89 .byte ashrsi3_13-ashrsi3_table 90 .byte ashrsi3_14-ashrsi3_table 91 .byte ashrsi3_15-ashrsi3_table 92 .byte ashrsi3_16-ashrsi3_table 93 .byte ashrsi3_17-ashrsi3_table 94 .byte ashrsi3_18-ashrsi3_table 95 .byte ashrsi3_19-ashrsi3_table 96 .byte ashrsi3_20-ashrsi3_table 97 .byte ashrsi3_21-ashrsi3_table 98 .byte ashrsi3_22-ashrsi3_table 99 .byte ashrsi3_23-ashrsi3_table 100 .byte ashrsi3_24-ashrsi3_table 101 .byte ashrsi3_25-ashrsi3_table 102 .byte ashrsi3_26-ashrsi3_table 103 .byte ashrsi3_27-ashrsi3_table 104 .byte ashrsi3_28-ashrsi3_table 105 .byte ashrsi3_29-ashrsi3_table 106 .byte ashrsi3_30-ashrsi3_table 107 .byte ashrsi3_31-ashrsi3_table 108 109ashrsi3_31: 110 rotcl r0 111 rts 112 subc r0,r0 113 114ashrsi3_30: 115 shar r0 116ashrsi3_29: 117 shar r0 118ashrsi3_28: 119 shar r0 120ashrsi3_27: 121 shar r0 122ashrsi3_26: 123 shar r0 124ashrsi3_25: 125 shar r0 126ashrsi3_24: 127 shlr16 r0 128 shlr8 r0 129 rts 130 exts.b r0,r0 131 132ashrsi3_23: 133 shar r0 134ashrsi3_22: 135 shar r0 136ashrsi3_21: 137 shar r0 138ashrsi3_20: 139 shar r0 140ashrsi3_19: 141 shar r0 142ashrsi3_18: 143 shar r0 144ashrsi3_17: 145 shar r0 146ashrsi3_16: 147 shlr16 r0 148 rts 149 exts.w r0,r0 150 151ashrsi3_15: 152 shar r0 153ashrsi3_14: 154 shar r0 155ashrsi3_13: 156 shar r0 157ashrsi3_12: 158 shar r0 159ashrsi3_11: 160 shar r0 161ashrsi3_10: 162 shar r0 163ashrsi3_9: 164 shar r0 165ashrsi3_8: 166 shar r0 167ashrsi3_7: 168 shar r0 169ashrsi3_6: 170 shar r0 171ashrsi3_5: 172 shar r0 173ashrsi3_4: 174 shar r0 175ashrsi3_3: 176 shar r0 177ashrsi3_2: 178 shar r0 179ashrsi3_1: 180 rts 181 shar r0 182 183ashrsi3_0: 184 rts 185 nop 186