|  | ; 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 |