xref: /openbmc/linux/arch/sh/lib/lshrsi3.S (revision 4494ce4f)
14494ce4fSKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
24494ce4fSKuninori Morimoto
34494ce4fSKuninori Morimoto   Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
41aad54a9SPaul Mundt   2004, 2005, 2006
51aad54a9SPaul Mundt   Free Software Foundation, Inc.
64494ce4fSKuninori Morimoto*/
71aad54a9SPaul Mundt
81aad54a9SPaul Mundt!! libgcc routines for the Renesas / SuperH SH CPUs.
91aad54a9SPaul Mundt!! Contributed by Steve Chamberlain.
101aad54a9SPaul Mundt!! sac@cygnus.com
111aad54a9SPaul Mundt
121aad54a9SPaul Mundt!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
131aad54a9SPaul Mundt!! recoded in assembly by Toshiyasu Morita
141aad54a9SPaul Mundt!! tm@netcom.com
151aad54a9SPaul Mundt
161aad54a9SPaul Mundt/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
171aad54a9SPaul Mundt   ELF local label prefixes by J"orn Rennecke
181aad54a9SPaul Mundt   amylaar@cygnus.com  */
191aad54a9SPaul Mundt
201aad54a9SPaul Mundt!
211aad54a9SPaul Mundt! __lshrsi3
221aad54a9SPaul Mundt!
231aad54a9SPaul Mundt! Entry:
241aad54a9SPaul Mundt!
251aad54a9SPaul Mundt! r4: Value to shift
261aad54a9SPaul Mundt! r5: Shifts
271aad54a9SPaul Mundt!
281aad54a9SPaul Mundt! Exit:
291aad54a9SPaul Mundt!
301aad54a9SPaul Mundt! r0: Result
311aad54a9SPaul Mundt!
321aad54a9SPaul Mundt! Destroys:
331aad54a9SPaul Mundt!
341aad54a9SPaul Mundt! (none)
351aad54a9SPaul Mundt!
36940d4113SYoshinori Sato! __lshrsi3_r0
37940d4113SYoshinori Sato!
38940d4113SYoshinori Sato! Entry:
39940d4113SYoshinori Sato!
40940d4113SYoshinori Sato! r0: Value to shift
41940d4113SYoshinori Sato! r5: Shifts
42940d4113SYoshinori Sato!
43940d4113SYoshinori Sato! Exit:
44940d4113SYoshinori Sato!
45940d4113SYoshinori Sato! r0: Result
46940d4113SYoshinori Sato!
47940d4113SYoshinori Sato! Destroys:
48940d4113SYoshinori Sato!
49940d4113SYoshinori Sato! (none)
50940d4113SYoshinori Sato!
511aad54a9SPaul Mundt	.global	__lshrsi3
52940d4113SYoshinori Sato	.global	__lshrsi3_r0
531aad54a9SPaul Mundt
541aad54a9SPaul Mundt	.align	2
551aad54a9SPaul Mundt__lshrsi3:
56940d4113SYoshinori Sato	mov	r5,r0
57940d4113SYoshinori Sato	.align	2
58940d4113SYoshinori Sato__lshrsi3_r0:
59940d4113SYoshinori Sato	and	#31,r0
60940d4113SYoshinori Sato	mov.l	r4,@-r15
61940d4113SYoshinori Sato	mov	r0,r4
621aad54a9SPaul Mundt	mova	lshrsi3_table,r0
63940d4113SYoshinori Sato	mov.b	@(r0,r4),r4
64940d4113SYoshinori Sato	add	r4,r0
651aad54a9SPaul Mundt	jmp	@r0
66940d4113SYoshinori Sato	mov.l	@r15+,r0
671aad54a9SPaul Mundt
681aad54a9SPaul Mundt	.align	2
691aad54a9SPaul Mundtlshrsi3_table:
701aad54a9SPaul Mundt	.byte		lshrsi3_0-lshrsi3_table
711aad54a9SPaul Mundt	.byte		lshrsi3_1-lshrsi3_table
721aad54a9SPaul Mundt	.byte		lshrsi3_2-lshrsi3_table
731aad54a9SPaul Mundt	.byte		lshrsi3_3-lshrsi3_table
741aad54a9SPaul Mundt	.byte		lshrsi3_4-lshrsi3_table
751aad54a9SPaul Mundt	.byte		lshrsi3_5-lshrsi3_table
761aad54a9SPaul Mundt	.byte		lshrsi3_6-lshrsi3_table
771aad54a9SPaul Mundt	.byte		lshrsi3_7-lshrsi3_table
781aad54a9SPaul Mundt	.byte		lshrsi3_8-lshrsi3_table
791aad54a9SPaul Mundt	.byte		lshrsi3_9-lshrsi3_table
801aad54a9SPaul Mundt	.byte		lshrsi3_10-lshrsi3_table
811aad54a9SPaul Mundt	.byte		lshrsi3_11-lshrsi3_table
821aad54a9SPaul Mundt	.byte		lshrsi3_12-lshrsi3_table
831aad54a9SPaul Mundt	.byte		lshrsi3_13-lshrsi3_table
841aad54a9SPaul Mundt	.byte		lshrsi3_14-lshrsi3_table
851aad54a9SPaul Mundt	.byte		lshrsi3_15-lshrsi3_table
861aad54a9SPaul Mundt	.byte		lshrsi3_16-lshrsi3_table
871aad54a9SPaul Mundt	.byte		lshrsi3_17-lshrsi3_table
881aad54a9SPaul Mundt	.byte		lshrsi3_18-lshrsi3_table
891aad54a9SPaul Mundt	.byte		lshrsi3_19-lshrsi3_table
901aad54a9SPaul Mundt	.byte		lshrsi3_20-lshrsi3_table
911aad54a9SPaul Mundt	.byte		lshrsi3_21-lshrsi3_table
921aad54a9SPaul Mundt	.byte		lshrsi3_22-lshrsi3_table
931aad54a9SPaul Mundt	.byte		lshrsi3_23-lshrsi3_table
941aad54a9SPaul Mundt	.byte		lshrsi3_24-lshrsi3_table
951aad54a9SPaul Mundt	.byte		lshrsi3_25-lshrsi3_table
961aad54a9SPaul Mundt	.byte		lshrsi3_26-lshrsi3_table
971aad54a9SPaul Mundt	.byte		lshrsi3_27-lshrsi3_table
981aad54a9SPaul Mundt	.byte		lshrsi3_28-lshrsi3_table
991aad54a9SPaul Mundt	.byte		lshrsi3_29-lshrsi3_table
1001aad54a9SPaul Mundt	.byte		lshrsi3_30-lshrsi3_table
1011aad54a9SPaul Mundt	.byte		lshrsi3_31-lshrsi3_table
1021aad54a9SPaul Mundt
1031aad54a9SPaul Mundtlshrsi3_6:
1041aad54a9SPaul Mundt	shlr2	r0
1051aad54a9SPaul Mundtlshrsi3_4:
1061aad54a9SPaul Mundt	shlr2	r0
1071aad54a9SPaul Mundtlshrsi3_2:
1081aad54a9SPaul Mundt	rts
1091aad54a9SPaul Mundt	shlr2	r0
1101aad54a9SPaul Mundt
1111aad54a9SPaul Mundtlshrsi3_7:
1121aad54a9SPaul Mundt	shlr2	r0
1131aad54a9SPaul Mundtlshrsi3_5:
1141aad54a9SPaul Mundt	shlr2	r0
1151aad54a9SPaul Mundtlshrsi3_3:
1161aad54a9SPaul Mundt	shlr2	r0
1171aad54a9SPaul Mundtlshrsi3_1:
1181aad54a9SPaul Mundt	rts
1191aad54a9SPaul Mundt	shlr	r0
1201aad54a9SPaul Mundt
1211aad54a9SPaul Mundtlshrsi3_14:
1221aad54a9SPaul Mundt	shlr2	r0
1231aad54a9SPaul Mundtlshrsi3_12:
1241aad54a9SPaul Mundt	shlr2	r0
1251aad54a9SPaul Mundtlshrsi3_10:
1261aad54a9SPaul Mundt	shlr2	r0
1271aad54a9SPaul Mundtlshrsi3_8:
1281aad54a9SPaul Mundt	rts
1291aad54a9SPaul Mundt	shlr8	r0
1301aad54a9SPaul Mundt
1311aad54a9SPaul Mundtlshrsi3_15:
1321aad54a9SPaul Mundt	shlr2	r0
1331aad54a9SPaul Mundtlshrsi3_13:
1341aad54a9SPaul Mundt	shlr2	r0
1351aad54a9SPaul Mundtlshrsi3_11:
1361aad54a9SPaul Mundt	shlr2	r0
1371aad54a9SPaul Mundtlshrsi3_9:
1381aad54a9SPaul Mundt	shlr8	r0
1391aad54a9SPaul Mundt	rts
1401aad54a9SPaul Mundt	shlr	r0
1411aad54a9SPaul Mundt
1421aad54a9SPaul Mundtlshrsi3_22:
1431aad54a9SPaul Mundt	shlr2	r0
1441aad54a9SPaul Mundtlshrsi3_20:
1451aad54a9SPaul Mundt	shlr2	r0
1461aad54a9SPaul Mundtlshrsi3_18:
1471aad54a9SPaul Mundt	shlr2	r0
1481aad54a9SPaul Mundtlshrsi3_16:
1491aad54a9SPaul Mundt	rts
1501aad54a9SPaul Mundt	shlr16	r0
1511aad54a9SPaul Mundt
1521aad54a9SPaul Mundtlshrsi3_23:
1531aad54a9SPaul Mundt	shlr2	r0
1541aad54a9SPaul Mundtlshrsi3_21:
1551aad54a9SPaul Mundt	shlr2	r0
1561aad54a9SPaul Mundtlshrsi3_19:
1571aad54a9SPaul Mundt	shlr2	r0
1581aad54a9SPaul Mundtlshrsi3_17:
1591aad54a9SPaul Mundt	shlr16	r0
1601aad54a9SPaul Mundt	rts
1611aad54a9SPaul Mundt	shlr	r0
1621aad54a9SPaul Mundt
1631aad54a9SPaul Mundtlshrsi3_30:
1641aad54a9SPaul Mundt	shlr2	r0
1651aad54a9SPaul Mundtlshrsi3_28:
1661aad54a9SPaul Mundt	shlr2	r0
1671aad54a9SPaul Mundtlshrsi3_26:
1681aad54a9SPaul Mundt	shlr2	r0
1691aad54a9SPaul Mundtlshrsi3_24:
1701aad54a9SPaul Mundt	shlr16	r0
1711aad54a9SPaul Mundt	rts
1721aad54a9SPaul Mundt	shlr8	r0
1731aad54a9SPaul Mundt
1741aad54a9SPaul Mundtlshrsi3_31:
1751aad54a9SPaul Mundt	shlr2	r0
1761aad54a9SPaul Mundtlshrsi3_29:
1771aad54a9SPaul Mundt	shlr2	r0
1781aad54a9SPaul Mundtlshrsi3_27:
1791aad54a9SPaul Mundt	shlr2	r0
1801aad54a9SPaul Mundtlshrsi3_25:
1811aad54a9SPaul Mundt	shlr16	r0
1821aad54a9SPaul Mundt	shlr8	r0
1831aad54a9SPaul Mundt	rts
1841aad54a9SPaul Mundt	shlr	r0
1851aad54a9SPaul Mundt
1861aad54a9SPaul Mundtlshrsi3_0:
1871aad54a9SPaul Mundt	rts
1881aad54a9SPaul Mundt	nop
189