mov

Move Element to Element

MOV <Vd>.<Ts>[<index1>], <Vn>.<Ts>[<index2>]

Moves a vector element to another vector element (Alias for INS).

Details

Moves a single vector element from a source vector to a specified element position in a destination vector (this is an alias for INS when source and destination are both vector registers). The element indices are encoded in the imm5 field, which must support dual index encoding. This is a NEON SIMD instruction available in AArch64 only. No condition flags are affected.

Pseudocode Operation

src_index ← decode_src_index_from_imm5(imm5);
dst_index ← decode_dst_index_from_imm5(imm5);
element_size ← decode_element_size(imm5);
Vd.<element_size>[dst_index] ← Vn.<element_size>[src_index];

Example

MOV v0.4s.Ts[index1], v1.4s.Ts[index2]

Encoding

Binary Layout
0
1
1
01110000
imm5
0
imm4
1
Rn
Rd
 
Format SIMD Copy
Opcode 0x6E000400
Extension NEON (SIMD)

Operands

  • Vd
    Destination SIMD/FP vector register
  • index1
    Dst Index
  • Vn
    First source SIMD/FP vector register
  • index2
    Src Index

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0x11000000 MOV <Wd|WSP>, <Wn|WSP> A64 0 | 0 | 0 | 100010 | 0 | 000000000000 | Rn | Rd
0x91000000 MOV <Xd|SP>, <Xn|SP> A64 1 | 0 | 0 | 100010 | 0 | 000000000000 | Rn | Rd
0x25004000 MOV <Pd>.B, <Pg>/Z, <Pn>.B A64 00100101 | 0 | 0 | 00 | Pm | 01 | Pg | 0 | Pn | 0 | Pd
0x05100000 MOV <Zd>.<T>, <Pg>/Z, #<imm>{, <shift>} A64 00000101 | size | 01 | Pg | 0 | 0 | sh | imm8 | Zd
0x05104000 MOV <Zd>.<T>, <Pg>/M, #<imm>{, <shift>} A64 00000101 | size | 01 | Pg | 0 | 1 | sh | imm8 | Zd
0x0528A000 MOV <Zd>.<T>, <Pg>/M, <R><n|SP> A64 00000101 | size | 101000101 | Pg | Rn | Zd
0x05208000 MOV <Zd>.<T>, <Pg>/M, <V><n> A64 00000101 | size | 100000100 | Pg | Vn | Zd
0x5E000400 MOV <V><d>, <Vn>.<T>[<index>] A64 01 | 0 | 11110000 | imm5 | 0 | 0000 | 1 | Rn | Rd
0x2538C000 MOV <Zd>.<T>, #<imm>{, <shift>} A64 00100101 | size | 111 | 0 | 0 | 011 | sh | imm8 | Zd
0x05203800 MOV <Zd>.<T>, <R><n|SP> A64 00000101 | size | 100000001110 | Rn | Zd
0x05202000 MOV <Zd>.<T>, <Zn>.<T>[<imm>] A64 00000101 | imm2 | 1 | tsz | 001000 | Zn | Zd
0x05202000 MOV <Zd>.<T>, <V><n> A64 00000101 | imm2 | 1 | tsz | 001000 | Zn | Zd
0x05C00000 MOV <Zd>.<T>, #<const> A64 00000101110000 | imm13 | Zd
0x6E000400 MOV <Vd>.<Ts>[<index1>], <Vn>.<Ts>[<index2>] A64 0 | 1 | 1 | 01110000 | imm5 | 0 | imm4 | 1 | Rn | Rd

Description

Move vector element to another vector element. This instruction copies the vector element of the source SIMD&FP register to the specified vector element of the destination SIMD&FP register. This instruction can insert data into individual elements within a SIMD&FP register without clearing the remaining bits to zero. Depending on the settings in the CPACR_EL1, CPTR_EL2, and CPTR_EL3 registers, and the current Security state and Exception level, an attempt to execute the instruction might be trapped.