VMV.V.V

RISC-V VMV.V.V Instruction Details

Instruction ManualOPIVV

Copies same-lane vs1 elements to vd body elements as an unmasked vector move.

Instruction Syntax

vmv.v.v vd, vs1
Operand Breakdown
vd is a group at current LMUL; vs1 is a same-width vector source and may equal vd.
32-bit OP-V: opcode=1010111, funct6=010111, funct3=000, vm=1; vs2=00000 is fixed; no v0.t operand.
Each body element copies the same-index vs1 element. Body is vstart≤i<vl; tails follow vta and vma does not affect this unmasked form. vl=0 updates no destination elements.
Require V 1.0, valid supported vtype and non-Off mstatus.VS; with H and virtualization V=1, vsstatus.VS must also be non-Off. Successful completion resets vstart to 0.
VVector Data MovementVector-Vector Transfer

Instruction Behavior

VMV.V.V is an unmasked vector integer move form in the RISC-V V extension. It copies same-lane vs1 elements to vd body elements; the encoding fixes vm=1 and vs2=v0, and the syntax has no v0.t execution mask.

VMV.V.V Decode And Execute Animation

Starts from OP-V encoding fields, then shows how the unmasked VMV.V move form writes the current source value into vd body elements.

Instruction input
vmv.v.v
Execution Context

The teaching model fixes LMUL=m1 and vstart=0 and shows only body elements in the selected VL. It fixes VLEN=4096, VLMAX=4096/16=256, and assumes support for the selected SEW; equal vector sources require equal elements. VMV.V fixes vm=1 and vs2=0; vector sources copy, while scalars broadcast by the XLEN/SEW rule. Tails follow vtype.vta; vma does not affect body.

OP-V encodingvmv.v.v
funct6
010111
vm
1
vs2
00000
vs1
01100
funct3
000
vd
00100
opcode
1010111
lane
0
1
2
3
4
5
6
7
copy
copy
copy
copy
copy
copy
copy
copy
v12
0x0080
0x008b
0x0096
0x00a1
0x00ac
0x00b7
0x00c2
0x00cd
active
1
1
1
1
1
1
1
1
v4
...
...
...
...
...
...
...
...
Current step

Show OP-V 32-bit encoding fields

vmv.v.v uses OP-V encoding. The animation places fixed fields, register fields, vm, and the vs1 field in one encoding strip.

This animation shows only ISA-visible relationships from the official V extension: OP-V field decode, active-element reads, SEW-width integer same-lane copy, fixed unmasked move, and vd writeback. It does not model pipelines, caches, or timing.

Quick Understanding & Search Notes

VMV.V.V is an unmasked VMV.V vector copy form that copies same-lane body elements from vs1 to vd. It performs no arithmetic and no memory access.

Require V 1.0, valid supported vtype and non-Off mstatus.VS; with H and virtualization V=1, vsstatus.VS must also be non-Off.
32-bit OP-V: funct6=010111, funct3=000, vm=1, vs2=00000; syntax has only vd and vs1, with no v0.t.
Every body element vstart≤i<vl copies the source; prestart is unchanged. Tails follow vta: retain old values or permit all ones; vma does not select body elements.
vs1 is a same-width vector source grouped at current LMUL. Source and destination may be equal: body bits stay unchanged, but tail-agnostic may change tails, so this is not a HINT.
vstart≥vl (including vl=0) updates no destination elements; successful completion resets vstart to 0.

Vector Execution Context

vd is a group at current LMUL; vs1 is a same-width vector source and may equal vd.

32-bit OP-V: opcode=1010111, funct6=010111, funct3=000, vm=1; vs2=00000 is fixed; no v0.t operand.

Each body element copies the same-index vs1 element. Body is vstart≤i<vl; tails follow vta and vma does not affect this unmasked form. vl=0 updates no destination elements.

Require V 1.0, valid supported vtype and non-Off mstatus.VS; with H and virtualization V=1, vsstatus.VS must also be non-Off. Successful completion resets vstart to 0.

The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture — Version 20260120, Chapter 31

Common Usage Scenarios

Copy vector-register body elements

Assume enabled V/VS, valid m1, VLEN≥128, initialized sources and vstart=0; e8, vl=4, v2[0..3]=[0x80,2,7,0xff] → v1[0..3]=[0x80,2,7,0xff]. Tails follow vta without assumed zeroing.

Pre-Use Checklist

Syntax Check
  • vd is a group at current LMUL; vs1 is a same-width vector source and may equal vd.
  • 32-bit OP-V: opcode=1010111, funct6=010111, funct3=000, vm=1; vs2=00000 is fixed; no v0.t operand.
Semantic Check
  • Each body element copies the same-index vs1 element. Body is vstart≤i<vl; tails follow vta and vma does not affect this unmasked form. vl=0 updates no destination elements.
  • Require V 1.0, valid supported vtype and non-Off mstatus.VS; with H and virtualization V=1, vsstatus.VS must also be non-Off. Successful completion resets vstart to 0.

Pitfalls / Common Confusions

VMV.V is an unmasked move form, and the syntax has no v0.t.
The encoding fixes vs2=v0 and vm=1; do not interpret it as conditional execution under v0.
Tail elements still follow the current tail policy.

FAQ

Can VMV.V.V take v0.t?

No. VMV.V is an unmasked move form; use VMERGE when conditional selection under v0 is required.

Does VMV.V.V access memory or perform arithmetic?

No. It only copies bit patterns through registers and current body elements.