xref: /rk3399_rockchip-uboot/arch/sh/lib/lshrsi3.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! __lshrsi3)
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	__lshrsi3
37*72cedad2SMasahiro Yamada	.align	2
38*72cedad2SMasahiro Yamada__lshrsi3:
39*72cedad2SMasahiro Yamada	mov	#31,r0
40*72cedad2SMasahiro Yamada	and	r0,r5
41*72cedad2SMasahiro Yamada	mova	__lshrsi3_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__lshrsi3_table:
53*72cedad2SMasahiro Yamada	.byte		__lshrsi3_0-__lshrsi3_table
54*72cedad2SMasahiro Yamada	.byte		__lshrsi3_1-__lshrsi3_table
55*72cedad2SMasahiro Yamada	.byte		__lshrsi3_2-__lshrsi3_table
56*72cedad2SMasahiro Yamada	.byte		__lshrsi3_3-__lshrsi3_table
57*72cedad2SMasahiro Yamada	.byte		__lshrsi3_4-__lshrsi3_table
58*72cedad2SMasahiro Yamada	.byte		__lshrsi3_5-__lshrsi3_table
59*72cedad2SMasahiro Yamada	.byte		__lshrsi3_6-__lshrsi3_table
60*72cedad2SMasahiro Yamada	.byte		__lshrsi3_7-__lshrsi3_table
61*72cedad2SMasahiro Yamada	.byte		__lshrsi3_8-__lshrsi3_table
62*72cedad2SMasahiro Yamada	.byte		__lshrsi3_9-__lshrsi3_table
63*72cedad2SMasahiro Yamada	.byte		__lshrsi3_10-__lshrsi3_table
64*72cedad2SMasahiro Yamada	.byte		__lshrsi3_11-__lshrsi3_table
65*72cedad2SMasahiro Yamada	.byte		__lshrsi3_12-__lshrsi3_table
66*72cedad2SMasahiro Yamada	.byte		__lshrsi3_13-__lshrsi3_table
67*72cedad2SMasahiro Yamada	.byte		__lshrsi3_14-__lshrsi3_table
68*72cedad2SMasahiro Yamada	.byte		__lshrsi3_15-__lshrsi3_table
69*72cedad2SMasahiro Yamada	.byte		__lshrsi3_16-__lshrsi3_table
70*72cedad2SMasahiro Yamada	.byte		__lshrsi3_17-__lshrsi3_table
71*72cedad2SMasahiro Yamada	.byte		__lshrsi3_18-__lshrsi3_table
72*72cedad2SMasahiro Yamada	.byte		__lshrsi3_19-__lshrsi3_table
73*72cedad2SMasahiro Yamada	.byte		__lshrsi3_20-__lshrsi3_table
74*72cedad2SMasahiro Yamada	.byte		__lshrsi3_21-__lshrsi3_table
75*72cedad2SMasahiro Yamada	.byte		__lshrsi3_22-__lshrsi3_table
76*72cedad2SMasahiro Yamada	.byte		__lshrsi3_23-__lshrsi3_table
77*72cedad2SMasahiro Yamada	.byte		__lshrsi3_24-__lshrsi3_table
78*72cedad2SMasahiro Yamada	.byte		__lshrsi3_25-__lshrsi3_table
79*72cedad2SMasahiro Yamada	.byte		__lshrsi3_26-__lshrsi3_table
80*72cedad2SMasahiro Yamada	.byte		__lshrsi3_27-__lshrsi3_table
81*72cedad2SMasahiro Yamada	.byte		__lshrsi3_28-__lshrsi3_table
82*72cedad2SMasahiro Yamada	.byte		__lshrsi3_29-__lshrsi3_table
83*72cedad2SMasahiro Yamada	.byte		__lshrsi3_30-__lshrsi3_table
84*72cedad2SMasahiro Yamada	.byte		__lshrsi3_31-__lshrsi3_table
85*72cedad2SMasahiro Yamada
86*72cedad2SMasahiro Yamada__lshrsi3_6:
87*72cedad2SMasahiro Yamada	shlr2	r0
88*72cedad2SMasahiro Yamada__lshrsi3_4:
89*72cedad2SMasahiro Yamada	shlr2	r0
90*72cedad2SMasahiro Yamada__lshrsi3_2:
91*72cedad2SMasahiro Yamada	rts
92*72cedad2SMasahiro Yamada	shlr2	r0
93*72cedad2SMasahiro Yamada
94*72cedad2SMasahiro Yamada__lshrsi3_7:
95*72cedad2SMasahiro Yamada	shlr2	r0
96*72cedad2SMasahiro Yamada__lshrsi3_5:
97*72cedad2SMasahiro Yamada	shlr2	r0
98*72cedad2SMasahiro Yamada__lshrsi3_3:
99*72cedad2SMasahiro Yamada	shlr2	r0
100*72cedad2SMasahiro Yamada__lshrsi3_1:
101*72cedad2SMasahiro Yamada	rts
102*72cedad2SMasahiro Yamada	shlr	r0
103*72cedad2SMasahiro Yamada
104*72cedad2SMasahiro Yamada__lshrsi3_14:
105*72cedad2SMasahiro Yamada	shlr2	r0
106*72cedad2SMasahiro Yamada__lshrsi3_12:
107*72cedad2SMasahiro Yamada	shlr2	r0
108*72cedad2SMasahiro Yamada__lshrsi3_10:
109*72cedad2SMasahiro Yamada	shlr2	r0
110*72cedad2SMasahiro Yamada__lshrsi3_8:
111*72cedad2SMasahiro Yamada	rts
112*72cedad2SMasahiro Yamada	shlr8	r0
113*72cedad2SMasahiro Yamada
114*72cedad2SMasahiro Yamada__lshrsi3_15:
115*72cedad2SMasahiro Yamada	shlr2	r0
116*72cedad2SMasahiro Yamada__lshrsi3_13:
117*72cedad2SMasahiro Yamada	shlr2	r0
118*72cedad2SMasahiro Yamada__lshrsi3_11:
119*72cedad2SMasahiro Yamada	shlr2	r0
120*72cedad2SMasahiro Yamada__lshrsi3_9:
121*72cedad2SMasahiro Yamada	shlr8	r0
122*72cedad2SMasahiro Yamada	rts
123*72cedad2SMasahiro Yamada	shlr	r0
124*72cedad2SMasahiro Yamada
125*72cedad2SMasahiro Yamada__lshrsi3_22:
126*72cedad2SMasahiro Yamada	shlr2	r0
127*72cedad2SMasahiro Yamada__lshrsi3_20:
128*72cedad2SMasahiro Yamada	shlr2	r0
129*72cedad2SMasahiro Yamada__lshrsi3_18:
130*72cedad2SMasahiro Yamada	shlr2	r0
131*72cedad2SMasahiro Yamada__lshrsi3_16:
132*72cedad2SMasahiro Yamada	rts
133*72cedad2SMasahiro Yamada	shlr16	r0
134*72cedad2SMasahiro Yamada
135*72cedad2SMasahiro Yamada__lshrsi3_23:
136*72cedad2SMasahiro Yamada	shlr2	r0
137*72cedad2SMasahiro Yamada__lshrsi3_21:
138*72cedad2SMasahiro Yamada	shlr2	r0
139*72cedad2SMasahiro Yamada__lshrsi3_19:
140*72cedad2SMasahiro Yamada	shlr2	r0
141*72cedad2SMasahiro Yamada__lshrsi3_17:
142*72cedad2SMasahiro Yamada	shlr16	r0
143*72cedad2SMasahiro Yamada	rts
144*72cedad2SMasahiro Yamada	shlr	r0
145*72cedad2SMasahiro Yamada
146*72cedad2SMasahiro Yamada__lshrsi3_30:
147*72cedad2SMasahiro Yamada	shlr2	r0
148*72cedad2SMasahiro Yamada__lshrsi3_28:
149*72cedad2SMasahiro Yamada	shlr2	r0
150*72cedad2SMasahiro Yamada__lshrsi3_26:
151*72cedad2SMasahiro Yamada	shlr2	r0
152*72cedad2SMasahiro Yamada__lshrsi3_24:
153*72cedad2SMasahiro Yamada	shlr16	r0
154*72cedad2SMasahiro Yamada	rts
155*72cedad2SMasahiro Yamada	shlr8	r0
156*72cedad2SMasahiro Yamada
157*72cedad2SMasahiro Yamada__lshrsi3_31:
158*72cedad2SMasahiro Yamada	shlr2	r0
159*72cedad2SMasahiro Yamada__lshrsi3_29:
160*72cedad2SMasahiro Yamada	shlr2	r0
161*72cedad2SMasahiro Yamada__lshrsi3_27:
162*72cedad2SMasahiro Yamada	shlr2	r0
163*72cedad2SMasahiro Yamada__lshrsi3_25:
164*72cedad2SMasahiro Yamada	shlr16	r0
165*72cedad2SMasahiro Yamada	shlr8	r0
166*72cedad2SMasahiro Yamada	rts
167*72cedad2SMasahiro Yamada	shlr	r0
168*72cedad2SMasahiro Yamada
169*72cedad2SMasahiro Yamada__lshrsi3_0:
170*72cedad2SMasahiro Yamada	rts
171*72cedad2SMasahiro Yamada	nop
172