8.12 Normal, long, wide, and narrow NEON operation

Many NEON data processing instructions are available in long, wide, and narrow variants. In long, wide, and narrow operation, the result vector is a different width from one or both operand vectors.

Normal operation

The operands are either doubleword or quadword vectors. The result vector is the same width, and usually the same type, as the operand vectors, for example:

VADD.I16 D0, D1, D2

You can specify that the operands and result of a normal instruction must all be quadwords by appending a Q to the instruction mnemonic. If you do this, the assembler produces an error if the operands or result are not quadwords.

Long operation

The operands are doubleword vectors and the result is a quadword vector. The elements of the result are usually twice the width of the elements of the operands, and the same type.

Long operation is specified using an L appended to the instruction mnemonic, for example:

VADDL.S16 Q0, D2, D3

Wide operation

One operand vector is doubleword and the other is quadword. The result vector is quadword. The elements of the result and the first operand are twice the width of the elements of the second operand.

Wide operation is specified using a W appended to the instruction mnemonic, for example:

VADDW.S16 Q0, Q1, D4

Narrow operation

The operands are quadword vectors, and the result is a doubleword vector. The elements of the result are half the width of the elements of the operands.

Narrow operation is specified using an N appended to the instruction mnemonic, for example:

VADDHN.I16 D0, Q1, Q2

Non-ConfidentialPDF file icon PDF versionARM DUI0473M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.