Linux Audio

Check our new training course

Loading...
v5.9
  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! __ashlsi3
 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! __ashlsi3_r0
 37!
 38! Entry:
 39!
 40! r4: Value to shift
 41! r0: Shifts
 42!
 43! Exit:
 44!
 45! r0: Result
 46!
 47! Destroys:
 48!
 49! (none)
 50
 51
 52	.global	__ashlsi3
 53	.global	__ashlsi3_r0
 54	
 55	.align	2
 56__ashlsi3:
 57	mov	r5,r0
 58	.align	2
 59__ashlsi3_r0:
 60	and	#31,r0
 61	mov.l	r4,@-r15
 62	mov	r0,r4
 63	mova	ashlsi3_table,r0
 64	mov.b	@(r0,r4),r4
 65	add	r4,r0
 
 66	jmp	@r0
 67	mov.l	@r15+,r0
 
 
 
 68
 69	.align	2
 70ashlsi3_table:
 71	.byte		ashlsi3_0-ashlsi3_table
 72	.byte		ashlsi3_1-ashlsi3_table
 73	.byte		ashlsi3_2-ashlsi3_table
 74	.byte		ashlsi3_3-ashlsi3_table
 75	.byte		ashlsi3_4-ashlsi3_table
 76	.byte		ashlsi3_5-ashlsi3_table
 77	.byte		ashlsi3_6-ashlsi3_table
 78	.byte		ashlsi3_7-ashlsi3_table
 79	.byte		ashlsi3_8-ashlsi3_table
 80	.byte		ashlsi3_9-ashlsi3_table
 81	.byte		ashlsi3_10-ashlsi3_table
 82	.byte		ashlsi3_11-ashlsi3_table
 83	.byte		ashlsi3_12-ashlsi3_table
 84	.byte		ashlsi3_13-ashlsi3_table
 85	.byte		ashlsi3_14-ashlsi3_table
 86	.byte		ashlsi3_15-ashlsi3_table
 87	.byte		ashlsi3_16-ashlsi3_table
 88	.byte		ashlsi3_17-ashlsi3_table
 89	.byte		ashlsi3_18-ashlsi3_table
 90	.byte		ashlsi3_19-ashlsi3_table
 91	.byte		ashlsi3_20-ashlsi3_table
 92	.byte		ashlsi3_21-ashlsi3_table
 93	.byte		ashlsi3_22-ashlsi3_table
 94	.byte		ashlsi3_23-ashlsi3_table
 95	.byte		ashlsi3_24-ashlsi3_table
 96	.byte		ashlsi3_25-ashlsi3_table
 97	.byte		ashlsi3_26-ashlsi3_table
 98	.byte		ashlsi3_27-ashlsi3_table
 99	.byte		ashlsi3_28-ashlsi3_table
100	.byte		ashlsi3_29-ashlsi3_table
101	.byte		ashlsi3_30-ashlsi3_table
102	.byte		ashlsi3_31-ashlsi3_table
103
104ashlsi3_6:
105	shll2	r0
106ashlsi3_4:
107	shll2	r0
108ashlsi3_2:
109	rts
110	shll2	r0
111
112ashlsi3_7:
113	shll2	r0
114ashlsi3_5:
115	shll2	r0
116ashlsi3_3:
117	shll2	r0
118ashlsi3_1:
119	rts
120	shll	r0
121
122ashlsi3_14:
123	shll2	r0
124ashlsi3_12:
125	shll2	r0
126ashlsi3_10:
127	shll2	r0
128ashlsi3_8:
129	rts
130	shll8	r0
131
132ashlsi3_15:
133	shll2	r0
134ashlsi3_13:
135	shll2	r0
136ashlsi3_11:
137	shll2	r0
138ashlsi3_9:
139	shll8	r0
140	rts
141	shll	r0
142
143ashlsi3_22:
144	shll2	r0
145ashlsi3_20:
146	shll2	r0
147ashlsi3_18:
148	shll2	r0
149ashlsi3_16:
150	rts
151	shll16	r0
152
153ashlsi3_23:
154	shll2	r0
155ashlsi3_21:
156	shll2	r0
157ashlsi3_19:
158	shll2	r0
159ashlsi3_17:
160	shll16	r0
161	rts
162	shll	r0
163
164ashlsi3_30:
165	shll2	r0
166ashlsi3_28:
167	shll2	r0
168ashlsi3_26:
169	shll2	r0
170ashlsi3_24:
171	shll16	r0
172	rts
173	shll8	r0
174
175ashlsi3_31:
176	shll2	r0
177ashlsi3_29:
178	shll2	r0
179ashlsi3_27:
180	shll2	r0
181ashlsi3_25:
182	shll16	r0
183	shll8	r0
184	rts
185	shll	r0
186
187ashlsi3_0:
188	rts
189	nop
v3.15
  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