You copied the Doc URL to your clipboard.

LSL (register)

Logical Shift Left (register) shifts a register value left by a variable number of bits, shifting in zeros, and writes the result to the destination register. The variable number of bits is read from the bottom byte of a register.

This is an alias of MOV, MOVS (register-shifted register). This means:

It has encodings from the following instruction sets: A32 ( A1 ) and T32 ( T1 and T2 ) .

A1

313029282726252423222120191817161514131211109876543210
!= 111100011010(0)(0)(0)(0)RdRs0001Rm
condStype

Not flag setting

LSL{<c>}{<q>} {<Rd>,} <Rm>, <Rs>

is equivalent to

MOV{<c>}{<q>} <Rd>, <Rm>, LSL <Rs>

and is always the preferred disassembly.

T1

1514131211109876543210
0100000010RsRdm
op

Logical shift left

LSL<c>{<q>} {<Rdm>,} <Rdm>, <Rs> // (Inside IT block)

is equivalent to

MOV<c>{<q>} <Rdm>, <Rdm>, LSL <Rs>

and is the preferred disassembly when InITBlock().

T2

15141312111098765432101514131211109876543210
111110100000Rm1111Rd0000Rs
typeS

Not flag setting

LSL<c>.W {<Rd>,} <Rm>, <Rs> // (Inside IT block, and <Rd>, <Rm>, <type>, <Rs> can be represented in T1)

LSL{<c>}{<q>} {<Rd>,} <Rm>, <Rs>

is equivalent to

MOV{<c>}{<q>} <Rd>, <Rm>, LSL <Rs>

and is always the preferred disassembly.

Assembler Symbols

<c>

See Standard assembler syntax fields.

<q>

See Standard assembler syntax fields.

<Rdm>

Is the first general-purpose source register and the destination register, encoded in the "Rdm" field.

<Rd>

Is the general-purpose destination register, encoded in the "Rd" field.

<Rm>

Is the first general-purpose source register, encoded in the "Rm" field.

<Rs>

Is the second general-purpose source register holding a shift amount in its bottom 8 bits, encoded in the "Rs" field.

Operation

The description of MOV, MOVS (register-shifted register) gives the operational pseudocode for this instruction.

Was this page helpful? Yes No