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