Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sh/lib/lshrsi3.S
26439 views
1
/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
2
3
Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4
2004, 2005, 2006
5
Free Software Foundation, Inc.
6
*/
7
8
!! libgcc routines for the Renesas / SuperH SH CPUs.
9
!! Contributed by Steve Chamberlain.
10
!! sac@cygnus.com
11
12
!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
13
!! recoded in assembly by Toshiyasu Morita
14
!! tm@netcom.com
15
16
/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
17
ELF local label prefixes by J"orn Rennecke
18
[email protected] */
19
20
!
21
! __lshrsi3
22
!
23
! Entry:
24
!
25
! r4: Value to shift
26
! r5: Shifts
27
!
28
! Exit:
29
!
30
! r0: Result
31
!
32
! Destroys:
33
!
34
! (none)
35
!
36
! __lshrsi3_r0
37
!
38
! Entry:
39
!
40
! r0: Value to shift
41
! r5: Shifts
42
!
43
! Exit:
44
!
45
! r0: Result
46
!
47
! Destroys:
48
!
49
! (none)
50
!
51
.global __lshrsi3
52
.global __lshrsi3_r0
53
54
.align 2
55
__lshrsi3:
56
mov r5,r0
57
.align 2
58
__lshrsi3_r0:
59
and #31,r0
60
mov.l r4,@-r15
61
mov r0,r4
62
mova lshrsi3_table,r0
63
mov.b @(r0,r4),r4
64
add r4,r0
65
jmp @r0
66
mov.l @r15+,r0
67
68
.align 2
69
lshrsi3_table:
70
.byte lshrsi3_0-lshrsi3_table
71
.byte lshrsi3_1-lshrsi3_table
72
.byte lshrsi3_2-lshrsi3_table
73
.byte lshrsi3_3-lshrsi3_table
74
.byte lshrsi3_4-lshrsi3_table
75
.byte lshrsi3_5-lshrsi3_table
76
.byte lshrsi3_6-lshrsi3_table
77
.byte lshrsi3_7-lshrsi3_table
78
.byte lshrsi3_8-lshrsi3_table
79
.byte lshrsi3_9-lshrsi3_table
80
.byte lshrsi3_10-lshrsi3_table
81
.byte lshrsi3_11-lshrsi3_table
82
.byte lshrsi3_12-lshrsi3_table
83
.byte lshrsi3_13-lshrsi3_table
84
.byte lshrsi3_14-lshrsi3_table
85
.byte lshrsi3_15-lshrsi3_table
86
.byte lshrsi3_16-lshrsi3_table
87
.byte lshrsi3_17-lshrsi3_table
88
.byte lshrsi3_18-lshrsi3_table
89
.byte lshrsi3_19-lshrsi3_table
90
.byte lshrsi3_20-lshrsi3_table
91
.byte lshrsi3_21-lshrsi3_table
92
.byte lshrsi3_22-lshrsi3_table
93
.byte lshrsi3_23-lshrsi3_table
94
.byte lshrsi3_24-lshrsi3_table
95
.byte lshrsi3_25-lshrsi3_table
96
.byte lshrsi3_26-lshrsi3_table
97
.byte lshrsi3_27-lshrsi3_table
98
.byte lshrsi3_28-lshrsi3_table
99
.byte lshrsi3_29-lshrsi3_table
100
.byte lshrsi3_30-lshrsi3_table
101
.byte lshrsi3_31-lshrsi3_table
102
103
lshrsi3_6:
104
shlr2 r0
105
lshrsi3_4:
106
shlr2 r0
107
lshrsi3_2:
108
rts
109
shlr2 r0
110
111
lshrsi3_7:
112
shlr2 r0
113
lshrsi3_5:
114
shlr2 r0
115
lshrsi3_3:
116
shlr2 r0
117
lshrsi3_1:
118
rts
119
shlr r0
120
121
lshrsi3_14:
122
shlr2 r0
123
lshrsi3_12:
124
shlr2 r0
125
lshrsi3_10:
126
shlr2 r0
127
lshrsi3_8:
128
rts
129
shlr8 r0
130
131
lshrsi3_15:
132
shlr2 r0
133
lshrsi3_13:
134
shlr2 r0
135
lshrsi3_11:
136
shlr2 r0
137
lshrsi3_9:
138
shlr8 r0
139
rts
140
shlr r0
141
142
lshrsi3_22:
143
shlr2 r0
144
lshrsi3_20:
145
shlr2 r0
146
lshrsi3_18:
147
shlr2 r0
148
lshrsi3_16:
149
rts
150
shlr16 r0
151
152
lshrsi3_23:
153
shlr2 r0
154
lshrsi3_21:
155
shlr2 r0
156
lshrsi3_19:
157
shlr2 r0
158
lshrsi3_17:
159
shlr16 r0
160
rts
161
shlr r0
162
163
lshrsi3_30:
164
shlr2 r0
165
lshrsi3_28:
166
shlr2 r0
167
lshrsi3_26:
168
shlr2 r0
169
lshrsi3_24:
170
shlr16 r0
171
rts
172
shlr8 r0
173
174
lshrsi3_31:
175
shlr2 r0
176
lshrsi3_29:
177
shlr2 r0
178
lshrsi3_27:
179
shlr2 r0
180
lshrsi3_25:
181
shlr16 r0
182
shlr8 r0
183
rts
184
shlr r0
185
186
lshrsi3_0:
187
rts
188
nop
189
190