4.4.10. UMAAL

Unsigned Multiply Accumulate Accumulate Long.


UMAAL{cond} RdLo, RdHi, Rm, Rs



is an optional condition code (see Conditional execution).

RdLo, RdHi

are the destination registers for the 64-bit result. They also hold the two 32-bit accumulate operands.

Rm, Rs

are the registers holding the multiply operands.


The UMAAL instruction multiplies the 32-bit values in Rm and Rs, adds the two 32-bit values in RdHi and RdLo, and stores the 64-bit result to RdLo, RdHi.


Do not use r15 for any of RdLo, RdHi, Rm, or Rs.

RdLo and RdHi must be distinct registers, otherwise the results are unpredictable, that is, they cannot be relied upon.

Condition flags

This instruction does not change the flags.


This ARM instruction is available in ARMv6 and above, and E variants of ARMv5.

This 32-bit Thumb-2 instruction is available in T2 variants of ARMv6 and above.

There is no 16-bit Thumb version of this instruction.


    UMAAL       r8, r9, r2, r3
    UMAALGE     r2, r0, r5, r3
Copyright © 2002-2005 ARM Limited. All rights reserved.ARM DUI 0204F