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
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.