]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - arch/h8300/lib/mulsi3.S
Merge tag 'tpm-fixes-for-4.2-rc2' of https://github.com/PeterHuewe/linux-tpmdd into...
[mirror_ubuntu-artful-kernel.git] / arch / h8300 / lib / mulsi3.S
CommitLineData
a71a29de
YS
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