5 MOVW R13, R16 /* save low parts for later */
9 * unsigned 32x32 => 64 multiply
17 ANDNCC $0xFFF, R13, R0
19 ANDCC R0, R0, R9 /* zero partial product and clear N and V cond's */
22 MULSCC R8, R9, R9 /* 0 */
23 MULSCC R8, R9, R9 /* 1 */
24 MULSCC R8, R9, R9 /* 2 */
25 MULSCC R8, R9, R9 /* 3 */
26 MULSCC R8, R9, R9 /* 4 */
27 MULSCC R8, R9, R9 /* 5 */
28 MULSCC R8, R9, R9 /* 6 */
29 MULSCC R8, R9, R9 /* 7 */
30 MULSCC R8, R9, R9 /* 8 */
31 MULSCC R8, R9, R9 /* 9 */
32 MULSCC R8, R9, R9 /* 10 */
33 MULSCC R8, R9, R9 /* 11 */
34 MULSCC R8, R9, R9 /* 12 */
35 MULSCC R8, R9, R9 /* 13 */
36 MULSCC R8, R9, R9 /* 14 */
37 MULSCC R8, R9, R9 /* 15 */
38 MULSCC R8, R9, R9 /* 16 */
39 MULSCC R8, R9, R9 /* 17 */
40 MULSCC R8, R9, R9 /* 18 */
41 MULSCC R8, R9, R9 /* 19 */
42 MULSCC R8, R9, R9 /* 20 */
43 MULSCC R8, R9, R9 /* 21 */
44 MULSCC R8, R9, R9 /* 22 */
45 MULSCC R8, R9, R9 /* 23 */
46 MULSCC R8, R9, R9 /* 24 */
47 MULSCC R8, R9, R9 /* 25 */
48 MULSCC R8, R9, R9 /* 26 */
49 MULSCC R8, R9, R9 /* 27 */
50 MULSCC R8, R9, R9 /* 28 */
51 MULSCC R8, R9, R9 /* 29 */
52 MULSCC R8, R9, R9 /* 30 */
53 MULSCC R8, R9, R9 /* 31 */
54 MULSCC R0, R9, R9 /* 32; shift only; r9 is high part */
57 * need to correct top word if top bit set
61 ADD R13, R9 /* adjust the high parts */
64 MOVW Y, R13 /* get low part */
68 ANDCC R0, R0, R9 /* zero partial product and clear N and V cond's */
69 MULSCC R8, R9, R9 /* 0 */
70 MULSCC R8, R9, R9 /* 1 */
71 MULSCC R8, R9, R9 /* 2 */
72 MULSCC R8, R9, R9 /* 3 */
73 MULSCC R8, R9, R9 /* 4 */
74 MULSCC R8, R9, R9 /* 5 */
75 MULSCC R8, R9, R9 /* 6 */
76 MULSCC R8, R9, R9 /* 7 */
77 MULSCC R8, R9, R9 /* 8 */
78 MULSCC R8, R9, R9 /* 9 */
79 MULSCC R8, R9, R9 /* 10 */
80 MULSCC R8, R9, R9 /* 11 */
81 MULSCC R0, R9, R9 /* 12; shift only; r9 is high part */
83 MOVW Y, R8 /* make low part of partial low part & high part */
88 SRA $20, R9 /* high part */
93 * mul by high halves if needed