ASR (immediate)

Arithmetic shift right (immediate)

This instruction shifts a register value right by an immediate number of bits, shifting in copies of the sign bit in the upper bits and zeros in the lower bits, and writes the result to the destination register.

Encoding: With sign replication to left and zeros to right

313029282726252423222120191817161514131211109876543210
00100110x11111
sfopcNimmrimmsRnRd

32-bit (sf == 0 && N == 0 && imms == 011111)

ASR <Wd>, <Wn>, #<shift>

Equivalent to: SBFM <Wd>, <Wn>, #<shift>, #31

64-bit (sf == 1 && N == 1 && imms == 111111)

ASR <Xd>, <Xn>, #<shift>

Equivalent to: SBFM <Xd>, <Xn>, #<shift>, #63

Explanations

<Wd>: Is the 32-bit name of the general-purpose destination register, encoded in the "Rd" field.
<Wn>: Is the 32-bit name of the general-purpose source register, encoded in the "Rn" field.
<shift>: For the "32-bit" variant: is the shift amount, in the range 0 to 31, encoded in the "immr" field.
<shift>: For the "64-bit" variant: is the shift amount, in the range 0 to 63, encoded in the "immr" field.
<Xd>: Is the 64-bit name of the general-purpose destination register, encoded in the "Rd" field.
<Xn>: Is the 64-bit name of the general-purpose source register, encoded in the "Rn" field.

Operational Notes

If PSTATE.DIT is 1: