diff options
author | Kazu Hirata <kazu@hxi.com> | 2002-04-20 20:21:35 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2002-04-20 20:21:35 +0000 |
commit | 26b298848293b4bc22eedeec96240509b77a31c9 (patch) | |
tree | 086adb6ab0b815dd544e2ec0649a41503e971604 /gcc/config/h8300 | |
parent | 59184677f448e6e760a945dd9b774ec41be0f64d (diff) | |
download | gcc-26b298848293b4bc22eedeec96240509b77a31c9.tar.gz |
lib1funcs.asm (___mulsi3): Remove unnecessary push and pop.
* config/h8300/lib1funcs.asm (___mulsi3): Remove unnecessary
push and pop. Replace add.l with add.w.
From-SVN: r52559
Diffstat (limited to 'gcc/config/h8300')
-rw-r--r-- | gcc/config/h8300/lib1funcs.asm | 17 |
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 |