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