Home/Instructions/VWMACC-VV
VWMACC.VV

RISC-V VWMACC.VV Instruction Details

Instruction ManualR-type

Signed widening integer multiply-accumulate.

Instruction Syntax

vwmacc.vv vd, vs1, vs2, vm
Operand Breakdown
Destination rd: register receiving the operation result.
Source rs1: register holding the first operand.
Source rs2: register holding the second operand.
VVector Operations

Instruction Behavior

VWMACC.VV multiplies two signed SEW operands and adds the 2*SEW product into wide vd.

Quick Understanding & Search Notes

VWMACC.VV is a widening multiply-accumulate instruction; old vd is the 2*SEW-wide accumulator.

The official operand order is vd, multiplier source, vs2, vm; the VX scalar is in rs1.
The product is 2*SEW wide and is added to old vd.
VWMACC uses signed multiplication; the unsigned form is VWMACCU.

Common Usage Scenarios

Bit Operations & Masks

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

Data Storing

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

Vector Operations

Understand this scenario with real code like «vwmacc.vv v8, v4, v12, 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

Old vd is the 2*SEW-wide accumulator and is overwritten.
Both multiply inputs are interpreted as signed integers.
The destination register group is 2*SEW wide and LMUL/EMUL constraints must be legal.

FAQ

Is destination vd single-width for VWMACC.VV?

No. vd is a 2*SEW-wide accumulator, and the old vd value participates in the addition.