How is it different from VFMV.S.F?
VFMV.S.F writes only element 0; VFMV.V.F broadcasts the scalar to active elements.
Copy scalar f register rs1 to all active elements of vd; tail follows policy.
VFMV.V.F broadcasts floating-point scalar f[rs1] to all active elements of the vd vector register group. It is fixed at vm=1 with vs2=v0; other vs2 values are reserved. It shares an encoding with VFMERGE.VFM, whose vm is fixed at 0. At SEW=16, this instruction is defined only when Zvfh is implemented.
The teaching context fixes SEW=FLEN=64, VLEN=4096, valid vtype, frm=RNE, enabled VS/FS, and support for the selected vstart. Inputs are represented as finite binary64 before copying their bits. The model shows movement, encoding, and vstart/vl conditions, without simulating NaNs, exception flags, or microarchitecture.
VFMV.V.F shares an encoding with VFMERGE.VFM; only vm=1 with vs2=v0 is this instruction.
f[ft0] -> vd[0]..vd[3]
VFMV.V.F uses OP-V; vm is fixed to 1, vs2 is fixed to v0 and other vs2 values are reserved.
VFMV.V.F is FP scalar broadcast, writing f[rs1] to the current active elements.
Syntax is vd, rs1. vd selects a vector register group and rs1 selects FP f0–f31 (or an ABI name). The scalar is broadcast to active body elements.
funct6=010111, funct3=101, vs2=v0, vm=1; other vs2 values are reserved. It shares encoding with vm=0 VFMERGE.VFM, but has no execution mask.
Only vstart≤i<vl receive the scalar; prestart is unchanged and tails follow vta. At vstart≥vl (including vl=0) no destination elements, including tails, change; successful execution resets vstart=0.
At FLEN>SEW the scalar must be validly NaN-boxed or is read as canonical NaN; FLEN<SEW is reserved. V supports FP32/64; SEW=16 broadcast requires Zvfh. The animation fixes SEW=FLEN=64, VLEN=4096, LMUL=m1, and support for the selected vstart.
Require valid vtype, supported FP widths and matching scalar FP extensions, and enabled VS/FS; with H and virtualization V=1, vsstatus.VS/FS must also be enabled. Invalid frm use is reserved even at vl=0 or for operations that do not round; vxrm does not control FP operations.
Assume V/VS/FS enabled, valid vtype, frm=RNE, supported e32,m1 and required FP formats, FLEN=64, VLMAX≥4, a0=4, and vstart=0 after vsetvli. ft0 is validly NaN-boxed at FLEN=64. The example is unmasked: ft0=1.5 → v1[0..3]=[1.5,1.5,1.5,1.5]. Elements after vl are tail; ta does not guarantee zeros.
Assume V/VS/FS enabled, valid vtype, frm=RNE, supported e32,m1 and required FP formats, FLEN=64, VLMAX≥4, a0=4, and vstart=0 after vsetvli. ft0 is validly NaN-boxed at FLEN=64. The example is unmasked: ft0=1.5 → v1[0..3]=[1.5,1.5,1.5,1.5]. Elements after vl are tail; ta does not guarantee zeros.
VFMV.S.F writes only element 0; VFMV.V.F broadcasts the scalar to active elements.