Linux Audio

Check our new training course

Loading...
v4.17
  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! __lshrsi3_r0
 58!
 59! Entry:
 60!
 61! r0: Value to shift
 62! r5: Shifts
 63!
 64! Exit:
 65!
 66! r0: Result
 67!
 68! Destroys:
 69!
 70! (none)
 71!
 72	.global	__lshrsi3
 73	.global	__lshrsi3_r0
 74	
 75	.align	2
 76__lshrsi3:
 77	mov	r5,r0
 78	.align	2
 79__lshrsi3_r0:
 80	and	#31,r0
 81	mov.l	r4,@-r15
 82	mov	r0,r4
 83	mova	lshrsi3_table,r0
 84	mov.b	@(r0,r4),r4
 85	add	r4,r0
 86	jmp	@r0
 87	mov.l	@r15+,r0
 88
 89	.align	2
 90lshrsi3_table:
 91	.byte		lshrsi3_0-lshrsi3_table
 92	.byte		lshrsi3_1-lshrsi3_table
 93	.byte		lshrsi3_2-lshrsi3_table
 94	.byte		lshrsi3_3-lshrsi3_table
 95	.byte		lshrsi3_4-lshrsi3_table
 96	.byte		lshrsi3_5-lshrsi3_table
 97	.byte		lshrsi3_6-lshrsi3_table
 98	.byte		lshrsi3_7-lshrsi3_table
 99	.byte		lshrsi3_8-lshrsi3_table
100	.byte		lshrsi3_9-lshrsi3_table
101	.byte		lshrsi3_10-lshrsi3_table
102	.byte		lshrsi3_11-lshrsi3_table
103	.byte		lshrsi3_12-lshrsi3_table
104	.byte		lshrsi3_13-lshrsi3_table
105	.byte		lshrsi3_14-lshrsi3_table
106	.byte		lshrsi3_15-lshrsi3_table
107	.byte		lshrsi3_16-lshrsi3_table
108	.byte		lshrsi3_17-lshrsi3_table
109	.byte		lshrsi3_18-lshrsi3_table
110	.byte		lshrsi3_19-lshrsi3_table
111	.byte		lshrsi3_20-lshrsi3_table
112	.byte		lshrsi3_21-lshrsi3_table
113	.byte		lshrsi3_22-lshrsi3_table
114	.byte		lshrsi3_23-lshrsi3_table
115	.byte		lshrsi3_24-lshrsi3_table
116	.byte		lshrsi3_25-lshrsi3_table
117	.byte		lshrsi3_26-lshrsi3_table
118	.byte		lshrsi3_27-lshrsi3_table
119	.byte		lshrsi3_28-lshrsi3_table
120	.byte		lshrsi3_29-lshrsi3_table
121	.byte		lshrsi3_30-lshrsi3_table
122	.byte		lshrsi3_31-lshrsi3_table
123
124lshrsi3_6:
125	shlr2	r0
126lshrsi3_4:
127	shlr2	r0
128lshrsi3_2:
129	rts
130	shlr2	r0
131
132lshrsi3_7:
133	shlr2	r0
134lshrsi3_5:
135	shlr2	r0
136lshrsi3_3:
137	shlr2	r0
138lshrsi3_1:
139	rts
140	shlr	r0
141
142lshrsi3_14:
143	shlr2	r0
144lshrsi3_12:
145	shlr2	r0
146lshrsi3_10:
147	shlr2	r0
148lshrsi3_8:
149	rts
150	shlr8	r0
151
152lshrsi3_15:
153	shlr2	r0
154lshrsi3_13:
155	shlr2	r0
156lshrsi3_11:
157	shlr2	r0
158lshrsi3_9:
159	shlr8	r0
160	rts
161	shlr	r0
162
163lshrsi3_22:
164	shlr2	r0
165lshrsi3_20:
166	shlr2	r0
167lshrsi3_18:
168	shlr2	r0
169lshrsi3_16:
170	rts
171	shlr16	r0
172
173lshrsi3_23:
174	shlr2	r0
175lshrsi3_21:
176	shlr2	r0
177lshrsi3_19:
178	shlr2	r0
179lshrsi3_17:
180	shlr16	r0
181	rts
182	shlr	r0
183
184lshrsi3_30:
185	shlr2	r0
186lshrsi3_28:
187	shlr2	r0
188lshrsi3_26:
189	shlr2	r0
190lshrsi3_24:
191	shlr16	r0
192	rts
193	shlr8	r0
194
195lshrsi3_31:
196	shlr2	r0
197lshrsi3_29:
198	shlr2	r0
199lshrsi3_27:
200	shlr2	r0
201lshrsi3_25:
202	shlr16	r0
203	shlr8	r0
204	rts
205	shlr	r0
206
207lshrsi3_0:
208	rts
209	nop
v6.2
  1/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
  2
  3   Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
  4   2004, 2005, 2006
  5   Free Software Foundation, Inc.
  6*/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  7
  8!! libgcc routines for the Renesas / SuperH SH CPUs.
  9!! Contributed by Steve Chamberlain.
 10!! sac@cygnus.com
 11
 12!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
 13!! recoded in assembly by Toshiyasu Morita
 14!! tm@netcom.com
 15
 16/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
 17   ELF local label prefixes by J"orn Rennecke
 18   amylaar@cygnus.com  */
 19
 20!
 21! __lshrsi3
 22!
 23! Entry:
 24!
 25! r4: Value to shift
 26! r5: Shifts
 27!
 28! Exit:
 29!
 30! r0: Result
 31!
 32! Destroys:
 33!
 34! (none)
 35!
 36! __lshrsi3_r0
 37!
 38! Entry:
 39!
 40! r0: Value to shift
 41! r5: Shifts
 42!
 43! Exit:
 44!
 45! r0: Result
 46!
 47! Destroys:
 48!
 49! (none)
 50!
 51	.global	__lshrsi3
 52	.global	__lshrsi3_r0
 53	
 54	.align	2
 55__lshrsi3:
 56	mov	r5,r0
 57	.align	2
 58__lshrsi3_r0:
 59	and	#31,r0
 60	mov.l	r4,@-r15
 61	mov	r0,r4
 62	mova	lshrsi3_table,r0
 63	mov.b	@(r0,r4),r4
 64	add	r4,r0
 65	jmp	@r0
 66	mov.l	@r15+,r0
 67
 68	.align	2
 69lshrsi3_table:
 70	.byte		lshrsi3_0-lshrsi3_table
 71	.byte		lshrsi3_1-lshrsi3_table
 72	.byte		lshrsi3_2-lshrsi3_table
 73	.byte		lshrsi3_3-lshrsi3_table
 74	.byte		lshrsi3_4-lshrsi3_table
 75	.byte		lshrsi3_5-lshrsi3_table
 76	.byte		lshrsi3_6-lshrsi3_table
 77	.byte		lshrsi3_7-lshrsi3_table
 78	.byte		lshrsi3_8-lshrsi3_table
 79	.byte		lshrsi3_9-lshrsi3_table
 80	.byte		lshrsi3_10-lshrsi3_table
 81	.byte		lshrsi3_11-lshrsi3_table
 82	.byte		lshrsi3_12-lshrsi3_table
 83	.byte		lshrsi3_13-lshrsi3_table
 84	.byte		lshrsi3_14-lshrsi3_table
 85	.byte		lshrsi3_15-lshrsi3_table
 86	.byte		lshrsi3_16-lshrsi3_table
 87	.byte		lshrsi3_17-lshrsi3_table
 88	.byte		lshrsi3_18-lshrsi3_table
 89	.byte		lshrsi3_19-lshrsi3_table
 90	.byte		lshrsi3_20-lshrsi3_table
 91	.byte		lshrsi3_21-lshrsi3_table
 92	.byte		lshrsi3_22-lshrsi3_table
 93	.byte		lshrsi3_23-lshrsi3_table
 94	.byte		lshrsi3_24-lshrsi3_table
 95	.byte		lshrsi3_25-lshrsi3_table
 96	.byte		lshrsi3_26-lshrsi3_table
 97	.byte		lshrsi3_27-lshrsi3_table
 98	.byte		lshrsi3_28-lshrsi3_table
 99	.byte		lshrsi3_29-lshrsi3_table
