Do these vector BF16 instructions support any SEW?
No. The official vector BF16 instructions reserve encodings when SEW is not 16; this page animation fixes SEW=16.
Exactly widen BF16 vector sources to FP32.
Syntax: vfwcvtbf16.f.f.v vd, vs2[, v0.t]; vd and vs2 select the lowest v0–v31 register in each vector group. No FP scalar source or immediate.
32-bit OP-V: funct6=010010, bits19:15=01101 (fixed VFUNARY0 selector), funct3=001, opcode=1010111. vm=0 uses v0.t; omitting it means vm=1.
Requires Zvfbfmin (depends on Zve32f), enabled vector/FP state and valid vtype; only SEW=16 is legal. vs2 supplies BF16 at EEW=16, EMUL=LMUL; vd receives FP32 at EEW=32, EMUL=2*LMUL, exactly.
Group starts align to EMUL, with EMUL<=8. Narrowing overlap shares the lowest register; widening overlap needs source EMUL>=1 and a shared highest register. Masked vd excludes v0; v0 cannot supply mask and data together. Legal different-EEW overlap forces mask/tail agnostic.
Only mask-enabled vstart<=i<vl elements execute. Inactive/tail policies do not guarantee zeroing. vstart>=vl (including vl=0) updates no destination elements. Invalid frm use is always reserved, even for exact conversion or no active elements.
VFWCVTBF16.F.F.V, with SEW=16, exactly widens 16-bit BF16 source elements from vs2 to 32-bit FP32 results in vd. For normal values and infinities, the BF16 encoding is shifted left by 16 and the low 16 FP32 bits are zero-filled; it belongs to Zvfbfmin.
Decode the OP-V encoding and execute vector BF16 widening conversion: each active lane exactly widens BF16 to FP32.
lane 0: fp32(0x3fc0) -> 1.5 / 0x3fc00000
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 SEW=16, LMUL=m1, VLEN=4096, VLMAX=256, vstart=0, valid vtype, enabled VS/FS, and valid frm. The BF16 source is one register and the FP32 destination is an even vd..vd+1 group; legal overlap is at the destination group's high end. Numeric inputs are first represented as FP32, then as BF16 under RNE, and finally widened exactly; raw patterns directly supply BF16 bits. Legal different-EEW overlap forces mask/tail agnostic. Inactive/tail values are not specified by this display; VL=0 updates no destination elements. NaNs, infinities, fflags, and processor cycles are outside this model. A result outside the finite demo range is a model limitation, not an illegal instruction.
SEW=16, source EEW=16 / BF16 -> destination EEW=32 / FP32. BF16-to-FP32 is an exact widening conversion; for normal numbers and infinity, the BF16 encoding is shifted left by 16 and the low 16 bits are zero-filled.This is the RVV BF16 BF16-to-FP32 exact widening conversion: the assembly syntax has only vd, vs2, and vm; SEW is fixed to 16, and vs1[19:15]=01101 is a VFUNARY0 selector.
Body elements satisfy vstart<=i<vl; only mask-enabled elements perform the conversion. At vstart>=vl (including vl=0), all destination elements remain unchanged. SEW is fixed to 16; LMUL determines register-group sizes, while vta/vma govern tail/inactive policy.
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture — Version 20260120, Chapter 31Enable Zvfbfmin and vector/FP state, with SEW=16, LMUL=m1, VLEN=128, vl=1, vstart=0, frm=RNE and no mask: v8[0]=BF16 0x3FC0 → v4[0]=1.5 (FP32 0x3FC00000); remaining destination elements follow tail policy.
Enable Zvfbfmin and vector/FP state, with SEW=16, LMUL=m1, VLEN=128, vl=1, vstart=0, frm=RNE and no mask: v8[0]=BF16 0x3FC0 → v4[0]=1.5 (FP32 0x3FC00000); remaining destination elements follow tail policy.
No. The official vector BF16 instructions reserve encodings when SEW is not 16; this page animation fixes SEW=16.
No. BF16 has 1 sign bit, 8 exponent bits, and 7 fraction bits; it differs from half-precision binary16 in exponent and fraction widths.
No. BF16-to-FP32 widening is exact and does not round by frm. Vector FP instructions still require a valid frm, even at vl=0 or with no active elements.