Home/Instructions/VMSBC-VVM
VMSBC.VVM

RISC-V VMSBC.VVM Instruction Details

Instruction ManualR-type

Compute element-wise subtract borrow-out and write the Boolean result to mask destination vd.

Instruction Syntax

vmsbc.vvm vd, vs2, vs1, v0.t
Operand Breakdown
Destination rd: register receiving the operation result.
Source rs1: register holding the first operand.
Source rs2: register holding the second operand.
VVector IntegerCarry/Borrow

Instruction Behavior

VMSBC.VVM is a RISC-V V vector subtract borrow-out instruction. It does not write the integer sum or difference; it writes each element's borrow-out as a destination mask bit. The m-suffixed form uses v0.mask[i] as carry/borrow input. The destination is a mask register, not an ordinary SEW-width integer result.

Quick Understanding & Search Notes

VMSBC.VVM generates a borrow mask; in m forms, v0 is the carry/borrow input, not an ordinary execution mask.

Destination vd holds a one-bit mask result, one bit per element.
For m-suffixed forms, v0.mask[i] is an arithmetic input; the instruction is not using v0 to filter executed elements.
Pair with VADC/VSBC for multiword add/subtract.

Common Usage Scenarios

Multi-Precision Sub

Understand this scenario with real code like «vmsbc.vvm v1, v2, v3, v0.t».

BigInt

Understand this scenario with real code like «vmsbc.vvm v1, v2, v3, 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

Borrow=1 if pre-truncation diff negative
with borrow-in
The m-suffixed form operates on all body elements; v0 is carry/borrow input

FAQ

Does VMSBC.VVM write the add/subtract result?

No. It writes only carry or borrow mask bits; data results come from instructions such as VADC/VSBC.