Home/Instructions/VNCLIPU-WV
VNCLIPU.WV

RISC-V VNCLIPU.WV Instruction Details

Instruction ManualR-type

VNCLIPU.WV is an RVV unsigned fixed-point narrowing clip instruction that rounds a 2*SEW source with vxrm and saturates to SEW.

Instruction Syntax

vnclipu.wv vd, vs2, vs1, vm
Operand Breakdown
vd: destination vector register group.
vs2/vs1 or scalar source: selected by suffixes such as .vv, .vx, .vi, or .vf.
vm: when present, vm=0 uses v0 as the execution mask and vm=1 is unmasked.
VVector Fixed-PointNarrowing/Clip

Instruction Behavior

VNCLIPU.WV reads each active 2*SEW-wide vs2 element, performs a fixed-point rounded right shift using a shift amount from the same-lane vs1 element, then clips into the unsigned SEW range and writes the SEW-wide vd result; any active saturation sets sticky vxsat.

VNCLIPU.WV Decode And Execute Animation

Starts from OP-V encoding fields, then shows how VNCLIPU reads 2*SEW-wide vs2, rounded-shifts right using the shift amount and vxrm, saturates into a unsigned SEW-wide vd result, and sets vxsat on saturation.

Instruction input
vnclipu.wv
OP-V encodingvnclipu.wv
funct6
101110
vm
0
vs2
01000
vs1
01100
funct3
000
vd
00100
opcode
1010111
lane
0
1
2
3
4
5
6
7
v8
0x00000123
0x00001ff0
0x000000ff
0x7fffffff
0x00000100
0x00000007
0x00000123
0x00001ff0
clip>>
clip>>
clip>>
clip>>
clip>>
clip>>
clip>>
clip>>
v12
0x0001
0x0004
0x0000
0x0008
0x0002
0x0013
0x0001
0x0004
v0.t
1
0
1
1
1
0
1
1
v4
...
-
...
...
...
-
...
...
vxsat
0
0
0
1
0
0
0
0
Current step

Show OP-V 32-bit encoding fields

vnclipu.wv 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, 2*SEW-to-SEW narrowing clip integer unsigned narrowing clip, vxrm fixed-point rounding, and vd writeback; this example sets sticky vxsat. It does not model pipelines, caches, or timing.

Quick Understanding & Search Notes

VNCLIPU.WV narrows a wide fixed-point intermediate back to SEW width: it applies a rounded right shift using the shift amount and vxrm, clips to the unsigned destination range, and records active-element saturation in vxsat.

The WV form uses OP-V encoding; funct6=101110, and funct3=000 selects the .wv operand form.
Source vs2 elements are interpreted at 2*SEW width and destination vd elements are SEW wide; the shift amount comes from the same-lane vs1 element.
Rounding is controlled by vxrm mode rnu, rne, rdn, or rod, followed by saturation into the unsigned destination range.
Only body elements within current vl and enabled by the execution mask participate; elements disabled by v0.t do not participate in this instruction's vxsat decision.
VNCLIPU does not set floating-point exception flags and does not use floating-point frm rounding.

Vector Execution Context

When reading VNCLIPU.WV, do not stop at the mnemonic. Official V-extension semantics also depend on the current vl, vtype, and mask state. The suffix and operand form determine whether sources are vector, scalar, or immediate values.

Check vl first

The current vl determines the number of body elements. Typical code executes vsetvli, vsetivli, or vsetvl before this instruction.

Then check vtype

The current vtype supplies SEW, LMUL, tail policy, and mask policy; these affect element width, register-group size, and inactive/tail destination elements.

Then check vm/v0

For ordinary vector instructions with vm, vm=0 uses v0 as the execution mask and vm=1 is unmasked. A few forms such as VMERGE use v0 as data-selection input.

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

Common Usage Scenarios

Fixed-point result narrowing

Understand this scenario with real code like «vnclipu.wv v8, v12, v4, v0.t».

Vector DSP scaled output

Understand this scenario with real code like «vnclipu.wv v8, v12, v4, v0.t».

Wide-to-narrow conversion that needs a saturation flag

Understand this scenario with real code like «vnclipu.wv v8, v12, v4, v0.t».

Pre-Use Checklist

Syntax Check
  • Confirm the current instruction format is R-type.
  • Confirm the operand order matches the example.
Semantic Check
  • Ensure the destination register usage is compatible with the calling convention.
  • Confirm this is not the lower-level form of a pseudo-instruction expansion.

Pitfalls / Common Confusions

VNCLIPU.WV uses 2*SEW-wide vs2 elements and writes SEW-wide vd results; do not read it as an ordinary single-width shift.
Rounding comes from the V extension fixed-point CSR vxrm, not floating-point frm.
VNCLIPU clips into the unsigned range; sticky vxsat is set only when an active element saturates.

FAQ

How is VNCLIPU.WV different from VNSRL/VNSRA?

VNCLIPU.WV rounds shifted-out bits using vxrm and saturates with vxsat when the result is outside the unsigned SEW range; VNSRL/VNSRA are narrowing shifts without saturation clipping.

When does VNCLIPU.WV set vxsat?

This instruction sets sticky vxsat when any active element has a rounded shifted result outside the unsigned SEW range and is clipped. Elements disabled by v0.t do not participate in that decision.