What does the vm operand control for VFDIV.VF?
With vm=0, only active elements selected by v0.t execute; vm=1 is unmasked. The page formula is vd[i] = vs2[i] / f[rs1].
VFDIV.VF is an RVV single-width vector-scalar floating-point divide instruction with syntax vfdiv.vf vd, vs2, rs1, vm; each active element computes vd[i] = vs2[i] / f[rs1].
VFDIV.VF divides each active vector element by a floating-point scalar within vl. The scalar source is floating-point register f[rs1], not integer x[rs1]; use VFRDIV.VF for f[rs1] / vs2[i]. Rounding mode, NaNs, infinities, divide-by-zero, and exception flags follow the official RVV floating-point rules.
Decode the OP-V encoding and execute lane-wise FP division with the second source from scalar f[rs1].
lane 0: 1 / 1.5 -> 0.6666666865348816
This lane follows the current-step highlight; the remaining lane results appear below.
V-extension FP instructions use the OP-V major opcode, with funct6, source registers, vm, funct3, vd, and opcode fields.
The teaching context fixes VLEN=4096, LMUL=m1, vstart=0, enabled VS/FS, and supported SEW. FP inputs are first represented as binary32/64. VL=0 updates no destination elements; same-width source/destination overlap is allowed. Inactive and tail values follow ma/ta without definite displayed values.
VFDIV.VF divides each vs2[i] by the same FP scalar f[rs1]; it is not reverse division and does not read an integer GPR as the scalar source.
vd and vs2 are SEW-wide vector groups; same-EEW source/destination overlap is allowed. The assembly vm operand is optional v0.t; omitting it means vm=1.
rs1 selects FP register f0–f31 or an ABI alias; with FLEN>SEW, valid NaN-boxing is required or canonical NaN is supplied. Compute vs2[i]/f[rs1].
Require V, enabled VS/FS, and supported vtype. V supports binary32/64; these instructions at SEW=16 require Zvfh. VS/FS=Off raises illegal instruction; with H and virtualization V=1, vsstatus.VS/FS must also be enabled.
Active elements satisfy vstart≤i<vl and (vm=1 or v0[i]=1). Prestart elements are unchanged; inactive/tail elements follow vma/vta. VL=0 or vstart≥vl leaves the entire destination unchanged; successful completion resets vstart=0.
Masked vd cannot overlap v0; v0 cannot supply both an EEW=1 mask and SEW data source. Invalid frm use is reserved even at VL=0 or vstart≥vl; an illegal-instruction exception is not guaranteed. Only active-element exceptions accrue in fflags; fixed-point vxrm is not used.
The FP quotient rounds using dynamic frm. The animation fixes RNE and shows only finite results and non-zero divisors; legal zero divisors, NaNs, infinities, overflow, and fflags are outside this model.
Assume V/VS/FS enabled, frm=RNE, vstart=0, supported e32,m1, VLMAX≥4 and a0=4. The example is unmasked, so all four body elements execute. Initial values and results: v2=[1,2,-3,4.5], ft0=1.5 → v1=[0.6666666865348816,1.3333333730697632,-2,3]. VF scalars are assumed validly NaN-boxed; tails follow ta without assumed zeroing.
Assume V/VS/FS enabled, frm=RNE, vstart=0, supported e32,m1, VLMAX≥4 and a0=4. The example is unmasked, so all four body elements execute. Initial values and results: v2=[1,2,-3,4.5], ft0=1.5 → v1=[0.6666666865348816,1.3333333730697632,-2,3]. VF scalars are assumed validly NaN-boxed; tails follow ta without assumed zeroing.
Assume V/VS/FS enabled, frm=RNE, vstart=0, supported e32,m1, VLMAX≥4 and a0=4. The example is unmasked, so all four body elements execute. Initial values and results: v2=[1,2,-3,4.5], ft0=1.5 → v1=[0.6666666865348816,1.3333333730697632,-2,3]. VF scalars are assumed validly NaN-boxed; tails follow ta without assumed zeroing.
With vm=0, only active elements selected by v0.t execute; vm=1 is unmasked. The page formula is vd[i] = vs2[i] / f[rs1].
No. Ordinary RVV floating-point operations use the floating-point rounding mode frm and set FP exception flags; vxrm is for fixed-point rounding instructions.
Divide-by-zero, 0/0, NaN operands, and infinity inputs are handled by the FP rules. Results, rounding, and fflags follow the official RVV floating-point rules; this page does not simplify them into integer-style fixed results.