Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sh/lib/ashlsi3.S
26424 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
! __ashlsi3
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
! __ashlsi3_r0
37
!
38
! Entry:
39
!
40
! r4: Value to shift
41
! r0: Shifts
42
!
43
! Exit:
44
!
45
! r0: Result
46
!
47
! Destroys:
48
!
49
! (none)
50
51
52
.global __ashlsi3
53
.global __ashlsi3_r0
54
55
.align 2
56
__ashlsi3:
57
mov r5,r0
58
.align 2
59
__ashlsi3_r0:
60
and #31,r0
61
mov.l r4,@-r15
62
mov r0,r4
63
mova ashlsi3_table,r0
64
mov.b @(r0,r4),r4
65
add r4,r0
66
jmp @r0
67
mov.l @r15+,r0
68
69
.align 2
70
ashlsi3_table:
71
.byte ashlsi3_0-ashlsi3_table
72
.byte ashlsi3_1-ashlsi3_table
73
.byte ashlsi3_2-ashlsi3_table
74
.byte ashlsi3_3-ashlsi3_table
75
.byte ashlsi3_4-ashlsi3_table
76
.byte ashlsi3_5-ashlsi3_table
77
.byte ashlsi3_6-ashlsi3_table
78
.byte ashlsi3_7-ashlsi3_table
79
.byte ashlsi3_8-ashlsi3_table
80
.byte ashlsi3_9-ashlsi3_table
81
.byte ashlsi3_10-ashlsi3_table
82
.byte ashlsi3_11-ashlsi3_table
83
.byte ashlsi3_12-ashlsi3_table
84
.byte ashlsi3_13-ashlsi3_table
85
.byte ashlsi3_14-ashlsi3_table
86
.byte ashlsi3_15-ashlsi3_table
87
.byte ashlsi3_16-ashlsi3_table
88
.byte ashlsi3_17-ashlsi3_table
89
.byte ashlsi3_18-ashlsi3_table
90
.byte ashlsi3_19-ashlsi3_table
91
.byte ashlsi3_20-ashlsi3_table
92
.byte ashlsi3_21-ashlsi3_table
93
.byte ashlsi3_22-ashlsi3_table
94
.byte ashlsi3_23-ashlsi3_table
95
.byte ashlsi3_24-ashlsi3_table
96
.byte ashlsi3_25-ashlsi3_table
97
.byte ashlsi3_26-ashlsi3_table
98
.byte ashlsi3_27-ashlsi3_table
99
.byte ashlsi3_28-ashlsi3_table
100
.byte ashlsi3_29-ashlsi3_table
101
.byte ashlsi3_30-ashlsi3_table
102
.byte ashlsi3_31-ashlsi3_table
103
104
ashlsi3_6:
105
shll2 r0
106
ashlsi3_4:
107
shll2 r0
108
ashlsi3_2:
109
rts
110
shll2 r0
111
112
ashlsi3_7:
113
shll2 r0
114
ashlsi3_5:
115
shll2 r0
116
ashlsi3_3:
117
shll2 r0
118
ashlsi3_1:
119
rts
120
shll r0
121
122
ashlsi3_14:
123
shll2 r0
124
ashlsi3_12:
125
shll2 r0
126
ashlsi3_10:
127
shll2 r0
128
ashlsi3_8:
129
rts
130
shll8 r0
131
132
ashlsi3_15:
133
shll2 r0
134
ashlsi3_13:
135
shll2 r0
136
ashlsi3_11:
137
shll2 r0
138
ashlsi3_9:
139
shll8 r0
140
rts
141
shll r0
142
143
ashlsi3_22:
144
shll2 r0
145
ashlsi3_20:
146
shll2 r0
147
ashlsi3_18:
148
shll2 r0
149
ashlsi3_16:
150
rts
151
shll16 r0
152
153
ashlsi3_23:
154
shll2 r0
155
ashlsi3_21:
156
shll2 r0
157
ashlsi3_19:
158
shll2 r0
159
ashlsi3_17:
160
shll16 r0
161
rts
162
shll r0
163
164
ashlsi3_30:
165
shll2 r0
166
ashlsi3_28:
167
shll2 r0
168
ashlsi3_26:
169
shll2 r0
170
ashlsi3_24:
171
shll16 r0
172
rts
173
shll8 r0
174
175
ashlsi3_31:
176
shll2 r0
177
ashlsi3_29:
178
shll2 r0
179
ashlsi3_27:
180
shll2 r0
181
ashlsi3_25:
182
shll16 r0
183
shll8 r0
184
rts
185
shll r0
186
187
ashlsi3_0:
188
rts
189
nop
190
191