5 A64 INSTRUCTION SET
5.7 Advanced SIMD
5.7.8 Vector Unary Arithmetic
ABSVd.<T>, Vn.<T>
Integer absolute value (vector). Where <T> is 8B, 16B, 4H, 8H, 2S, 4S or 2D. SQABS Vd.<T>, Vn.<T>
Signed integer saturating absolute (vector). Where <T> is 8B, 16B, 4H, 8H, 2S, 4S or 2D. FABS Vd.<T>, Vn.<T>
Floating-point absolute value (vector). Where <T> is 2S, 4S or 2D. NEG Vd.<T>, Vn.<T>
Integer negate (vector). Where <T> is 8B, 16B, 4H, 8H, 2S, 4S or 2D. SQNEGVd.<T>, Vn.<T>
Signed integer saturating negate (vector). Where <T> is 8B, 16B, 4H, 8H, 2S, 4S or 2D. FNEGVd.<T>, Vn.<T>
Floating-point negate (vector). Where <T> is 2S, 4S or 2D. CLSVd.<T>, Vn.<T>
Signed integer count leading sign bits (vector). Where <T> is 8B, 16B, 4H, 8H, 2S or 4S. CLZVd.<T>, Vn.<T>
Integer count leading zero bits (vector). Where <T> is 8B, 16B, 4H, 8H, 2S or 4S. CNTVd.<T>, Vn.<T>
Count non-zero bits (vector). Where <T> is 8B or 16B. NOTVd.<T>, Vn.<T>
Bitwise invert (vector). Where <T> is 8B or 16B (an assembler should accept any valid arrangement). Normally disassembled as MVN.
MVNVd.<T>, Vn.<T>
Bitwise invert (vector). Where <T> is 8B or 16B (an assembler should accept any valid arrangement). Alias for NOT Vd.<T>,Vn.<T>
SUQADDVd.<T>, Vn.<T>
Signed integer saturating accumulate of unsigned value (vector). Where <T> is 8B, 16B, 4H, 8H, 2S, 4S or 2D.
USQADDVd.<T>, Vn.<T>
Unsigned integer saturating accumulate of signed value (vector). Where <T> is 8B, 16B, 4H, 8H, 2S, 4S or 2D.
UADALPVd.<Td>, Vn.<Ts>
Unsigned integer add and accumulate long pairwise (vector). Where <Td>/<Ts> is 4H/8B, 8H/16B, 2S/4H, 4S/8H, 1D/2S or 2D/4S.
SADALPVd.<Td>, Vn.<Ts>
Signed integer add and accumulate long pairwise (vector). Where <Td>/<Ts> is 4H/8B, 8H/16B, 2S/4H, 4S/8H, 1D/2S or 2D/4S.
UADDLPVd.<Td>, Vn.<Ts>
Unsigned integer add long pair (vector). Where <Td>/<Ts> is 4H/8B, 8H/16B, 2S/4H, 4S/8H, 1D/2S or 2D/4S.
SADDLPVd.<Td>, Vn.<Ts>
Signed integer add long pair (vector). Where <Td>/<Ts> is 4H/8B, 8H/16B, 2S/4H, 4S/8H, 1D/2S or 2D/4S.
FCVTL Vd.<Td>, Vn.<Ts>
Floating-point convert long half-precision to single-precision, or single-precision to double-precision (vector). Where <Td>/<Ts> is 4S/4H or 2D/2S
FCVTL2Vd.<Td>, Vn.<Ts>
Floating-point convert long half-precision to single-precision, or single-precision to double-precision (vector, second part). Where <Td>/<Ts> is 4S/8H or 2D/4S
XTNVd.<Td>, Vn.<Ts>
Integer narrow (vector). Where <Td>/<Ts> is 8B/8H, 4H/4S, or 2S/2D. XTN2Vd.<Td>, Vn.<Ts>
Integer narrow (vector, second part). Where <Td>/<Ts> is 16B/8H, 8H/4S, or 4S/2D. SQXTUN Vd.<Td>, Vn.<Ts>
Signed integer saturating and unsigned narrow (vector). Where <Td>/<Ts> is 8B/8H, 4H/4S, or 2S/2D. SQXTUN2 Vd.<Td>, Vn.<Ts>
Signed integer saturating and unsigned narrow (vector, second part). Where <Td>/<Ts> is 16B/8H, 8H/4S, or 4S/2D.
UQXTN Vd.<Td>, Vn.<Ts>
Unsigned integer saturating narrow (vector). Where <Td>/<Ts> is 8B/8H, 4H/4S, or 2S/2D. UQXTN2 Vd.<Td>, Vn.<Ts>
Unsigned integer saturating narrow (vector, second part). Where <Td>/<Ts> is 16B/8H, 8H/4S, or 4S/2D. SQXTN Vd.<Td>, Vn.<Ts>
Signed integer saturating narrow (vector). Where <Td>/<Ts> is 8B/8H, 4H/4S, or 2S/2D. SQXTN2 Vd.<Td>, Vn.<Ts>
Signed integer saturating narrow (vector, second part). Where <Td>/<Ts> is 16B/8H, 8H/4S, or 4S/2D. FCVTN Vd.<Td>, Vn.<Ts>
Floating-point convert narrow single-precision to half-precision, or double-precision to single-precision (vector). Where <Td>/<Ts> is 4H/4S or 2S/2D.
FCVTN2 Vd.<Td>, Vn.<Ts>
Floating-point convert narrow single-precision to half-precision, or double-precision to single-precision (vector, second part). Where <Td>/<Ts> is 8H/4S or 4S/2D.
FCVTXN Vd.2S, Vn.2D
Floating-point convert narrow double-precision to single-precision with “exact” rounding (vector). The result is only suitable for further narrowing to half-precision without losing precision due to rounding twice. FCVTXN2 Vd.4S, Vn.2D
Floating-point convert narrow double-precision to single-precision with “exact” rounding (vector, second part). The result is only suitable for further narrowing to half-precision without losing precision due to rounding twice.
FRINTxVd.<T>, Vn.<T>
Floating-point round to integral (vector). Where <T> is 2S, 4S or 2D. The letter x selects the rounding mode: N (nearest, ties to even); A (nearest, ties away from zero), P (towards +Inf); M (towards –Inf), Z (towards zero), I (using FPCR rounding mode) and X (using FPCR rounding mode, with exactness test). FSQRTVd.<T>, Vn.<T>
Floating-point square root (vector). Where <T> is 2S, 4S or 2D. URECPEVd.<T>, Vn.<T>
Unsigned integer reciprocal estimate (vector). Where <T> is 2S or 4S. FRECPEVd.<T>, Vn.<T>
Floating-point reciprocal estimate (vector). Where <T> is 2S, 4S or 2D. URSQRTEVd.<T>, Vn.<T>
Unsigned integer reciprocal square root estimate (vector). Where <T> is 2S or 4S. FRSQRTE Vd.<T>, Vn.<T>
Floating-point reciprocal square root estimate (vector). Where <T> is 2S, 4S or 2D. RBIT Vd.<T>, Vn.<T>
Bit reverse (vector): reverses the bits within each byte vector element. Where <T> is 8B or 16B. REV16 Vd.<T>, Vn.<T>
Element reverse in 16-bit halfwords (vector). Where <T> is 8B or 16B. REV32 Vd.<T>, Vn.<T>
Element reverse in 32-bit words (vector). Where <T> is 8B, 16B, 4H, or 8H. REV64 Vd.<T>, Vn.<T>
Element reverse in 64-bit doublewords (vector). Where <T> is 8B, 16B, 4H, 8H, 2S or 4S.