Normal, long, wide, and narrow Advanced SIMD instructions
Many A32/T32 and A64 Advanced SIMD data processing instructions are available in Normal, Long, Wide, Narrow, and saturating variants.
- Normal operation
The operands can be any of the vector types. 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 A32/T32 Advanced SIMD instruction must all be quadwords by appending a
Qto the instruction mnemonic. If you do this, armasm 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
Lappended 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
Wappended 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
Nappended to the instruction mnemonic, for example:
VADDHN.I16 D0, Q1, Q2