100	.byte		lshrsi3_30-lshrsi3_table
101	.byte		lshrsi3_31-lshrsi3_table
102
103lshrsi3_6:
104	shlr2	r0
105lshrsi3_4:
106	shlr2	r0
107lshrsi3_2:
108	rts
109	shlr2	r0
110
111lshrsi3_7:
112	shlr2	r0
113lshrsi3_5:
114	shlr2	r0
115lshrsi3_3:
116	shlr2	r0
117lshrsi3_1:
118	rts
119	shlr	r0
120
121lshrsi3_14:
122	shlr2	r0
123lshrsi3_12:
124	shlr2	r0
125lshrsi3_10:
126	shlr2	r0
127lshrsi3_8:
128	rts
129	shlr8	r0
130
131lshrsi3_15:
132	shlr2	r0
133lshrsi3_13:
134	shlr2	r0
135lshrsi3_11:
136	shlr2	r0
137lshrsi3_9:
138	shlr8	r0
139	rts
140	shlr	r0
141
142lshrsi3_22:
143	shlr2	r0
144lshrsi3_20:
145	shlr2	r0
146lshrsi3_18:
147	shlr2	r0
148lshrsi3_16:
149	rts
150	shlr16	r0
151
152lshrsi3_23:
153	shlr2	r0
154lshrsi3_21:
155	shlr2	r0
156lshrsi3_19:
157	shlr2	r0
158lshrsi3_17:
159	shlr16	r0
160	rts
161	shlr	r0
162
163lshrsi3_30:
164	shlr2	r0
165lshrsi3_28:
166	shlr2	r0
167lshrsi3_26:
168	shlr2	r0
169lshrsi3_24:
170	shlr16	r0
171	rts
172	shlr8	r0
173
174lshrsi3_31:
175	shlr2	r0
176lshrsi3_29:
177	shlr2	r0
178lshrsi3_27:
179	shlr2	r0
180lshrsi3_25:
181	shlr16	r0
182	shlr8	r0
183	rts
184	shlr	r0
185
186lshrsi3_0:
187	rts
188	nop