Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
b8b7ac24
Commit
b8b7ac24
authored
Apr 27, 1995
by
Jim Wilson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(ashiftrt_r4_*): Rewrite for efficiency.
(ashrsi3, lshrsi3, lshrsi3): Add. From-SVN: r9521
parent
2a3c15b5
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
482 additions
and
5 deletions
+482
-5
gcc/config/sh/lib1funcs.asm
+482
-5
No files found.
gcc/config/sh/lib1funcs.asm
View file @
b8b7ac24
...
...
@@ -34,6 +34,9 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
!!
Contributed
by
Steve
Chamberlain
.
!!
sac
@
cygnus
.
com
!!
ashiftrt_r4_x
,
___ashrsi3
,
___ashlsi3
,
___lshrsi3
routines
!!
recoded
in
assembly
by
Toshiyasu
Morita
!!
tm
@
netcom
.
com
#
ifdef
L_ashiftrt
.
global
___ashiftrt_r4_0
...
...
@@ -70,10 +73,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
.
global
___ashiftrt_r4_31
.
global
___ashiftrt_r4_32
.
align
1
___ashiftrt_r4_32
:
shar
r4
___ashiftrt_r4_31
:
shar
r4
rotcl
r4
rts
subc
r4
,
r4
___ashiftrt_r4_30
:
shar
r4
___ashiftrt_r4_29
:
...
...
@@ -87,7 +93,11 @@ ___ashiftrt_r4_26:
___ashiftrt_r4_25
:
shar
r4
___ashiftrt_r4_24
:
shar
r4
shlr16
r4
shlr8
r4
rts
exts
.
b
r4
,
r4
___ashiftrt_r4_23
:
shar
r4
___ashiftrt_r4_22
:
...
...
@@ -103,7 +113,10 @@ ___ashiftrt_r4_18:
___ashiftrt_r4_17
:
shar
r4
___ashiftrt_r4_16
:
shar
r4
shlr16
r4
rts
exts
.
w
r4
,
r4
___ashiftrt_r4_15
:
shar
r4
___ashiftrt_r4_14
:
...
...
@@ -141,6 +154,471 @@ ___ashiftrt_r4_0:
nop
#
endif
#
ifdef
L_ashiftrt_n
!
!
___ashrsi3
!
!
Entry
:
!
!
r4
:
Value
to
shift
!
r5
:
Shifts
!
!
Exit
:
!
!
r0
:
Result
!
!
Destroys
:
!
!
r1
!
.
global
___ashrsi3
.
align
2
___ashrsi3
:
mov
#
31
,
r0
cmp
/
hi
r0
,
r5
bt
L_ashrsi3_31
mov
r5
,
r1
!
Remove
later
mova
L_ashrsi3_table
,
r0
shll
r1
!
Remove
later
mov
.
w
@
(
r0
,
r1
),
r1
!
Change
to
mov
.
b
@
(
r0
,
r5
),
r1
add
r1
,
r0
jmp
@
r0
mov
r4
,
r0
L_ashrsi3_table
:
.
word
L_ashrsi3_0
-
L_ashrsi3_table
!
Change
to
.
bytes
.
word
L_ashrsi3_1
-
L_ashrsi3_table
.
word
L_ashrsi3_2
-
L_ashrsi3_table
.
word
L_ashrsi3_3
-
L_ashrsi3_table
.
word
L_ashrsi3_4
-
L_ashrsi3_table
.
word
L_ashrsi3_5
-
L_ashrsi3_table
.
word
L_ashrsi3_6
-
L_ashrsi3_table
.
word
L_ashrsi3_7
-
L_ashrsi3_table
.
word
L_ashrsi3_8
-
L_ashrsi3_table
.
word
L_ashrsi3_9
-
L_ashrsi3_table
.
word
L_ashrsi3_10
-
L_ashrsi3_table
.
word
L_ashrsi3_11
-
L_ashrsi3_table
.
word
L_ashrsi3_12
-
L_ashrsi3_table
.
word
L_ashrsi3_13
-
L_ashrsi3_table
.
word
L_ashrsi3_14
-
L_ashrsi3_table
.
word
L_ashrsi3_15
-
L_ashrsi3_table
.
word
L_ashrsi3_16
-
L_ashrsi3_table
.
word
L_ashrsi3_17
-
L_ashrsi3_table
.
word
L_ashrsi3_18
-
L_ashrsi3_table
.
word
L_ashrsi3_19
-
L_ashrsi3_table
.
word
L_ashrsi3_20
-
L_ashrsi3_table
.
word
L_ashrsi3_21
-
L_ashrsi3_table
.
word
L_ashrsi3_22
-
L_ashrsi3_table
.
word
L_ashrsi3_23
-
L_ashrsi3_table
.
word
L_ashrsi3_24
-
L_ashrsi3_table
.
word
L_ashrsi3_25
-
L_ashrsi3_table
.
word
L_ashrsi3_26
-
L_ashrsi3_table
.
word
L_ashrsi3_27
-
L_ashrsi3_table
.
word
L_ashrsi3_28
-
L_ashrsi3_table
.
word
L_ashrsi3_29
-
L_ashrsi3_table
.
word
L_ashrsi3_30
-
L_ashrsi3_table
.
word
L_ashrsi3_31
-
L_ashrsi3_table
L_ashrsi3_31
:
rotcl
r0
rts
subc
r0
,
r0
L_ashrsi3_30
:
shar
r0
L_ashrsi3_29
:
shar
r0
L_ashrsi3_28
:
shar
r0
L_ashrsi3_27
:
shar
r0
L_ashrsi3_26
:
shar
r0
L_ashrsi3_25
:
shar
r0
L_ashrsi3_24
:
shlr16
r0
shlr8
r0
rts
exts
.
b
r0
,
r0
L_ashrsi3_23
:
shar
r0
L_ashrsi3_22
:
shar
r0
L_ashrsi3_21
:
shar
r0
L_ashrsi3_20
:
shar
r0
L_ashrsi3_19
:
shar
r0
L_ashrsi3_18
:
shar
r0
L_ashrsi3_17
:
shar
r0
L_ashrsi3_16
:
shlr16
r0
rts
exts
.
w
r0
,
r0
L_ashrsi3_15
:
shar
r0
L_ashrsi3_14
:
shar
r0
L_ashrsi3_13
:
shar
r0
L_ashrsi3_12
:
shar
r0
L_ashrsi3_11
:
shar
r0
L_ashrsi3_10
:
shar
r0
L_ashrsi3_9
:
shar
r0
L_ashrsi3_8
:
shar
r0
L_ashrsi3_7
:
shar
r0
L_ashrsi3_6
:
shar
r0
L_ashrsi3_5
:
shar
r0
L_ashrsi3_4
:
shar
r0
L_ashrsi3_3
:
shar
r0
L_ashrsi3_2
:
shar
r0
L_ashrsi3_1
:
rts
shar
r0
L_ashrsi3_0
:
rts
nop
#
endif
#
ifdef
L_ashiftlt
!
!
___ashlsi3
!
!
Entry
:
!
!
r4
:
Value
to
shift
!
r5
:
Shifts
!
!
Exit
:
!
!
r0
:
Result
!
!
Destroys
:
!
!
r1
!
.
global
___ashlsi3
.
align
2
___ashlsi3
:
mov
#
31
,
r0
cmp
/
hi
r0
,
r5
bt
L_ashlsi3_32
mov
r5
,
r1
!
Remove
later
mova
L_ashlsi3_table
,
r0
shll
r1
!
Remove
later
mov
.
w
@
(
r0
,
r1
),
r1
!
Change
to
mov
.
b
@
(
r0
,
r5
),
r1
add
r1
,
r0
jmp
@
r0
mov
r4
,
r0
L_ashlsi3_table
:
.
word
L_ashlsi3_0
-
L_ashlsi3_table
!
Change
to
.
bytes
.
word
L_ashlsi3_1
-
L_ashlsi3_table
.
word
L_ashlsi3_2
-
L_ashlsi3_table
.
word
L_ashlsi3_3
-
L_ashlsi3_table
.
word
L_ashlsi3_4
-
L_ashlsi3_table
.
word
L_ashlsi3_5
-
L_ashlsi3_table
.
word
L_ashlsi3_6
-
L_ashlsi3_table
.
word
L_ashlsi3_7
-
L_ashlsi3_table
.
word
L_ashlsi3_8
-
L_ashlsi3_table
.
word
L_ashlsi3_9
-
L_ashlsi3_table
.
word
L_ashlsi3_10
-
L_ashlsi3_table
.
word
L_ashlsi3_11
-
L_ashlsi3_table
.
word
L_ashlsi3_12
-
L_ashlsi3_table
.
word
L_ashlsi3_13
-
L_ashlsi3_table
.
word
L_ashlsi3_14
-
L_ashlsi3_table
.
word
L_ashlsi3_15
-
L_ashlsi3_table
.
word
L_ashlsi3_16
-
L_ashlsi3_table
.
word
L_ashlsi3_17
-
L_ashlsi3_table
.
word
L_ashlsi3_18
-
L_ashlsi3_table
.
word
L_ashlsi3_19
-
L_ashlsi3_table
.
word
L_ashlsi3_20
-
L_ashlsi3_table
.
word
L_ashlsi3_21
-
L_ashlsi3_table
.
word
L_ashlsi3_22
-
L_ashlsi3_table
.
word
L_ashlsi3_23
-
L_ashlsi3_table
.
word
L_ashlsi3_24
-
L_ashlsi3_table
.
word
L_ashlsi3_25
-
L_ashlsi3_table
.
word
L_ashlsi3_26
-
L_ashlsi3_table
.
word
L_ashlsi3_27
-
L_ashlsi3_table
.
word
L_ashlsi3_28
-
L_ashlsi3_table
.
word
L_ashlsi3_29
-
L_ashlsi3_table
.
word
L_ashlsi3_30
-
L_ashlsi3_table
.
word
L_ashlsi3_31
-
L_ashlsi3_table
L_ashlsi3_6
:
shll2
r0
L_ashlsi3_4
:
shll2
r0
L_ashlsi3_2
:
rts
shll2
r0
L_ashlsi3_7
:
shll2
r0
L_ashlsi3_5
:
shll2
r0
L_ashlsi3_3
:
shll2
r0
L_ashlsi3_1
:
rts
shll
r0
L_ashlsi3_14
:
shll2
r0
L_ashlsi3_12
:
shll2
r0
L_ashlsi3_10
:
shll2
r0
L_ashlsi3_8
:
rts
shll8
r0
L_ashlsi3_15
:
shll2
r0
L_ashlsi3_13
:
shll2
r0
L_ashlsi3_11
:
shll2
r0
L_ashlsi3_9
:
shll8
r0
rts
shll
r0
L_ashlsi3_22
:
shll2
r0
L_ashlsi3_20
:
shll2
r0
L_ashlsi3_18
:
shll2
r0
L_ashlsi3_16
:
rts
shll16
r0
L_ashlsi3_23
:
shll2
r0
L_ashlsi3_21
:
shll2
r0
L_ashlsi3_19
:
shll2
r0
L_ashlsi3_17
:
shll16
r0
rts
shll
r0
L_ashlsi3_30
:
shll2
r0
L_ashlsi3_28
:
shll2
r0
L_ashlsi3_26
:
shll2
r0
L_ashlsi3_24
:
shll16
r0
rts
shll8
r0
L_ashlsi3_31
:
shll2
r0
L_ashlsi3_29
:
shll2
r0
L_ashlsi3_27
:
shll2
r0
L_ashlsi3_25
:
shll16
r0
shll8
r0
rts
shll
r0
L_ashlsi3_32
:
rts
mov
#
0
,
r0
L_ashlsi3_0
:
rts
nop
#
endif
#
ifdef
L_lshiftrt
!
!
___lshrsi3
!
!
Entry
:
!
!
r4
:
Value
to
shift
!
r5
:
Shifts
!
!
Exit
:
!
!
r0
:
Result
!
!
Destroys
:
!
!
r1
!
.
global
___lshrsi3
.
align
2
___lshrsi3
:
mov
#
31
,
r0
cmp
/
hi
r0
,
r5
bt
L_lshrsi3_32
mov
r5
,
r1
!
Remove
later
mova
L_lshrsi3_table
,
r0
shll
r1
!
Remove
later
mov
.
w
@
(
r0
,
r1
),
r1
!
Change
to
mov
.
b
@
(
r0
,
r5
),
r1
add
r1
,
r0
jmp
@
r0
mov
r4
,
r0
L_lshrsi3_table
:
.
word
L_lshrsi3_0
-
L_lshrsi3_table
!
Change
to
.
bytes
.
word
L_lshrsi3_1
-
L_lshrsi3_table
.
word
L_lshrsi3_2
-
L_lshrsi3_table
.
word
L_lshrsi3_3
-
L_lshrsi3_table
.
word
L_lshrsi3_4
-
L_lshrsi3_table
.
word
L_lshrsi3_5
-
L_lshrsi3_table
.
word
L_lshrsi3_6
-
L_lshrsi3_table
.
word
L_lshrsi3_7
-
L_lshrsi3_table
.
word
L_lshrsi3_8
-
L_lshrsi3_table
.
word
L_lshrsi3_9
-
L_lshrsi3_table
.
word
L_lshrsi3_10
-
L_lshrsi3_table
.
word
L_lshrsi3_11
-
L_lshrsi3_table
.
word
L_lshrsi3_12
-
L_lshrsi3_table
.
word
L_lshrsi3_13
-
L_lshrsi3_table
.
word
L_lshrsi3_14
-
L_lshrsi3_table
.
word
L_lshrsi3_15
-
L_lshrsi3_table
.
word
L_lshrsi3_16
-
L_lshrsi3_table
.
word
L_lshrsi3_17
-
L_lshrsi3_table
.
word
L_lshrsi3_18
-
L_lshrsi3_table
.
word
L_lshrsi3_19
-
L_lshrsi3_table
.
word
L_lshrsi3_20
-
L_lshrsi3_table
.
word
L_lshrsi3_21
-
L_lshrsi3_table
.
word
L_lshrsi3_22
-
L_lshrsi3_table
.
word
L_lshrsi3_23
-
L_lshrsi3_table
.
word
L_lshrsi3_24
-
L_lshrsi3_table
.
word
L_lshrsi3_25
-
L_lshrsi3_table
.
word
L_lshrsi3_26
-
L_lshrsi3_table
.
word
L_lshrsi3_27
-
L_lshrsi3_table
.
word
L_lshrsi3_28
-
L_lshrsi3_table
.
word
L_lshrsi3_29
-
L_lshrsi3_table
.
word
L_lshrsi3_30
-
L_lshrsi3_table
.
word
L_lshrsi3_31
-
L_lshrsi3_table
L_lshrsi3_6
:
shlr2
r0
L_lshrsi3_4
:
shlr2
r0
L_lshrsi3_2
:
rts
shlr2
r0
L_lshrsi3_7
:
shlr2
r0
L_lshrsi3_5
:
shlr2
r0
L_lshrsi3_3
:
shlr2
r0
L_lshrsi3_1
:
rts
shlr
r0
L_lshrsi3_14
:
shlr2
r0
L_lshrsi3_12
:
shlr2
r0
L_lshrsi3_10
:
shlr2
r0
L_lshrsi3_8
:
rts
shlr8
r0
L_lshrsi3_15
:
shlr2
r0
L_lshrsi3_13
:
shlr2
r0
L_lshrsi3_11
:
shlr2
r0
L_lshrsi3_9
:
shlr8
r0
rts
shlr
r0
L_lshrsi3_22
:
shlr2
r0
L_lshrsi3_20
:
shlr2
r0
L_lshrsi3_18
:
shlr2
r0
L_lshrsi3_16
:
rts
shlr16
r0
L_lshrsi3_23
:
shlr2
r0
L_lshrsi3_21
:
shlr2
r0
L_lshrsi3_19
:
shlr2
r0
L_lshrsi3_17
:
shlr16
r0
rts
shlr
r0
L_lshrsi3_30
:
shlr2
r0
L_lshrsi3_28
:
shlr2
r0
L_lshrsi3_26
:
shlr2
r0
L_lshrsi3_24
:
shlr16
r0
rts
shlr8
r0
L_lshrsi3_31
:
shlr2
r0
L_lshrsi3_29
:
shlr2
r0
L_lshrsi3_27
:
shlr2
r0
L_lshrsi3_25
:
shlr16
r0
shlr8
r0
rts
shlr
r0
L_lshrsi3_32
:
rts
mov
#
0
,
r0
L_lshrsi3_0
:
rts
nop
#
endif
#
ifdef
L_movstr
.
text
!
done
all
the
large
groups
,
do
the
remainder
...
...
@@ -480,4 +958,3 @@ ret: rts
mov
r4
,
r0
#
endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment