summaryrefslogtreecommitdiff
path: root/gcc/config/h8300
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-20 20:21:35 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-20 20:21:35 +0000
commita37ad22870407c4f2f34091733f8ac2daa69b724 (patch)
tree086adb6ab0b815dd544e2ec0649a41503e971604 /gcc/config/h8300
parentca92c69c3732d937f9748c06418507c0b982f000 (diff)
downloadgcc-a37ad22870407c4f2f34091733f8ac2daa69b724.tar.gz
* config/h8300/lib1funcs.asm (___mulsi3): Remove unnecessary
push and pop. Replace add.l with add.w. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52559 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/h8300')
-rw-r--r--gcc/config/h8300/lib1funcs.asm17
1 files changed, 5 insertions, 12 deletions
diff --git a/gcc/config/h8300/lib1funcs.asm b/gcc/config/h8300/lib1funcs.asm
index 0fbeacd0ed0..9ac8c1bf218 100644
--- a/gcc/config/h8300/lib1funcs.asm
+++ b/gcc/config/h8300/lib1funcs.asm
@@ -742,36 +742,29 @@ _done:
;
; New code:
;
-; 16b * 16b = 68 states
-; 16b * 32b = 96 states
-; 32b * 32b = 124 states
+; 16b * 16b = 48 states
+; 16b * 32b = 72 states
+; 32b * 32b = 92 states
;
.global ___mulsi3
___mulsi3:
- push.l er3 ; (10 states)
-
mov.w r1,r2 ; ( 2 states) b * d
mulxu r0,er2 ; (22 states)
mov.w e0,r3 ; ( 2 states) a * d
beq L_skip1 ; ( 4 states)
mulxu r1,er3 ; (22 states)
- mov.w r3,e3 ; ( 2 states)
- mov.w #0,r3 ; ( 2 states)
- add.l er3,er2 ; ( 2 states)
+ add.w r3,e2 ; ( 2 states)
L_skip1:
mov.w e1,r3 ; ( 2 states) c * b
beq L_skip2 ; ( 4 states)
mulxu r0,er3 ; (22 states)
- mov.w r3,e3 ; ( 2 states)
- mov.w #0,r3 ; ( 2 states)
- add.l er3,er2 ; ( 2 states)
+ add.w r3,e2 ; ( 2 states)
L_skip2:
mov.l er2,er0 ; ( 2 states)
- pop.l er3 ; (10 states)
rts ; (10 states)
#endif