Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sh/lib/ashrsi3.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
! __ashrsi3
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
! __ashrsi3_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
.global __ashrsi3
52
.global __ashrsi3_r0
53
54
.align 2
55
__ashrsi3:
56
mov r5,r0
57
.align 2
58
__ashrsi3_r0:
59
and #31,r0
60
mov.l r4,@-r15
61
mov r0,r4
62
mova ashrsi3_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
ashrsi3_table:
70
.byte ashrsi3_0-ashrsi3_table
71
.byte ashrsi3_1-ashrsi3_table
72
.byte ashrsi3_2-ashrsi3_table
73
.byte ashrsi3_3-ashrsi3_table
74
.byte ashrsi3_4-ashrsi3_table
75
.byte ashrsi3_5-ashrsi3_table
76
.byte ashrsi3_6-ashrsi3_table
77
.byte ashrsi3_7-ashrsi3_table
78
.byte ashrsi3_8-ashrsi3_table
79
.byte ashrsi3_9-ashrsi3_table
80
.byte ashrsi3_10-ashrsi3_table
81
.byte ashrsi3_11-ashrsi3_table
82
.byte ashrsi3_12-ashrsi3_table
83
.byte ashrsi3_13-ashrsi3_table
84
.byte ashrsi3_14-ashrsi3_table
85
.byte ashrsi3_15-ashrsi3_table
86
.byte ashrsi3_16-ashrsi3_table
87
.byte ashrsi3_17-ashrsi3_table
88
.byte ashrsi3_18-ashrsi3_table
89
.byte ashrsi3_19-ashrsi3_table
90
.byte ashrsi3_20-ashrsi3_table
91
.byte ashrsi3_21-ashrsi3_table
92
.byte ashrsi3_22-ashrsi3_table
93
.byte ashrsi3_23-ashrsi3_table
94
.byte ashrsi3_24-ashrsi3_table
95
.byte ashrsi3_25-ashrsi3_table
96
.byte ashrsi3_26-ashrsi3_table
97
.byte ashrsi3_27-ashrsi3_table
98
.byte ashrsi3_28-ashrsi3_table
99
.byte ashrsi3_29-ashrsi3_table
100
.byte ashrsi3_30-ashrsi3_table
101
.byte ashrsi3_31-ashrsi3_table
102
103
ashrsi3_31:
104
rotcl r0
105
rts
106
subc r0,r0
107
108
ashrsi3_30:
109
shar r0
110
ashrsi3_29:
111
shar r0
112
ashrsi3_28:
113
shar r0
114
ashrsi3_27:
115
shar r0
116
ashrsi3_26:
117
shar r0
118
ashrsi3_25:
119
shar r0
120
ashrsi3_24:
121
shlr16 r0
122
shlr8 r0
123
rts
124
exts.b r0,r0
125
126
ashrsi3_23:
127
shar r0
128
ashrsi3_22:
129
shar r0
130
ashrsi3_21:
131
shar r0
132
ashrsi3_20:
133
shar r0
134
ashrsi3_19:
135
shar r0
136
ashrsi3_18:
137
shar r0
138
ashrsi3_17:
139
shar r0
140
ashrsi3_16:
141
shlr16 r0
142
rts
143
exts.w r0,r0
144
145
ashrsi3_15:
146
shar r0
147
ashrsi3_14:
148
shar r0
149
ashrsi3_13:
150
shar r0
151
ashrsi3_12:
152
shar r0
153
ashrsi3_11:
154
shar r0
155
ashrsi3_10:
156
shar r0
157
ashrsi3_9:
158
shar r0
159
ashrsi3_8:
160
shar r0
161
ashrsi3_7:
162
shar r0
163
ashrsi3_6:
164
shar r0
165
ashrsi3_5:
166
shar r0
167
ashrsi3_4:
168
shar r0
169
ashrsi3_3:
170
shar r0
171
ashrsi3_2:
172
shar r0
173
ashrsi3_1:
174
rts
175
shar r0
176
177
ashrsi3_0:
178
rts
179
nop
180
181