ARM Instruction Reference

4.4.7SMLALxy

Signed multiply-accumulate (16-bit by 16-bit, 64-bit accumulate).

Syntax

SMLAL<x><y>{cond} RdLo, RdHi, Rm, Rs

where:

<x>

is either B or T. B means use the bottom end (bits [15:0]) of Rm, T means use the top end (bits [31:16]) of Rm.

<y>

is either B or T. B means use the bottom end (bits [15:0]) of Rs, T means use the top end (bits [31:16]) of Rs.

cond

is an optional condition code (see Conditional execution on page 4-4).

RdHi, RdLo are the ARM registers for the result. They also hold the add-in value.

Rm, Rs are the ARM registers holding the values to be multiplied.

r15 cannot be used for any of RdHi, RdLo, Rm, or Rs.

Any combination of RdHi, RdLo, Rm, or Rs can use the same registers.

Usage

The SMLALxy instruction multiplies the signed integer from the selected half of Rs by the signed integer from the selected half of Rm, and adds the 32-bit result to the 64-bit value in RdHi and RdLo.

Condition flags

This instruction does not affect any flags.

Note

This instruction cannot raise an exception. If overflow occurs on this instruction, the result wraps round without any warning.

Architectures

This instruction is available in all E variants of ARM architecture v5 and above.

ARM DUI 0068B

Copyright © 2000, 2001 ARM Limited. All rights reserved.

4-51

Page 161
Image 161
ARM VERSION 1.2 manual SMLALxy