64 x 64 Multiplication Revised: Thursday, 23-Jun-2022 20:38:36 PDT |
|
|
A31..00×B31..00 |
|
|
|
|
UMULL R4,R5,R0,R2 |
+ |
232(A31..00×B63..32) |
|
|
|
|
MLA R5,R0,R3,R5 |
+ |
232(A63..32×B31..00) |
|
|
|
|
MLA R5,R1,R2,R5 |
+ |
264(A63..32×B63..32) |
|
|
|
= |
AU×BU (unsigned) |
|
|
|
|
LDR R0,=product STRD R4,R5,[R0] |
|
127 96 |
95 64 |
63 32 |
31 00 |
|
|
A×B (64 bits): |
|
|
|
|
A31..00×B31..00 |
|
|
|
UMULL R4,R5,R0,R2 |
+ |
232(A31..00×B63..32) |
|
|
|
|
MLA R5,R0,R3,R5 |
+ |
232(A63..32×B31..00) |
|
|
|
|
MLA R5,R1,R2,R5 |
+ |
264(A63..32×B63..32) |
|
|
|
− |
264(A63×B63..00) |
|
|
|
− |
264(B63×A63..00) |
|
|
|
= |
AS×BS (signed) |
|
|
|
|
LDR R0,=product STRD R4,R5,[R0] |
|
127 96 |
95 64 |
63 32 |
31 00 |
|
|
A×B (64 bits): |
|
|
|
|
A31..00×B31..00 |
|
|
|
UMULL R5,R4,R0,R2 |
+ |
264(A63..32×B63..32) |
|
|
|
MUL R5,R1,R3 |
+ |
232(A31..00×B63..32) |
|
|
|
|
UMLAL R4,R5,R0,R3 |
+ |
232(A63..32×B31..00) |
|
|
|
|
UMLAL R4,R5,R1,R2 |
− |
264(A63×B63..00) |
|
|
|
AND R2,R2,R1,ASR 31 SUBS R5,R5,R2 |
− |
264(B63×A63..00) |
|
|
|
AND R0,R0,R3,ASR 31 SUBS R5,R5,R0 |
= |
AS×BS (signed) |
|
|
|
|
LDR R0,=product STRD R4,R5,[R0] |
|
127 96 |
95 64 |
63 32 |
31 00 |
|
|
A×B (64 bits): |
|
|
|
|
| User Entry |
| Required for Product |
| Not Required for Product |
| Final 64-Bit Product |
| Product Overflow |
|
| Product Underflow |
| Not Required: Operand is integer |
|