VMV1R.V

RISC-V VMV1R.V Instruction Details

Instruction ManualV-type

Copy the complete bit contents of 1 complete vector register, without element selection by current vl, SEW, or v0.t.

Instruction Syntax

vmv1r.v vd, vs2
Operand Breakdown
vd: destination vector-register group start; it must be aligned to NREG and the complete group must not pass v31.
vs2: source vector-register group start; it must be aligned to NREG and the complete group must not pass v31.
There is no ordinary vm/v0.t operand; the instruction copies complete register bit contents, not elements filtered by current vl or SEW.
VVector Data MovementWhole Register Move

Instruction Behavior

VMV1R.V is a RISC-V V whole-register move instruction. With NREG=1, it copies complete bit contents from the vector-register group starting at vs2 to the group starting at vd; the copy is for compiler vector-register shuffling without needing to know or change current vl.

VMV1R.V Decode And Execute Animation

Decode the OP-V whole-register move fields, then copy 1 complete vector register; current vl, SEW, and v0.t do not limit the copy range.

Instruction input
vmv1r.v
OP-V whole-register move encodingvmv1r.v
funct6
100111
vm
1
vs2
10000
simm[4:3]
00
simm[2:0] / NREG
000 -> 1
funct3
011
vd
01000
opcode
1010111
v16->v8
whole register 1
v16
0x00001000
0x00001011
0x00001022
0x00001033
0x00001044
0x00001055
0x00001066
0x00001077
v8
...
...
...
...
...
...
...
...
Current step

Show OP-V 32-bit encoding fields

Whole-register moves use the OPIVI encoding form. The animation places fixed fields, the complete simm[4:0] immediate, the source register group, and the destination register group in one encoding strip.

This animation shows only ISA-visible relationships from the official V extension: OP-V field decode, NREG=1 register-group selection, complete register-content copying, and vd writeback. It does not filter by vl, SEW, or v0.t and does not model pipelines, caches, or timing.

Quick Understanding & Search Notes

VMV1R.V copies the complete bit contents of a whole register group. It is not the same as a VMV.V.V body-element move; vl, SEW, and v0.t do not limit the copy range.

This page follows the official RISC-V V extension for whole-register moves: NREG=1, with simm[2:0]=000 in the OPIVI encoding using the NREG-1 code; the animation shows the full simm[4:0]=00000.
The syntax has only vd and vs2; the vm bit is fixed to 1, and there is no ordinary v0.t execution-mask operand in assembly syntax.
vd and vs2 are register-group starts; each start must satisfy NREG=1 alignment, and the complete group must remain within v0-v31.
The instruction copies complete vector-register bit contents, not active elements interpreted by current vl, SEW, LMUL, or tail/mask policy.
The official operational model uses the current SEW to compute evl: EEW=SEW, EMUL=NREG, and evl=EMUL*VLEN/SEW; this does not mean the copy is filtered element-by-element by current SEW. The ordinary vstart>=vl no-write rule does not apply, and vstart>=evl is reserved.

Vector Execution Context

When reading VMV1R.V, focus on whole-register group copying, not ordinary vector-lane execution. It uses whole-register move rules: vd and vs2 name register-group starts, and the complete VLEN-bit contents are copied.

Whole register group

NREG selects the number of consecutive vector registers; vd and vs2 are register-group starts and must be aligned to NREG.

Complete bit copy

All VLEN bits of each source register are copied, not active elements selected by current vl, SEW, LMUL, tail policy, or mask policy.

No v0.t mask

The vm bit is fixed to 1 and the assembly syntax has no ordinary execution-mask operand; v0.t does not disable part of the copy.

Official source: RISC-V V Standard Extension for Vector Operations

Common Usage Scenarios

Compiler register shuffle

Understand this scenario with real code like «vmv1r.v v8, v16».

Vector register group rearrangement

Understand this scenario with real code like «vmv1r.v v8, v16».

Complete vector-register group copy

Understand this scenario with real code like «vmv1r.v v8, v16».

Pre-Use Checklist

Syntax Check
  • Confirm vd and vs2 are vector-register group starts, not general-purpose registers.
  • Confirm vd/vs2 starts are aligned to NREG and the complete register groups do not pass v31.
Semantic Check
  • Confirm the instruction copies complete vector-register bit contents, not elements filtered by current vl, SEW, or v0.t.
  • Confirm the OPIVI encoding has vm=1 and simm[2:0] selects 1/2/4/8 registers as NREG-1.

Pitfalls / Common Confusions

The source and destination start registers must satisfy the NREG=1 register-group alignment constraint, and the group must not pass v31.
It has no ordinary vm syntax operand; do not read it as an element-wise move controlled by v0.t.
The copy range is not the current vl body elements and is not determined by current SEW.

FAQ

Does VMV1R.V copy only current vl elements?

No. A whole-register move copies the complete vector-register group, not elements selected by current vl or SEW.

Can VMV1R.V use a v0.t mask?

No. The syntax has no ordinary vm operand; it is encoded as an unmasked whole-register move.

What does NREG=1 imply for registers?

vd and vs2 name starts of consecutive register groups; each start must be 1-aligned and the group must not pass v31.