GNU Linux-libre 4.14.303-gnu1
[releases.git] / arch / sh / lib / ashiftrt.S
1 /* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2    2004, 2005, 2006
3    Free Software Foundation, Inc.
4
5 This file is free software; you can redistribute it and/or modify it
6 under the terms of the GNU General Public License as published by the
7 Free Software Foundation; either version 2, or (at your option) any
8 later version.
9
10 In addition to the permissions in the GNU General Public License, the
11 Free Software Foundation gives you unlimited permission to link the
12 compiled version of this file into combinations with other programs,
13 and to distribute those combinations without any restriction coming
14 from the use of this file.  (The General Public License restrictions
15 do apply in other respects; for example, they cover modification of
16 the file, and distribution when not linked into a combine
17 executable.)
18
19 This file is distributed in the hope that it will be useful, but
20 WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22 General Public License for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with this program; see the file COPYING.  If not, write to
26 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
27 Boston, 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         .global __ashiftrt_r4_0
42         .global __ashiftrt_r4_1
43         .global __ashiftrt_r4_2
44         .global __ashiftrt_r4_3
45         .global __ashiftrt_r4_4
46         .global __ashiftrt_r4_5
47         .global __ashiftrt_r4_6
48         .global __ashiftrt_r4_7
49         .global __ashiftrt_r4_8
50         .global __ashiftrt_r4_9
51         .global __ashiftrt_r4_10
52         .global __ashiftrt_r4_11
53         .global __ashiftrt_r4_12
54         .global __ashiftrt_r4_13
55         .global __ashiftrt_r4_14
56         .global __ashiftrt_r4_15
57         .global __ashiftrt_r4_16
58         .global __ashiftrt_r4_17
59         .global __ashiftrt_r4_18
60         .global __ashiftrt_r4_19
61         .global __ashiftrt_r4_20
62         .global __ashiftrt_r4_21
63         .global __ashiftrt_r4_22
64         .global __ashiftrt_r4_23
65         .global __ashiftrt_r4_24
66         .global __ashiftrt_r4_25
67         .global __ashiftrt_r4_26
68         .global __ashiftrt_r4_27
69         .global __ashiftrt_r4_28
70         .global __ashiftrt_r4_29
71         .global __ashiftrt_r4_30
72         .global __ashiftrt_r4_31
73         .global __ashiftrt_r4_32
74
75         .align  1
76 __ashiftrt_r4_32:
77 __ashiftrt_r4_31:
78         rotcl   r4
79         rts
80         subc    r4,r4
81 __ashiftrt_r4_30:
82         shar    r4
83 __ashiftrt_r4_29:
84         shar    r4
85 __ashiftrt_r4_28:
86         shar    r4
87 __ashiftrt_r4_27:
88         shar    r4
89 __ashiftrt_r4_26:
90         shar    r4
91 __ashiftrt_r4_25:
92         shar    r4
93 __ashiftrt_r4_24:
94         shlr16  r4
95         shlr8   r4
96         rts
97         exts.b  r4,r4
98 __ashiftrt_r4_23:
99         shar    r4
100 __ashiftrt_r4_22:
101         shar    r4
102 __ashiftrt_r4_21:
103         shar    r4
104 __ashiftrt_r4_20:
105         shar    r4
106 __ashiftrt_r4_19:
107         shar    r4
108 __ashiftrt_r4_18:
109         shar    r4
110 __ashiftrt_r4_17:
111         shar    r4
112 __ashiftrt_r4_16:
113         shlr16  r4
114         rts
115         exts.w  r4,r4
116 __ashiftrt_r4_15:
117         shar    r4
118 __ashiftrt_r4_14:
119         shar    r4
120 __ashiftrt_r4_13:
121         shar    r4
122 __ashiftrt_r4_12:
123         shar    r4
124 __ashiftrt_r4_11:
125         shar    r4
126 __ashiftrt_r4_10:
127         shar    r4
128 __ashiftrt_r4_9:
129         shar    r4
130 __ashiftrt_r4_8:
131         shar    r4
132 __ashiftrt_r4_7:
133         shar    r4
134 __ashiftrt_r4_6:
135         shar    r4
136 __ashiftrt_r4_5:
137         shar    r4
138 __ashiftrt_r4_4:
139         shar    r4
140 __ashiftrt_r4_3:
141         shar    r4
142 __ashiftrt_r4_2:
143         shar    r4
144 __ashiftrt_r4_1:
145         rts
146         shar    r4
147 __ashiftrt_r4_0:
148         rts
149         nop