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! __ashlsi3 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 __ashlsi3 58 59 .align 2 60__ashlsi3: 61 mov #31,r0 62 and r0,r5 63 mova ashlsi3_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 74ashlsi3_table: 75 .byte ashlsi3_0-ashlsi3_table 76 .byte ashlsi3_1-ashlsi3_table 77 .byte ashlsi3_2-ashlsi3_table 78 .byte ashlsi3_3-ashlsi3_table 79 .byte ashlsi3_4-ashlsi3_table 80 .byte ashlsi3_5-ashlsi3_table 81 .byte ashlsi3_6-ashlsi3_table 82 .byte ashlsi3_7-ashlsi3_table 83 .byte ashlsi3_8-ashlsi3_table 84 .byte ashlsi3_9-ashlsi3_table 85 .byte ashlsi3_10-ashlsi3_table 86 .byte ashlsi3_11-ashlsi3_table 87 .byte ashlsi3_12-ashlsi3_table 88 .byte ashlsi3_13-ashlsi3_table 89 .byte ashlsi3_14-ashlsi3_table 90 .byte ashlsi3_15-ashlsi3_table 91 .byte ashlsi3_16-ashlsi3_table 92 .byte ashlsi3_17-ashlsi3_table 93 .byte ashlsi3_18-ashlsi3_table 94 .byte ashlsi3_19-ashlsi3_table 95 .byte ashlsi3_20-ashlsi3_table 96 .byte ashlsi3_21-ashlsi3_table 97 .byte ashlsi3_22-ashlsi3_table 98 .byte ashlsi3_23-ashlsi3_table 99 .byte ashlsi3_24-ashlsi3_table 100 .byte ashlsi3_25-ashlsi3_table 101 .byte ashlsi3_26-ashlsi3_table 102 .byte ashlsi3_27-ashlsi3_table 103 .byte ashlsi3_28-ashlsi3_table 104 .byte ashlsi3_29-ashlsi3_table 105 .byte ashlsi3_30-ashlsi3_table 106 .byte ashlsi3_31-ashlsi3_table 107 108ashlsi3_6: 109 shll2 r0 110ashlsi3_4: 111 shll2 r0 112ashlsi3_2: 113 rts 114 shll2 r0 115 116ashlsi3_7: 117 shll2 r0 118ashlsi3_5: 119 shll2 r0 120ashlsi3_3: 121 shll2 r0 122ashlsi3_1: 123 rts 124 shll r0 125 126ashlsi3_14: 127 shll2 r0 128ashlsi3_12: 129 shll2 r0 130ashlsi3_10: 131 shll2 r0 132ashlsi3_8: 133 rts 134 shll8 r0 135 136ashlsi3_15: 137 shll2 r0 138ashlsi3_13: 139 shll2 r0 140ashlsi3_11: 141 shll2 r0 142ashlsi3_9: 143 shll8 r0 144 rts 145 shll r0 146 147ashlsi3_22: 148 shll2 r0 149ashlsi3_20: 150 shll2 r0 151ashlsi3_18: 152 shll2 r0 153ashlsi3_16: 154 rts 155 shll16 r0 156 157ashlsi3_23: 158 shll2 r0 159ashlsi3_21: 160 shll2 r0 161ashlsi3_19: 162 shll2 r0 163ashlsi3_17: 164 shll16 r0 165 rts 166 shll r0 167 168ashlsi3_30: 169 shll2 r0 170ashlsi3_28: 171 shll2 r0 172ashlsi3_26: 173 shll2 r0 174ashlsi3_24: 175 shll16 r0 176 rts 177 shll8 r0 178 179ashlsi3_31: 180 shll2 r0 181ashlsi3_29: 182 shll2 r0 183ashlsi3_27: 184 shll2 r0 185ashlsi3_25: 186 shll16 r0 187 shll8 r0 188 rts 189 shll r0 190 191ashlsi3_0: 192 rts 193 nop 194