What does the vm operand control for VFSQRT.V?
With vm=0, only active elements selected by v0.t execute; vm=1 is unmasked. The page formula is vd[i] = sqrt(vs2[i]).
VFSQRT.V is an RVV single-width unary floating-point square-root instruction with syntax vfsqrt.v vd, vs2[, v0.t]; each active element computes vd[i] = sqrt(vs2[i]).
VFSQRT.V uses the OP-V VFUNARY1 form and has only vs2 and vm as source syntax operands; the encoded vs1 field selects the square-root operation and is not a user-written source register. An active finite negative input other than -0 produces a canonical NaN and sets NV; results, rounding, NaNs, infinities, and other exception flags follow the official RVV floating-point rules; fixed-point vxrm does not control this instruction. V defines SEW=32 and SEW=64; Zvfh is required only for SEW=16.
Decode the OP-V encoding and execute the VFUNARY1 square-root operation lane by lane: each active lane computes sqrt(vs2[i]).
lane 0: sqrt(1) -> 0x3f800000 (1)
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, valid vtype, enabled VS/FS, and valid frm=RNE, with the selected binary32/64 supported. Equal source registers require equal initial bits; same-width destination/source overlap is legal.VL=0 updates no destination elements, including tails; inactive and tail values follow ma/ta without definite displayed values. The animation accepts finite inputs and demonstrates RNE square root; negative inputs other than -0 return canonical NaN and show NV raised by this execution, while -0 retains its sign. NaN/infinity inputs, NX, and full accrued fflags are outside the model.
VFSQRT.V is unary vector FP square root: it reads only vs2 elements and writes sqrt(vs2[i]) to vd[i]; the encoded vs1 field is an operation selector, not a syntax source operand.
32-bit OP-V encoding: funct6=010011, funct3=001, opcode=1010111. vs1=00000 is a VFUNARY1 selector, not a second source register.
Read only vs2[i] and write sqrt(vs2[i]) to vd[i], rounded using dynamic frm. Active-element FP exceptions accrue in fflags; vxrm does not participate.
Vector operands and results have SEW bits and EMUL=LMUL. Same-width destination/source overlap is legal; equal sources require equal initial bits. An ordinary masked destination cannot overlap v0; one source register cannot be read as both an EEW=1 mask and SEW-wide data.
Optional assembly v0.t means vm=0; omission means vm=1. Active elements satisfy vstart≤i<vl with the mask enabled. Prestart elements do not update or raise exceptions. At vstart≥vl or vl=0 all destination elements, including tails, remain unchanged. Other inactive/tail elements follow vma/vta; ta/ma does not guarantee zeroing.
V supplies FP32/FP64 and depends on F/D; these operations at SEW=16 require Zvfh. Require the extensions, supported widths, valid vtype, and enabled VS/FS; with H and virtualization V=1, vsstatus.VS/FS must also be enabled. Every vector FP instruction requires valid frm, even without rounding or at vl=0; use of invalid frm is reserved.
The animation fixes VLEN=4096, LMUL=m1, vstart=0, valid frm=RNE, valid vtype, and enabled VS/FS. VF scalars use FLEN=64, assuming valid NaN-boxing at SEW=32. Steps are educational, not processor cycles; input and exception limits are stated in the animation.
Assume V/VS/FS enabled, valid vtype, valid frm=RNE, supported e32,m1, VLMAX≥4, and a0=4; vsetvli sets vl=4 and vstart=0. Inputs are binary32; ft0, when used, is validly NaN-boxed at FLEN=64. Omitting v0.t makes this unmasked: v2=[1,4,9,16] → v1=[1,2,3,4]. Tails follow ta without assumed zeroing.
Assume V/VS/FS enabled, valid vtype, valid frm=RNE, supported e32,m1, VLMAX≥4, and a0=4; vsetvli sets vl=4 and vstart=0. Inputs are binary32; ft0, when used, is validly NaN-boxed at FLEN=64. Omitting v0.t makes this unmasked: v2=[1,4,9,16] → v1=[1,2,3,4]. Tails follow ta without assumed zeroing.
Assume V/VS/FS enabled, valid vtype, valid frm=RNE, supported e32,m1, VLMAX≥4, and a0=4; vsetvli sets vl=4 and vstart=0. Inputs are binary32; ft0, when used, is validly NaN-boxed at FLEN=64. Omitting v0.t makes this unmasked: v2=[1,4,9,16] → v1=[1,2,3,4]. 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] = sqrt(vs2[i]).
No. VFSQRT.V uses dynamic frm when rounding is needed; FP exceptions raised by active elements accrue in fflags. vxrm controls fixed-point rounding.
Negative inputs, 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.