xref: /linux/arch/sh/lib/ashiftrt.S (revision 9f6d3c4b76314c40c866a935d78c80fd284768bd)
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	.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
150