xref: /openbmc/linux/arch/sh/lib/lshrsi3.S (revision 1aad54a9)
11aad54a9SPaul Mundt/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
21aad54a9SPaul Mundt   2004, 2005, 2006
31aad54a9SPaul Mundt   Free Software Foundation, Inc.
41aad54a9SPaul Mundt
51aad54a9SPaul MundtThis file is free software; you can redistribute it and/or modify it
61aad54a9SPaul Mundtunder the terms of the GNU General Public License as published by the
71aad54a9SPaul MundtFree Software Foundation; either version 2, or (at your option) any
81aad54a9SPaul Mundtlater version.
91aad54a9SPaul Mundt
101aad54a9SPaul MundtIn addition to the permissions in the GNU General Public License, the
111aad54a9SPaul MundtFree Software Foundation gives you unlimited permission to link the
121aad54a9SPaul Mundtcompiled version of this file into combinations with other programs,
131aad54a9SPaul Mundtand to distribute those combinations without any restriction coming
141aad54a9SPaul Mundtfrom the use of this file.  (The General Public License restrictions
151aad54a9SPaul Mundtdo apply in other respects; for example, they cover modification of
161aad54a9SPaul Mundtthe file, and distribution when not linked into a combine
171aad54a9SPaul Mundtexecutable.)
181aad54a9SPaul Mundt
191aad54a9SPaul MundtThis file is distributed in the hope that it will be useful, but
201aad54a9SPaul MundtWITHOUT ANY WARRANTY; without even the implied warranty of
211aad54a9SPaul MundtMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
221aad54a9SPaul MundtGeneral Public License for more details.
231aad54a9SPaul Mundt
241aad54a9SPaul MundtYou should have received a copy of the GNU General Public License
251aad54a9SPaul Mundtalong with this program; see the file COPYING.  If not, write to
261aad54a9SPaul Mundtthe Free Software Foundation, 51 Franklin Street, Fifth Floor,
271aad54a9SPaul MundtBoston, MA 02110-1301, USA.  */
281aad54a9SPaul Mundt
291aad54a9SPaul Mundt!! libgcc routines for the Renesas / SuperH SH CPUs.
301aad54a9SPaul Mundt!! Contributed by Steve Chamberlain.
311aad54a9SPaul Mundt!! sac@cygnus.com
321aad54a9SPaul Mundt
331aad54a9SPaul Mundt!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
341aad54a9SPaul Mundt!! recoded in assembly by Toshiyasu Morita
351aad54a9SPaul Mundt!! tm@netcom.com
361aad54a9SPaul Mundt
371aad54a9SPaul Mundt/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
381aad54a9SPaul Mundt   ELF local label prefixes by J"orn Rennecke
391aad54a9SPaul Mundt   amylaar@cygnus.com  */
401aad54a9SPaul Mundt
411aad54a9SPaul Mundt!
421aad54a9SPaul Mundt! __lshrsi3
431aad54a9SPaul Mundt!
441aad54a9SPaul Mundt! Entry:
451aad54a9SPaul Mundt!
461aad54a9SPaul Mundt! r4: Value to shift
471aad54a9SPaul Mundt! r5: Shifts
481aad54a9SPaul Mundt!
491aad54a9SPaul Mundt! Exit:
501aad54a9SPaul Mundt!
511aad54a9SPaul Mundt! r0: Result
521aad54a9SPaul Mundt!
531aad54a9SPaul Mundt! Destroys:
541aad54a9SPaul Mundt!
551aad54a9SPaul Mundt! (none)
561aad54a9SPaul Mundt!
571aad54a9SPaul Mundt	.global	__lshrsi3
581aad54a9SPaul Mundt
591aad54a9SPaul Mundt	.align	2
601aad54a9SPaul Mundt__lshrsi3:
611aad54a9SPaul Mundt	mov	#31,r0
621aad54a9SPaul Mundt	and	r0,r5
631aad54a9SPaul Mundt	mova	lshrsi3_table,r0
641aad54a9SPaul Mundt	mov.b	@(r0,r5),r5
651aad54a9SPaul Mundt#ifdef __sh1__
661aad54a9SPaul Mundt	add	r5,r0
671aad54a9SPaul Mundt	jmp	@r0
681aad54a9SPaul Mundt#else
691aad54a9SPaul Mundt	braf	r5
701aad54a9SPaul Mundt#endif
711aad54a9SPaul Mundt	mov	r4,r0
721aad54a9SPaul Mundt
731aad54a9SPaul Mundt	.align	2
741aad54a9SPaul Mundtlshrsi3_table:
751aad54a9SPaul Mundt	.byte		lshrsi3_0-lshrsi3_table
761aad54a9SPaul Mundt	.byte		lshrsi3_1-lshrsi3_table
771aad54a9SPaul Mundt	.byte		lshrsi3_2-lshrsi3_table
781aad54a9SPaul Mundt	.byte		lshrsi3_3-lshrsi3_table
791aad54a9SPaul Mundt	.byte		lshrsi3_4-lshrsi3_table
801aad54a9SPaul Mundt	.byte		lshrsi3_5-lshrsi3_table
811aad54a9SPaul Mundt	.byte		lshrsi3_6-lshrsi3_table
821aad54a9SPaul Mundt	.byte		lshrsi3_7-lshrsi3_table
831aad54a9SPaul Mundt	.byte		lshrsi3_8-lshrsi3_table
841aad54a9SPaul Mundt	.byte		lshrsi3_9-lshrsi3_table
851aad54a9SPaul Mundt	.byte		lshrsi3_10-lshrsi3_table
861aad54a9SPaul Mundt	.byte		lshrsi3_11-lshrsi3_table
871aad54a9SPaul Mundt	.byte		lshrsi3_12-lshrsi3_table
881aad54a9SPaul Mundt	.byte		lshrsi3_13-lshrsi3_table
891aad54a9SPaul Mundt	.byte		lshrsi3_14-lshrsi3_table
901aad54a9SPaul Mundt	.byte		lshrsi3_15-lshrsi3_table
911aad54a9SPaul Mundt	.byte		lshrsi3_16-lshrsi3_table
921aad54a9SPaul Mundt	.byte		lshrsi3_17-lshrsi3_table
931aad54a9SPaul Mundt	.byte		lshrsi3_18-lshrsi3_table
941aad54a9SPaul Mundt	.byte		lshrsi3_19-lshrsi3_table
951aad54a9SPaul Mundt	.byte		lshrsi3_20-lshrsi3_table
961aad54a9SPaul Mundt	.byte		lshrsi3_21-lshrsi3_table
971aad54a9SPaul Mundt	.byte		lshrsi3_22-lshrsi3_table
981aad54a9SPaul Mundt	.byte		lshrsi3_23-lshrsi3_table
991aad54a9SPaul Mundt	.byte		lshrsi3_24-lshrsi3_table
1001aad54a9SPaul Mundt	.byte		lshrsi3_25-lshrsi3_table
1011aad54a9SPaul Mundt	.byte		lshrsi3_26-lshrsi3_table
1021aad54a9SPaul Mundt	.byte		lshrsi3_27-lshrsi3_table
1031aad54a9SPaul Mundt	.byte		lshrsi3_28-lshrsi3_table
1041aad54a9SPaul Mundt	.byte		lshrsi3_29-lshrsi3_table
1051aad54a9SPaul Mundt	.byte		lshrsi3_30-lshrsi3_table
1061aad54a9SPaul Mundt	.byte		lshrsi3_31-lshrsi3_table
1071aad54a9SPaul Mundt
1081aad54a9SPaul Mundtlshrsi3_6:
1091aad54a9SPaul Mundt	shlr2	r0
1101aad54a9SPaul Mundtlshrsi3_4:
1111aad54a9SPaul Mundt	shlr2	r0
1121aad54a9SPaul Mundtlshrsi3_2:
1131aad54a9SPaul Mundt	rts
1141aad54a9SPaul Mundt	shlr2	r0
1151aad54a9SPaul Mundt
1161aad54a9SPaul Mundtlshrsi3_7:
1171aad54a9SPaul Mundt	shlr2	r0
1181aad54a9SPaul Mundtlshrsi3_5:
1191aad54a9SPaul Mundt	shlr2	r0
1201aad54a9SPaul Mundtlshrsi3_3:
1211aad54a9SPaul Mundt	shlr2	r0
1221aad54a9SPaul Mundtlshrsi3_1:
1231aad54a9SPaul Mundt	rts
1241aad54a9SPaul Mundt	shlr	r0
1251aad54a9SPaul Mundt
1261aad54a9SPaul Mundtlshrsi3_14:
1271aad54a9SPaul Mundt	shlr2	r0
1281aad54a9SPaul Mundtlshrsi3_12:
1291aad54a9SPaul Mundt	shlr2	r0
1301aad54a9SPaul Mundtlshrsi3_10:
1311aad54a9SPaul Mundt	shlr2	r0
1321aad54a9SPaul Mundtlshrsi3_8:
1331aad54a9SPaul Mundt	rts
1341aad54a9SPaul Mundt	shlr8	r0
1351aad54a9SPaul Mundt
1361aad54a9SPaul Mundtlshrsi3_15:
1371aad54a9SPaul Mundt	shlr2	r0
1381aad54a9SPaul Mundtlshrsi3_13:
1391aad54a9SPaul Mundt	shlr2	r0
1401aad54a9SPaul Mundtlshrsi3_11:
1411aad54a9SPaul Mundt	shlr2	r0
1421aad54a9SPaul Mundtlshrsi3_9:
1431aad54a9SPaul Mundt	shlr8	r0
1441aad54a9SPaul Mundt	rts
1451aad54a9SPaul Mundt	shlr	r0
1461aad54a9SPaul Mundt
1471aad54a9SPaul Mundtlshrsi3_22:
1481aad54a9SPaul Mundt	shlr2	r0
1491aad54a9SPaul Mundtlshrsi3_20:
1501aad54a9SPaul Mundt	shlr2	r0
1511aad54a9SPaul Mundtlshrsi3_18:
1521aad54a9SPaul Mundt	shlr2	r0
1531aad54a9SPaul Mundtlshrsi3_16:
1541aad54a9SPaul Mundt	rts
1551aad54a9SPaul Mundt	shlr16	r0
1561aad54a9SPaul Mundt
1571aad54a9SPaul Mundtlshrsi3_23:
1581aad54a9SPaul Mundt	shlr2	r0
1591aad54a9SPaul Mundtlshrsi3_21:
1601aad54a9SPaul Mundt	shlr2	r0
1611aad54a9SPaul Mundtlshrsi3_19:
1621aad54a9SPaul Mundt	shlr2	r0
1631aad54a9SPaul Mundtlshrsi3_17:
1641aad54a9SPaul Mundt	shlr16	r0
1651aad54a9SPaul Mundt	rts
1661aad54a9SPaul Mundt	shlr	r0
1671aad54a9SPaul Mundt
1681aad54a9SPaul Mundtlshrsi3_30:
1691aad54a9SPaul Mundt	shlr2	r0
1701aad54a9SPaul Mundtlshrsi3_28:
1711aad54a9SPaul Mundt	shlr2	r0
1721aad54a9SPaul Mundtlshrsi3_26:
1731aad54a9SPaul Mundt	shlr2	r0
1741aad54a9SPaul Mundtlshrsi3_24:
1751aad54a9SPaul Mundt	shlr16	r0
1761aad54a9SPaul Mundt	rts
1771aad54a9SPaul Mundt	shlr8	r0
1781aad54a9SPaul Mundt
1791aad54a9SPaul Mundtlshrsi3_31:
1801aad54a9SPaul Mundt	shlr2	r0
1811aad54a9SPaul Mundtlshrsi3_29:
1821aad54a9SPaul Mundt	shlr2	r0
1831aad54a9SPaul Mundtlshrsi3_27:
1841aad54a9SPaul Mundt	shlr2	r0
1851aad54a9SPaul Mundtlshrsi3_25:
1861aad54a9SPaul Mundt	shlr16	r0
1871aad54a9SPaul Mundt	shlr8	r0
1881aad54a9SPaul Mundt	rts
1891aad54a9SPaul Mundt	shlr	r0
1901aad54a9SPaul Mundt
1911aad54a9SPaul Mundtlshrsi3_0:
1921aad54a9SPaul Mundt	rts
1931aad54a9SPaul Mundt	nop
194