• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1;
2; mulsi3 for H8/300H - based on Renesas SH implementation
3;
4; by Toshiyasu Morita
5;
6; Old code:
7;
8; 16b * 16b = 372 states (worst case)
9; 32b * 32b = 724 states (worst case)
10;
11; New code:
12;
13; 16b * 16b =  48 states
14; 16b * 32b =  72 states
15; 32b * 32b =  92 states
16;
17
18	.global __mulsi3
19__mulsi3:
20	mov.w	r1,r2   ; ( 2 states) b * d
21	mulxu	r0,er2  ; (22 states)
22
23	mov.w	e0,r3   ; ( 2 states) a * d
24	beq	L_skip1 ; ( 4 states)
25	mulxu	r1,er3  ; (22 states)
26	add.w	r3,e2   ; ( 2 states)
27
28L_skip1:
29	mov.w	e1,r3   ; ( 2 states) c * b
30	beq	L_skip2 ; ( 4 states)
31	mulxu	r0,er3  ; (22 states)
32	add.w	r3,e2   ; ( 2 states)
33
34L_skip2:
35	mov.l	er2,er0	; ( 2 states)
36	rts		; (10 states)
37
38	.end
39