MOV (inverted wide immediate)

Move inverted wide immediate value

This instruction moves an inverted 16-bit immediate value to a register.

Encoding: Immediate packed into 16-bit value and 2-bit shift

313029282726252423222120191817161514131211109876543210
00100101
sfopchwimm16Rd

32-bit (sf == 0 && hw == 0x)

MOV <Wd>, #<imm>

Equivalent to: MOVN <Wd>, #<imm16>, LSL #<shift>

64-bit (sf == 1)

MOV <Xd>, #<imm>

Equivalent to: MOVN <Xd>, #<imm16>, LSL #<shift>

Explanations

<Wd>: Is the 32-bit name of the general-purpose destination register, encoded in the "Rd" field.
<imm>: For the "32-bit" variant: is a 32-bit immediate, the bitwise inverse of which can be encoded in "imm16:hw", but excluding 0xFFFF0000 and 0x0000FFFF
<imm>: For the "64-bit" variant: is a 64-bit immediate, the bitwise inverse of which can be encoded in "imm16:hw".
<Xd>: Is the 64-bit name of the general-purpose destination register, encoded in the "Rd" field.

Operational Notes

If PSTATE.DIT is 1: