16.2.3. Multiply instructions

The ARM multiply instructions include MLA, MUL, SLMAxy, SMLAD, SMLAL, SMLALxy, SMLALD, SMLAWy, SMLD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULxy, SMULL, SMULW, SMUSD, UMAAL, UMLAL, UMULL.

Table 16.4 shows the operation of multiply instructions.

Table 16.4. Multiply instructions

Multiply typeCyclesSource1Source2Source3Source4Result1Result2
Normal: MUL2Rm:E1Rs:E1[Rd:E3]{Rn:E4}[1]Rd:E5-
Long: SMULL, UMULL3Rm:E1Rs:E1{[RdLo:E3]}{[RdHi:E3]}RdLo:E5RdHi:E5
Long: SMLAL, UMLAL, UMAAL3Rm:E1Rs:E1{[RdLo:E2]}{[RdHi:E1]}RdLo:E5RdHi:E5

Halfword: SMLAxy,

SMULxy

2Rm:E1Rs:E1[Rd:E2]{Rn:E4}aRd:E5-

Halfword: SMLALxy

2Rm:E1Rs:E1{[RdLo:E1]}{[RdHi:E2]}RdLo:E5RdHi:E5
Word-halfword: SMULWy1Rm:E1Rs:E1[Rd:E2]-Rd:E5-
Word-halfword: SMLAWy2Rm:E1Rs:E1[Rd:E2]Rn:E4aRd:E5-
Most significant word2Rm:E1Rs:E1[Rd:E3]{Rn:E4}aRd:E5-

Dual halfword: SMUAD,

SMUSD

1Rm:E1Rs:E1[Rd:E2]-Rd:E5-

Dual halfword: SMLAD, SMLSD

2Rm:E1Rs:E1[Rd:E2]{Rn:E4}aRd:E5-

Dual halfword:

SMLALD, SMLSLD

2Rm:E1Rs:E1{[RdLo:E1]}{[RdHi:E2]}RdLo:E5RdHi:E5

[1] A multiply that is followed by a MAC with a dependency on the accumulator, Rn register, triggers a special accumulator forwarding. This enables both instructions to issue back-to-back because Rn is required as a source in E4. If this accumulator forwarding is not used, Rn is required in E2.


Copyright © 2006-2009 ARM Limited. All rights reserved.ARM DDI 0344I
Non-Confidential