xref: /rk3399_rockchip-uboot/arch/sh/lib/ashlsi3.S (revision 9b5b60a05cb8bba2d135439419b2030764e359bd)
1*72cedad2SMasahiro Yamada/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2*72cedad2SMasahiro Yamada   2004, 2005, 2006
3*72cedad2SMasahiro Yamada   Free Software Foundation, Inc.
4*72cedad2SMasahiro Yamada
5*72cedad2SMasahiro Yamada * SPDX-License-Identifier:	GPL-2.0+
6*72cedad2SMasahiro Yamada */
7*72cedad2SMasahiro Yamada
8*72cedad2SMasahiro Yamada!! libgcc routines for the Renesas / SuperH SH CPUs.
9*72cedad2SMasahiro Yamada!! Contributed by Steve Chamberlain.
10*72cedad2SMasahiro Yamada!! sac@cygnus.com
11*72cedad2SMasahiro Yamada
12*72cedad2SMasahiro Yamada!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
13*72cedad2SMasahiro Yamada!! recoded in assembly by Toshiyasu Morita
14*72cedad2SMasahiro Yamada!! tm@netcom.com
15*72cedad2SMasahiro Yamada
16*72cedad2SMasahiro Yamada/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
17*72cedad2SMasahiro Yamada   ELF local label prefixes by J"orn Rennecke
18*72cedad2SMasahiro Yamada   amylaar@cygnus.com  */
19*72cedad2SMasahiro Yamada
20*72cedad2SMasahiro Yamada!
21*72cedad2SMasahiro Yamada! GLOBAL(ashlsi3)
22*72cedad2SMasahiro Yamada!
23*72cedad2SMasahiro Yamada! Entry:
24*72cedad2SMasahiro Yamada!
25*72cedad2SMasahiro Yamada! r4: Value to shift
26*72cedad2SMasahiro Yamada! r5: Shifts
27*72cedad2SMasahiro Yamada!
28*72cedad2SMasahiro Yamada! Exit:
29*72cedad2SMasahiro Yamada!
30*72cedad2SMasahiro Yamada! r0: Result
31*72cedad2SMasahiro Yamada!
32*72cedad2SMasahiro Yamada! Destroys:
33*72cedad2SMasahiro Yamada!
34*72cedad2SMasahiro Yamada! (none)
35*72cedad2SMasahiro Yamada!
36*72cedad2SMasahiro Yamada	.global	__ashlsi3
37*72cedad2SMasahiro Yamada	.align	2
38*72cedad2SMasahiro Yamada__ashlsi3:
39*72cedad2SMasahiro Yamada	mov	#31,r0
40*72cedad2SMasahiro Yamada	and	r0,r5
41*72cedad2SMasahiro Yamada	mova	__ashlsi3_table,r0
42*72cedad2SMasahiro Yamada	mov.b	@(r0,r5),r5
43*72cedad2SMasahiro Yamada#ifdef __sh1__
44*72cedad2SMasahiro Yamada	add	r5,r0
45*72cedad2SMasahiro Yamada	jmp	@r0
46*72cedad2SMasahiro Yamada#else
47*72cedad2SMasahiro Yamada	braf	r5
48*72cedad2SMasahiro Yamada#endif
49*72cedad2SMasahiro Yamada	mov	r4,r0
50*72cedad2SMasahiro Yamada
51*72cedad2SMasahiro Yamada	.align	2
52*72cedad2SMasahiro Yamada__ashlsi3_table:
53*72cedad2SMasahiro Yamada	.byte		__ashlsi3_0-__ashlsi3_table
54*72cedad2SMasahiro Yamada	.byte		__ashlsi3_1-__ashlsi3_table
55*72cedad2SMasahiro Yamada	.byte		__ashlsi3_2-__ashlsi3_table
56*72cedad2SMasahiro Yamada	.byte		__ashlsi3_3-__ashlsi3_table
57*72cedad2SMasahiro Yamada	.byte		__ashlsi3_4-__ashlsi3_table
58*72cedad2SMasahiro Yamada	.byte		__ashlsi3_5-__ashlsi3_table
59*72cedad2SMasahiro Yamada	.byte		__ashlsi3_6-__ashlsi3_table
60*72cedad2SMasahiro Yamada	.byte		__ashlsi3_7-__ashlsi3_table
61*72cedad2SMasahiro Yamada	.byte		__ashlsi3_8-__ashlsi3_table
62*72cedad2SMasahiro Yamada	.byte		__ashlsi3_9-__ashlsi3_table
63*72cedad2SMasahiro Yamada	.byte		__ashlsi3_10-__ashlsi3_table
64*72cedad2SMasahiro Yamada	.byte		__ashlsi3_11-__ashlsi3_table
65*72cedad2SMasahiro Yamada	.byte		__ashlsi3_12-__ashlsi3_table
66*72cedad2SMasahiro Yamada	.byte		__ashlsi3_13-__ashlsi3_table
67*72cedad2SMasahiro Yamada	.byte		__ashlsi3_14-__ashlsi3_table
68*72cedad2SMasahiro Yamada	.byte		__ashlsi3_15-__ashlsi3_table
69*72cedad2SMasahiro Yamada	.byte		__ashlsi3_16-__ashlsi3_table
70*72cedad2SMasahiro Yamada	.byte		__ashlsi3_17-__ashlsi3_table
71*72cedad2SMasahiro Yamada	.byte		__ashlsi3_18-__ashlsi3_table
72*72cedad2SMasahiro Yamada	.byte		__ashlsi3_19-__ashlsi3_table
73*72cedad2SMasahiro Yamada	.byte		__ashlsi3_20-__ashlsi3_table
74*72cedad2SMasahiro Yamada	.byte		__ashlsi3_21-__ashlsi3_table
75*72cedad2SMasahiro Yamada	.byte		__ashlsi3_22-__ashlsi3_table
76*72cedad2SMasahiro Yamada	.byte		__ashlsi3_23-__ashlsi3_table
77*72cedad2SMasahiro Yamada	.byte		__ashlsi3_24-__ashlsi3_table
78*72cedad2SMasahiro Yamada	.byte		__ashlsi3_25-__ashlsi3_table
79*72cedad2SMasahiro Yamada	.byte		__ashlsi3_26-__ashlsi3_table
80*72cedad2SMasahiro Yamada	.byte		__ashlsi3_27-__ashlsi3_table
81*72cedad2SMasahiro Yamada	.byte		__ashlsi3_28-__ashlsi3_table
82*72cedad2SMasahiro Yamada	.byte		__ashlsi3_29-__ashlsi3_table
83*72cedad2SMasahiro Yamada	.byte		__ashlsi3_30-__ashlsi3_table
84*72cedad2SMasahiro Yamada	.byte		__ashlsi3_31-__ashlsi3_table
85*72cedad2SMasahiro Yamada
86*72cedad2SMasahiro Yamada__ashlsi3_6:
87*72cedad2SMasahiro Yamada	shll2	r0
88*72cedad2SMasahiro Yamada__ashlsi3_4:
89*72cedad2SMasahiro Yamada	shll2	r0
90*72cedad2SMasahiro Yamada__ashlsi3_2:
91*72cedad2SMasahiro Yamada	rts
92*72cedad2SMasahiro Yamada	shll2	r0
93*72cedad2SMasahiro Yamada
94*72cedad2SMasahiro Yamada__ashlsi3_7:
95*72cedad2SMasahiro Yamada	shll2	r0
96*72cedad2SMasahiro Yamada__ashlsi3_5:
97*72cedad2SMasahiro Yamada	shll2	r0
98*72cedad2SMasahiro Yamada__ashlsi3_3:
99*72cedad2SMasahiro Yamada	shll2	r0
100*72cedad2SMasahiro Yamada__ashlsi3_1:
101*72cedad2SMasahiro Yamada	rts
102*72cedad2SMasahiro Yamada	shll	r0
103*72cedad2SMasahiro Yamada
104*72cedad2SMasahiro Yamada__ashlsi3_14:
105*72cedad2SMasahiro Yamada	shll2	r0
106*72cedad2SMasahiro Yamada__ashlsi3_12:
107*72cedad2SMasahiro Yamada	shll2	r0
108*72cedad2SMasahiro Yamada__ashlsi3_10:
109*72cedad2SMasahiro Yamada	shll2	r0
110*72cedad2SMasahiro Yamada__ashlsi3_8:
111*72cedad2SMasahiro Yamada	rts
112*72cedad2SMasahiro Yamada	shll8	r0
113*72cedad2SMasahiro Yamada
114*72cedad2SMasahiro Yamada__ashlsi3_15:
115*72cedad2SMasahiro Yamada	shll2	r0
116*72cedad2SMasahiro Yamada__ashlsi3_13:
117*72cedad2SMasahiro Yamada	shll2	r0
118*72cedad2SMasahiro Yamada__ashlsi3_11:
119*72cedad2SMasahiro Yamada	shll2	r0
120*72cedad2SMasahiro Yamada__ashlsi3_9:
121*72cedad2SMasahiro Yamada	shll8	r0
122*72cedad2SMasahiro Yamada	rts
123*72cedad2SMasahiro Yamada	shll	r0
124*72cedad2SMasahiro Yamada
125*72cedad2SMasahiro Yamada__ashlsi3_22:
126*72cedad2SMasahiro Yamada	shll2	r0
127*72cedad2SMasahiro Yamada__ashlsi3_20:
128*72cedad2SMasahiro Yamada	shll2	r0
129*72cedad2SMasahiro Yamada__ashlsi3_18:
130*72cedad2SMasahiro Yamada	shll2	r0
131*72cedad2SMasahiro Yamada__ashlsi3_16:
132*72cedad2SMasahiro Yamada	rts
133*72cedad2SMasahiro Yamada	shll16	r0
134*72cedad2SMasahiro Yamada
135*72cedad2SMasahiro Yamada__ashlsi3_23:
136*72cedad2SMasahiro Yamada	shll2	r0
137*72cedad2SMasahiro Yamada__ashlsi3_21:
138*72cedad2SMasahiro Yamada	shll2	r0
139*72cedad2SMasahiro Yamada__ashlsi3_19:
140*72cedad2SMasahiro Yamada	shll2	r0
141*72cedad2SMasahiro Yamada__ashlsi3_17:
142*72cedad2SMasahiro Yamada	shll16	r0
143*72cedad2SMasahiro Yamada	rts
144*72cedad2SMasahiro Yamada	shll	r0
145*72cedad2SMasahiro Yamada
146*72cedad2SMasahiro Yamada__ashlsi3_30:
147*72cedad2SMasahiro Yamada	shll2	r0
148*72cedad2SMasahiro Yamada__ashlsi3_28:
149*72cedad2SMasahiro Yamada	shll2	r0
150*72cedad2SMasahiro Yamada__ashlsi3_26:
151*72cedad2SMasahiro Yamada	shll2	r0
152*72cedad2SMasahiro Yamada__ashlsi3_24:
153*72cedad2SMasahiro Yamada	shll16	r0
154*72cedad2SMasahiro Yamada	rts
155*72cedad2SMasahiro Yamada	shll8	r0
156*72cedad2SMasahiro Yamada
157*72cedad2SMasahiro Yamada__ashlsi3_31:
158*72cedad2SMasahiro Yamada	shll2	r0
159*72cedad2SMasahiro Yamada__ashlsi3_29:
160*72cedad2SMasahiro Yamada	shll2	r0
161*72cedad2SMasahiro Yamada__ashlsi3_27:
162*72cedad2SMasahiro Yamada	shll2	r0
163*72cedad2SMasahiro Yamada__ashlsi3_25:
164*72cedad2SMasahiro Yamada	shll16	r0
165*72cedad2SMasahiro Yamada	shll8	r0
166*72cedad2SMasahiro Yamada	rts
167*72cedad2SMasahiro Yamada	shll	r0
168*72cedad2SMasahiro Yamada
169*72cedad2SMasahiro Yamada__ashlsi3_0:
170*72cedad2SMasahiro Yamada	rts
171*72cedad2SMasahiro Yamada	nop
172