16.6.3. Advanced SIMD integer multiply instructions

Table 16.19 shows the operation of the Advanced SIMD integer multiply instructions.

Table 16.19. Advanced SIMD integer multiply instructions

Instruction

Register format

CyclesSourceResult
123412

VMUL

VQDMLH

VQRDMLH

Dd,Dn,Dm

(.8 normal)

(.16 normal)

1Dn:N2Dm:N2Dm:N2-Dd:N6-

Qd,Qn,Qm

(.8 normal)

(.16 normal)

1

2

QnLo:N2

QnHi:N2

QmLo:N2

QmHi:N2

-

-

-

-

QdLo:N6

QdHi:N6

-

-

Dd,Dn,Dm

(.32 normal)

1

2

Dn:N2

-

Dm:N1

-

-

-

-

-

-

Dd:N6

-

-

Qd,Qn,Qm

(.32 normal)

1

2

3

4

QnLo:N2

-

QnHi:N2

-

QmLo:N1

-

QmHi:N1

-

-

-

-

-

-

-

-

-

-

QdLo:N6

-

QdHi:N6

-

-

-

-

VMUL

VQDMUL

Qd,Dn,Dm

(.16.8 long)

(.32.16 long)

1Dn:N2Dm:N2--QdLo:N6QdHi:N6

Qd,Dn,Dm

(.64.32 long)

1

2

Dn:N2

-

Dm:N1

-

-

-

-

-

-

QdLo:N6

-

QdHi:N6

VMLA[1]

VMLSa

Dd,Dn,Dm

(.8 normal)

(.16 normal)

1

Dn:N2

Dm:N2

Dd:N3

-

Dd:N6

-

Qd,Qn,Qm

(.8 normal)

(.16 normal)

1

2

QnLo:N2

QnHi:N2

QmLo:N2

QmHi:N2

QdLo:N3

QdHi:N3

-

-

QdLo:N6

QdHi:N6

-

-

Dd,Dn,Dm

(.32 normal)

1

2

Dn:N2

-

Dm:N1

-

Dd:N3

-

-

-

Dd:N6

-

-

Qd,Qn,Qm

(.32 normal)

1

2

3

4

QnLo:N2

-

QnHi:N2

-

QmLo:N1

-

QmHi:N1

-

QdLo:N3

-

QdHi:N3

-

-

-

-

-

-

QdLo:N6

-

QdHi:N6

-

-

-

-

VMLAa

VMLSa

VQDMLAa

VQDMLSa

Qd,Dn,Dm

(.16.8 long)

(.32.16 long)

1

Dn:N2

Dm:N2

QdLo:N3

QdHi:N3

QdLo:N6

QdHi:N6

Qd,Dn,Dm

(.64.32 long)

1

2

Dn:N2

-

Dm:N1

-

QdLo:N3

-

QdHi:N3

-

-

QdLo:N6

-

QdHi:N6

VMUL

VQDMLH

VQRDMLH

Dd,Dn,Dm[x]

(.16 scalar)

1

Dn:N2

Dm:N1

-

-

Dd:N6

-

Qd,Qn,Dm[x]

(.16 scalar)

1

2

QnLo:N2

QnHi:N2

Dm:N1

-

-

QdLo:N6

QdHi:N6

-

Dd,Dn,Dm[x]

(.32 scalar)

1

2

Dn:N2

-

Dm:N1

-

-

-

-

-

-

Dd:N6

-

-

Qd,Qn,Dm[x]

(.32 scalar)

1

2

3

4

QnLo:N2

-

Qnhi:N2

-

Dm:N1

-

-

-

-

-

-

-

-

-

-

-

-

QdLo:N6

-

QdHi:N6

-

-

-

-

VMUL

VQDMUL

Qd,Dn,Dm[x]

(.32.16 long scalar)

1

Dn:N2

Dm:N1

-

-

QdLo:N6

QdHi:N6

Qd,Dn,Dm[x]

(.64.32 long scalar)

1

2

Dn:N2

-

Dm:N1

-

-

-

-

-

-

QdLo:N6

-

QdHi:N6

VMLAa

VMLSa

Dd,Dn,Dm[x]

(.16 scalar)

1

Dn:N2

Dm:N1

Dd:N3

-

Dd:N6

-

Qd,Qn,Dm[x]

(.16 scalar)

1

2

QnLo:N2

QnHi:N2

Dm:N1

-

QdLo:N3

QdHi:N3

-

-

QdLo:N6

QdHi:N6

-

-

Dd,Dn,Dm[x]

(.32 scalar)

1

2

Dn:N2

-

Dm:N1

-

Dd:N3

-

-

-

-

Dd:N6

-

-

Qd,Qn,Dm[x]

(.32 scalar)

1

2

3

4

QnLo:N2

-

QnHi:N2

-

Dm:N1

-

-

-

QdLo:N3

-

QdHi:N3

-

-

-

-

-

-

QdLo:N6

-

QdHi:N6

-

-

-

-

VMLAa

VMLSa

VQDMLAa

VQDMLSa

Qd,Dn,Dm[x]

(.32.16 long scalar)

1

Dn:N2

Dm:N1

QdLo:N3

QdHi:N3

QdLo:N6

QdHi:N6

Qd,Dn,Dm[x]

(.64.32 long scalar)

1

2

Dn:N2

-

Dm:N1

-

QdLo:N3

-

QdHi:N3

-

-

QdLo:N6

-

QdHi:N6

[1] If a multiply-accumulate follows a multiply or another multiply-accumulate, and depends on the result of that first instruction, then if the dependency between both instructions are of the same type and size, the processor uses a special multiplier accumulator forwarding. This special forwarding means the multiply instructions can issue back-to-back because the result of the first instruction in N5 is forwarded to the accumulator of the second instruction in N4. If the size and type of the instructions do not match, then Dd or Qd is required in N3. This applies to combinations of the multiply-accumulate instructions VMLA, VMLS, VQDMLA, and VQDMLS, and the multiply instructions VMUL and VQDMUL.


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