USHLLT

Unsigned shift left long by immediate (top)

This instruction shifts left by immediate each odd-numbered unsigned element of the source vector, and places the results in the overlapping double-width elements of the destination vector. The immediate shift amount is an unsigned value in the range 0 to number of bits per element minus 1. This instruction is unpredicated.

SVE2
(FEAT_SVE2 || FEAT_SME)

313029282726252423222120191817161514131211109876543210
010001010tszh0tszlimm3101011ZnZd
UT

Encoding

USHLLT <Zd>.<T>, <Zn>.<Tb>, #<const>

Decode for this encoding

if !IsFeatureImplemented(FEAT_SVE2) && !IsFeatureImplemented(FEAT_SME) then EndOfDecode(Decode_UNDEF); end; let tsize : bits(3) = tszh::tszl; if tsize == '000' then EndOfDecode(Decode_UNDEF); end; let esize : integer{} = 8 << HighestSetBitNZ(tsize); let n : integer = UInt(Zn); let d : integer = UInt(Zd); let shift : integer = UInt(tsize::imm3) - esize;

Assembler Symbols

<Zd>

Is the name of the destination scalable vector register, encoded in the "Zd" field.

<T>

Is the size specifier, encoded in (tszh :: tszl):

tszh tszl <T>
0 00 RESERVED
0 01 H
0 1x S
1 xx D
<Zn>

Is the name of the source scalable vector register, encoded in the "Zn" field.

<Tb>

Is the size specifier, encoded in (tszh :: tszl):

tszh tszl <Tb>
0 00 RESERVED
0 01 B
0 1x H
1 xx S
<const>

Is the immediate shift amount, in the range 0 to number of bits per element minus 1, encoded in "tszh:tszl:imm3".

Operational information

This instruction is a data-independent-time instruction as described in About PSTATE.DIT.


2025-09_diff_tag 2025-11-28 16:29:05

Copyright © 2010-2025 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.