xref: /openbmc/linux/arch/sh/lib/ashrsi3.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! __ashrsi3
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! __ashrsi3_r0
37940d4113SYoshinori Sato!
38940d4113SYoshinori Sato! Entry:
39940d4113SYoshinori Sato!
40940d4113SYoshinori Sato! r4: Value to shift
41940d4113SYoshinori Sato! r0: Shifts
42940d4113SYoshinori Sato!
43940d4113SYoshinori Sato! Exit:
44940d4113SYoshinori Sato!
45940d4113SYoshinori Sato! r0: Result
46940d4113SYoshinori Sato!
47940d4113SYoshinori Sato! Destroys:
48940d4113SYoshinori Sato!
49940d4113SYoshinori Sato! (none)
501aad54a9SPaul Mundt
511aad54a9SPaul Mundt	.global	__ashrsi3
52940d4113SYoshinori Sato	.global	__ashrsi3_r0
531aad54a9SPaul Mundt
541aad54a9SPaul Mundt	.align	2
551aad54a9SPaul Mundt__ashrsi3:
56940d4113SYoshinori Sato	mov	r5,r0
57940d4113SYoshinori Sato	.align	2
58940d4113SYoshinori Sato__ashrsi3_r0:
59940d4113SYoshinori Sato	and	#31,r0
60940d4113SYoshinori Sato	mov.l	r4,@-r15
61940d4113SYoshinori Sato	mov	r0,r4
621aad54a9SPaul Mundt	mova	ashrsi3_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 Mundtashrsi3_table:
701aad54a9SPaul Mundt	.byte		ashrsi3_0-ashrsi3_table
711aad54a9SPaul Mundt	.byte		ashrsi3_1-ashrsi3_table
721aad54a9SPaul Mundt	.byte		ashrsi3_2-ashrsi3_table
731aad54a9SPaul Mundt	.byte		ashrsi3_3-ashrsi3_table
741aad54a9SPaul Mundt	.byte		ashrsi3_4-ashrsi3_table
751aad54a9SPaul Mundt	.byte		ashrsi3_5-ashrsi3_table
761aad54a9SPaul Mundt	.byte		ashrsi3_6-ashrsi3_table
771aad54a9SPaul Mundt	.byte		ashrsi3_7-ashrsi3_table
781aad54a9SPaul Mundt	.byte		ashrsi3_8-ashrsi3_table
791aad54a9SPaul Mundt	.byte		ashrsi3_9-ashrsi3_table
801aad54a9SPaul Mundt	.byte		ashrsi3_10-ashrsi3_table
811aad54a9SPaul Mundt	.byte		ashrsi3_11-ashrsi3_table
821aad54a9SPaul Mundt	.byte		ashrsi3_12-ashrsi3_table
831aad54a9SPaul Mundt	.byte		ashrsi3_13-ashrsi3_table
841aad54a9SPaul Mundt	.byte		ashrsi3_14-ashrsi3_table
851aad54a9SPaul Mundt	.byte		ashrsi3_15-ashrsi3_table
861aad54a9SPaul Mundt	.byte		ashrsi3_16-ashrsi3_table
871aad54a9SPaul Mundt	.byte		ashrsi3_17-ashrsi3_table
881aad54a9SPaul Mundt	.byte		ashrsi3_18-ashrsi3_table
891aad54a9SPaul Mundt	.byte		ashrsi3_19-ashrsi3_table
901aad54a9SPaul Mundt	.byte		ashrsi3_20-ashrsi3_table
911aad54a9SPaul Mundt	.byte		ashrsi3_21-ashrsi3_table
921aad54a9SPaul Mundt	.byte		ashrsi3_22-ashrsi3_table
931aad54a9SPaul Mundt	.byte		ashrsi3_23-ashrsi3_table
941aad54a9SPaul Mundt	.byte		ashrsi3_24-ashrsi3_table
951aad54a9SPaul Mundt	.byte		ashrsi3_25-ashrsi3_table
961aad54a9SPaul Mundt	.byte		ashrsi3_26-ashrsi3_table
971aad54a9SPaul Mundt	.byte		ashrsi3_27-ashrsi3_table
981aad54a9SPaul Mundt	.byte		ashrsi3_28-ashrsi3_table
991aad54a9SPaul Mundt	.byte		ashrsi3_29-ashrsi3_table
1001aad54a9SPaul Mundt	.byte		ashrsi3_30-ashrsi3_table
1011aad54a9SPaul Mundt	.byte		ashrsi3_31-ashrsi3_table
1021aad54a9SPaul Mundt
1031aad54a9SPaul Mundtashrsi3_31:
1041aad54a9SPaul Mundt	rotcl	r0
1051aad54a9SPaul Mundt	rts
1061aad54a9SPaul Mundt	subc	r0,r0
1071aad54a9SPaul Mundt
1081aad54a9SPaul Mundtashrsi3_30:
1091aad54a9SPaul Mundt	shar	r0
1101aad54a9SPaul Mundtashrsi3_29:
1111aad54a9SPaul Mundt	shar	r0
1121aad54a9SPaul Mundtashrsi3_28:
1131aad54a9SPaul Mundt	shar	r0
1141aad54a9SPaul Mundtashrsi3_27:
1151aad54a9SPaul Mundt	shar	r0
1161aad54a9SPaul Mundtashrsi3_26:
1171aad54a9SPaul Mundt	shar	r0
1181aad54a9SPaul Mundtashrsi3_25:
1191aad54a9SPaul Mundt	shar	r0
1201aad54a9SPaul Mundtashrsi3_24:
1211aad54a9SPaul Mundt	shlr16	r0
1221aad54a9SPaul Mundt	shlr8	r0
1231aad54a9SPaul Mundt	rts
1241aad54a9SPaul Mundt	exts.b	r0,r0
1251aad54a9SPaul Mundt
1261aad54a9SPaul Mundtashrsi3_23:
1271aad54a9SPaul Mundt	shar	r0
1281aad54a9SPaul Mundtashrsi3_22:
1291aad54a9SPaul Mundt	shar	r0
1301aad54a9SPaul Mundtashrsi3_21:
1311aad54a9SPaul Mundt	shar	r0
1321aad54a9SPaul Mundtashrsi3_20:
1331aad54a9SPaul Mundt	shar	r0
1341aad54a9SPaul Mundtashrsi3_19:
1351aad54a9SPaul Mundt	shar	r0
1361aad54a9SPaul Mundtashrsi3_18:
1371aad54a9SPaul Mundt	shar	r0
1381aad54a9SPaul Mundtashrsi3_17:
1391aad54a9SPaul Mundt	shar	r0
1401aad54a9SPaul Mundtashrsi3_16:
1411aad54a9SPaul Mundt	shlr16	r0
1421aad54a9SPaul Mundt	rts
1431aad54a9SPaul Mundt	exts.w	r0,r0
1441aad54a9SPaul Mundt
1451aad54a9SPaul Mundtashrsi3_15:
1461aad54a9SPaul Mundt	shar	r0
1471aad54a9SPaul Mundtashrsi3_14:
1481aad54a9SPaul Mundt	shar	r0
1491aad54a9SPaul Mundtashrsi3_13:
1501aad54a9SPaul Mundt	shar	r0
1511aad54a9SPaul Mundtashrsi3_12:
1521aad54a9SPaul Mundt	shar	r0
1531aad54a9SPaul Mundtashrsi3_11:
1541aad54a9SPaul Mundt	shar	r0
1551aad54a9SPaul Mundtashrsi3_10:
1561aad54a9SPaul Mundt	shar	r0
1571aad54a9SPaul Mundtashrsi3_9:
1581aad54a9SPaul Mundt	shar	r0
1591aad54a9SPaul Mundtashrsi3_8:
1601aad54a9SPaul Mundt	shar	r0
1611aad54a9SPaul Mundtashrsi3_7:
1621aad54a9SPaul Mundt	shar	r0
1631aad54a9SPaul Mundtashrsi3_6:
1641aad54a9SPaul Mundt	shar	r0
1651aad54a9SPaul Mundtashrsi3_5:
1661aad54a9SPaul Mundt	shar	r0
1671aad54a9SPaul Mundtashrsi3_4:
1681aad54a9SPaul Mundt	shar	r0
1691aad54a9SPaul Mundtashrsi3_3:
1701aad54a9SPaul Mundt	shar	r0
1711aad54a9SPaul Mundtashrsi3_2:
1721aad54a9SPaul Mundt	shar	r0
1731aad54a9SPaul Mundtashrsi3_1:
1741aad54a9SPaul Mundt	rts
1751aad54a9SPaul Mundt	shar	r0
1761aad54a9SPaul Mundt
1771aad54a9SPaul Mundtashrsi3_0:
1781aad54a9SPaul Mundt	rts
1791aad54a9SPaul Mundt	nop
180