• No results found

Vector Unary Arithmetic

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.