18c2ecf20Sopenharmony_ci; SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci; 38c2ecf20Sopenharmony_ci; mulsi3 for H8/300H - based on Renesas SH implementation 48c2ecf20Sopenharmony_ci; 58c2ecf20Sopenharmony_ci; by Toshiyasu Morita 68c2ecf20Sopenharmony_ci; 78c2ecf20Sopenharmony_ci; Old code: 88c2ecf20Sopenharmony_ci; 98c2ecf20Sopenharmony_ci; 16b * 16b = 372 states (worst case) 108c2ecf20Sopenharmony_ci; 32b * 32b = 724 states (worst case) 118c2ecf20Sopenharmony_ci; 128c2ecf20Sopenharmony_ci; New code: 138c2ecf20Sopenharmony_ci; 148c2ecf20Sopenharmony_ci; 16b * 16b = 48 states 158c2ecf20Sopenharmony_ci; 16b * 32b = 72 states 168c2ecf20Sopenharmony_ci; 32b * 32b = 92 states 178c2ecf20Sopenharmony_ci; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci .global __mulsi3 208c2ecf20Sopenharmony_ci__mulsi3: 218c2ecf20Sopenharmony_ci mov.w r1,r2 ; ( 2 states) b * d 228c2ecf20Sopenharmony_ci mulxu r0,er2 ; (22 states) 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci mov.w e0,r3 ; ( 2 states) a * d 258c2ecf20Sopenharmony_ci beq L_skip1 ; ( 4 states) 268c2ecf20Sopenharmony_ci mulxu r1,er3 ; (22 states) 278c2ecf20Sopenharmony_ci add.w r3,e2 ; ( 2 states) 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ciL_skip1: 308c2ecf20Sopenharmony_ci mov.w e1,r3 ; ( 2 states) c * b 318c2ecf20Sopenharmony_ci beq L_skip2 ; ( 4 states) 328c2ecf20Sopenharmony_ci mulxu r0,er3 ; (22 states) 338c2ecf20Sopenharmony_ci add.w r3,e2 ; ( 2 states) 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ciL_skip2: 368c2ecf20Sopenharmony_ci mov.l er2,er0 ; ( 2 states) 378c2ecf20Sopenharmony_ci rts ; (10 states) 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci .end 40