xref: /linux/arch/sh/lib/ashlsi3.S (revision 597473720f4dc69749542bfcfed4a927a43d935e)
1*4494ce4fSKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
2*4494ce4fSKuninori Morimoto
3*4494ce4fSKuninori Morimoto   Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
41aad54a9SPaul Mundt   2004, 2005, 2006
51aad54a9SPaul Mundt   Free Software Foundation, Inc.
6*4494ce4fSKuninori 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! __ashlsi3
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! __ashlsi3_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)
50940d4113SYoshinori Sato
51940d4113SYoshinori Sato
521aad54a9SPaul Mundt	.global	__ashlsi3
53940d4113SYoshinori Sato	.global	__ashlsi3_r0
541aad54a9SPaul Mundt
551aad54a9SPaul Mundt	.align	2
561aad54a9SPaul Mundt__ashlsi3:
57940d4113SYoshinori Sato	mov	r5,r0
58940d4113SYoshinori Sato	.align	2
59940d4113SYoshinori Sato__ashlsi3_r0:
60940d4113SYoshinori Sato	and	#31,r0
61940d4113SYoshinori Sato	mov.l	r4,@-r15
62940d4113SYoshinori Sato	mov	r0,r4
631aad54a9SPaul Mundt	mova	ashlsi3_table,r0
64940d4113SYoshinori Sato	mov.b	@(r0,r4),r4
65940d4113SYoshinori Sato	add	r4,r0
661aad54a9SPaul Mundt	jmp	@r0
67940d4113SYoshinori Sato	mov.l	@r15+,r0
681aad54a9SPaul Mundt
691aad54a9SPaul Mundt	.align	2
701aad54a9SPaul Mundtashlsi3_table:
711aad54a9SPaul Mundt	.byte		ashlsi3_0-ashlsi3_table
721aad54a9SPaul Mundt	.byte		ashlsi3_1-ashlsi3_table
731aad54a9SPaul Mundt	.byte		ashlsi3_2-ashlsi3_table
741aad54a9SPaul Mundt	.byte		ashlsi3_3-ashlsi3_table
751aad54a9SPaul Mundt	.byte		ashlsi3_4-ashlsi3_table
761aad54a9SPaul Mundt	.byte		ashlsi3_5-ashlsi3_table
771aad54a9SPaul Mundt	.byte		ashlsi3_6-ashlsi3_table
781aad54a9SPaul Mundt	.byte		ashlsi3_7-ashlsi3_table
791aad54a9SPaul Mundt	.byte		ashlsi3_8-ashlsi3_table
801aad54a9SPaul Mundt	.byte		ashlsi3_9-ashlsi3_table
811aad54a9SPaul Mundt	.byte		ashlsi3_10-ashlsi3_table
821aad54a9SPaul Mundt	.byte		ashlsi3_11-ashlsi3_table
831aad54a9SPaul Mundt	.byte		ashlsi3_12-ashlsi3_table
841aad54a9SPaul Mundt	.byte		ashlsi3_13-ashlsi3_table
851aad54a9SPaul Mundt	.byte		ashlsi3_14-ashlsi3_table
861aad54a9SPaul Mundt	.byte		ashlsi3_15-ashlsi3_table
871aad54a9SPaul Mundt	.byte		ashlsi3_16-ashlsi3_table
881aad54a9SPaul Mundt	.byte		ashlsi3_17-ashlsi3_table
891aad54a9SPaul Mundt	.byte		ashlsi3_18-ashlsi3_table
901aad54a9SPaul Mundt	.byte		ashlsi3_19-ashlsi3_table
911aad54a9SPaul Mundt	.byte		ashlsi3_20-ashlsi3_table
921aad54a9SPaul Mundt	.byte		ashlsi3_21-ashlsi3_table
931aad54a9SPaul Mundt	.byte		ashlsi3_22-ashlsi3_table
941aad54a9SPaul Mundt	.byte		ashlsi3_23-ashlsi3_table
951aad54a9SPaul Mundt	.byte		ashlsi3_24-ashlsi3_table
961aad54a9SPaul Mundt	.byte		ashlsi3_25-ashlsi3_table
971aad54a9SPaul Mundt	.byte		ashlsi3_26-ashlsi3_table
981aad54a9SPaul Mundt	.byte		ashlsi3_27-ashlsi3_table
991aad54a9SPaul Mundt	.byte		ashlsi3_28-ashlsi3_table
1001aad54a9SPaul Mundt	.byte		ashlsi3_29-ashlsi3_table
1011aad54a9SPaul Mundt	.byte		ashlsi3_30-ashlsi3_table
1021aad54a9SPaul Mundt	.byte		ashlsi3_31-ashlsi3_table
1031aad54a9SPaul Mundt
1041aad54a9SPaul Mundtashlsi3_6:
1051aad54a9SPaul Mundt	shll2	r0
1061aad54a9SPaul Mundtashlsi3_4:
1071aad54a9SPaul Mundt	shll2	r0
1081aad54a9SPaul Mundtashlsi3_2:
1091aad54a9SPaul Mundt	rts
1101aad54a9SPaul Mundt	shll2	r0
1111aad54a9SPaul Mundt
1121aad54a9SPaul Mundtashlsi3_7:
1131aad54a9SPaul Mundt	shll2	r0
1141aad54a9SPaul Mundtashlsi3_5:
1151aad54a9SPaul Mundt	shll2	r0
1161aad54a9SPaul Mundtashlsi3_3:
1171aad54a9SPaul Mundt	shll2	r0
1181aad54a9SPaul Mundtashlsi3_1:
1191aad54a9SPaul Mundt	rts
1201aad54a9SPaul Mundt	shll	r0
1211aad54a9SPaul Mundt
1221aad54a9SPaul Mundtashlsi3_14:
1231aad54a9SPaul Mundt	shll2	r0
1241aad54a9SPaul Mundtashlsi3_12:
1251aad54a9SPaul Mundt	shll2	r0
1261aad54a9SPaul Mundtashlsi3_10:
1271aad54a9SPaul Mundt	shll2	r0
1281aad54a9SPaul Mundtashlsi3_8:
1291aad54a9SPaul Mundt	rts
1301aad54a9SPaul Mundt	shll8	r0
1311aad54a9SPaul Mundt
1321aad54a9SPaul Mundtashlsi3_15:
1331aad54a9SPaul Mundt	shll2	r0
1341aad54a9SPaul Mundtashlsi3_13:
1351aad54a9SPaul Mundt	shll2	r0
1361aad54a9SPaul Mundtashlsi3_11:
1371aad54a9SPaul Mundt	shll2	r0
1381aad54a9SPaul Mundtashlsi3_9:
1391aad54a9SPaul Mundt	shll8	r0
1401aad54a9SPaul Mundt	rts
1411aad54a9SPaul Mundt	shll	r0
1421aad54a9SPaul Mundt
1431aad54a9SPaul Mundtashlsi3_22:
1441aad54a9SPaul Mundt	shll2	r0
1451aad54a9SPaul Mundtashlsi3_20:
1461aad54a9SPaul Mundt	shll2	r0
1471aad54a9SPaul Mundtashlsi3_18:
1481aad54a9SPaul Mundt	shll2	r0
1491aad54a9SPaul Mundtashlsi3_16:
1501aad54a9SPaul Mundt	rts
1511aad54a9SPaul Mundt	shll16	r0
1521aad54a9SPaul Mundt
1531aad54a9SPaul Mundtashlsi3_23:
1541aad54a9SPaul Mundt	shll2	r0
1551aad54a9SPaul Mundtashlsi3_21:
1561aad54a9SPaul Mundt	shll2	r0
1571aad54a9SPaul Mundtashlsi3_19:
1581aad54a9SPaul Mundt	shll2	r0
1591aad54a9SPaul Mundtashlsi3_17:
1601aad54a9SPaul Mundt	shll16	r0
1611aad54a9SPaul Mundt	rts
1621aad54a9SPaul Mundt	shll	r0
1631aad54a9SPaul Mundt
1641aad54a9SPaul Mundtashlsi3_30:
1651aad54a9SPaul Mundt	shll2	r0
1661aad54a9SPaul Mundtashlsi3_28:
1671aad54a9SPaul Mundt	shll2	r0
1681aad54a9SPaul Mundtashlsi3_26:
1691aad54a9SPaul Mundt	shll2	r0
1701aad54a9SPaul Mundtashlsi3_24:
1711aad54a9SPaul Mundt	shll16	r0
1721aad54a9SPaul Mundt	rts
1731aad54a9SPaul Mundt	shll8	r0
1741aad54a9SPaul Mundt
1751aad54a9SPaul Mundtashlsi3_31:
1761aad54a9SPaul Mundt	shll2	r0
1771aad54a9SPaul Mundtashlsi3_29:
1781aad54a9SPaul Mundt	shll2	r0
1791aad54a9SPaul Mundtashlsi3_27:
1801aad54a9SPaul Mundt	shll2	r0
1811aad54a9SPaul Mundtashlsi3_25:
1821aad54a9SPaul Mundt	shll16	r0
1831aad54a9SPaul Mundt	shll8	r0
1841aad54a9SPaul Mundt	rts
1851aad54a9SPaul Mundt	shll	r0
1861aad54a9SPaul Mundt
1871aad54a9SPaul Mundtashlsi3_0:
1881aad54a9SPaul Mundt	rts
1891aad54a9SPaul Mundt	nop
190