mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
714 B
39 lines
714 B
; SPDX-License-Identifier: GPL-2.0 |
|
; |
|
; mulsi3 for H8/300H - based on Renesas SH implementation |
|
; |
|
; by Toshiyasu Morita |
|
; |
|
; Old code: |
|
; |
|
; 16b * 16b = 372 states (worst case) |
|
; 32b * 32b = 724 states (worst case) |
|
; |
|
; New code: |
|
; |
|
; 16b * 16b = 48 states |
|
; 16b * 32b = 72 states |
|
; 32b * 32b = 92 states |
|
; |
|
|
|
.global __mulsi3 |
|
__mulsi3: |
|
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) |
|
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) |
|
add.w r3,e2 ; ( 2 states) |
|
|
|
L_skip2: |
|
mov.l er2,er0 ; ( 2 states) |
|
rts ; (10 states) |
|
|
|
.end
|
|
|