• No results found

Vector Widening/Narrowing Arithmetic

5 A64 INSTRUCTION SET

5.7 Advanced SIMD

5.7.6 Vector Widening/Narrowing Arithmetic

UABAL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer absolute difference and accumulate long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S.

UABAL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer absolute difference and accumulate long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

SABAL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer absolute difference and accumulate long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S.

SABAL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer absolute difference and accumulate long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

UABDL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer absolute difference long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. UABDL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer absolute difference long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

SABDL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer absolute difference long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. SABDL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer absolute difference long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

UADDL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer add long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. UADDL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer add long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. SADDL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer add long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. SADDL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer add long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. USUBL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer subtract long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. USUBL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer subtract long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. SSUBL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer subtract long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. SSUBL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

UMLAL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer multiply-accumulate long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. UMLAL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer multiply-accumulate long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

SMLAL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer multiply-accumulate long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. SMLAL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer multiply-accumulate long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

UMLSL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer multiply-subtract from accumulator long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S.

UMLSL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer multiply-subtract from accumulator long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

SMLSL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer multiply-subtract from accumulator long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S.

SMLSL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer multiply-subtract from accumulator long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S.

UMULL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer multiply long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. UMULL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Unsigned integer multiply long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. SMULL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer multiply long (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. SMULL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer multiply long (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. PMULL Vd.8H, Vn.8B, Vm.8B

Polynomial multiply long (vector). PMULL2 Vd.8H, Vn.16B, Vm.16B

Polynomial multiply long (vector, second part). SQDMLAL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer saturating doubling multiply accumulate long (vector). Where the <Td>/<Ts> is 4S/4H or 2D/2S.

SQDMLAL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer saturating doubling multiply accumulate long (vector, second part). Where the <Td>/<Ts> is 4S/8H or 2D/4S.

SQDMLSL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer saturating doubling multiply subtract from accumulator long (vector). Where the <Td>/<Ts> is 4S/4H or 2D/2S.

SQDMLSL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer saturating doubling multiply subtract from accumulator long (vector, second part). Where the <Td>/<Ts> is 4S/8H or 2D/4S.

SQDMULL Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer saturating doubling multiply long (vector). Where the <Td>/<Ts> is 4S/4H or 2D/2S. SQDMULL2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Signed integer saturating doubling multiply long (vector, second part). Where the <Td>/<Ts> is 4S/8H or 2D/4S.

UADDW Vd.<Td>, Vn.<Td>, Vm.<Ts>

Unsigned integer add wide (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. UADDW2 Vd.<Td>, Vn.<Td>, Vm.<Ts>

Unsigned integer add wide (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. SADDW Vd.<Td>, Vn.<Td>, Vm.<Ts>

Signed integer add wide (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. SADDW2 Vd.<Td>, Vn.<Td>, Vm.<Ts>

Signed integer add wide (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. USUBW Vd.<Td>, Vn.<Td>, Vm.<Ts>

Unsigned integer subtract wide (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. USUBW2 Vd.<Td>, Vn.<Td>, Vm.<Ts>

Unsigned integer subtract wide (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. SSUBW Vd.<Td>, Vn.<Td>, Vm.<Ts>

Signed integer subtract wide (vector). Where the <Td>/<Ts> is 8H/8B, 4S/4H or 2D/2S. SSUBW2 Vd.<Td>, Vn.<Td>, Vm.<Ts>

Signed integer subtract wide (vector, second part). Where the <Td>/<Ts> is 8H/16B, 4S/8H or 2D/4S. RADDHN Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer rounding add and narrow high half (vector). Where the <Td>/<Ts> is 8B/8H, 4H/4S or 2S/2D. RADDHN2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer rounding add and narrow high half (vector, second part). Where the <Td>/<Ts> is 16B/8H, 8H/4S or 4S/2D.

RSUBHN Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer rounding subtract and narrow high half (vector). Where the <Td>/<Ts> is 8B/8H, 4H/4S or 2S/2D. RSUBHN2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer rounding subtract and narrow high half (vector, second part). Where the <Td>/<Ts> is 16B/8H, 8H/4S or 4S/2D.

ADDHN Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer add and narrow high half (vector). Where the <Td>/<Ts> is 8B/8H, 4H/4S or 2S/2D. ADDHN2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer add and narrow high half (vector, second part). Where the <Td>/<Ts> is 16B/8H, 8H/4S or 4S/2D. SUBHN Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer subtract and narrow high half (vector). Where the <Td>/<Ts> is 8B/8H, 4H/4S or 2S/2D. SUBHN2 Vd.<Td>, Vn.<Ts>, Vm.<Ts>

Integer subtract and narrow high half (vector, second part). Where the <Td>/<Ts> is 16B/8H, 8H/4S or 4S/2D.