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.
Narrow FP32 vector sources to BF16 using frm rounding.
Syntax: vfncvtbf16.f.f.w 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=11101 (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 FP32 at EEW=32, EMUL=2*LMUL; vd receives BF16 at EEW=16, EMUL=LMUL, rounded by frm.
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.
VFNCVTBF16.F.F.W, with SEW=16, narrows 32-bit FP32 source elements from vs2 to 16-bit BF16 results in vd. The conversion rounds according to frm and may raise Overflow, Underflow, Inexact, or Invalid; it belongs to Zvfbfmin.
Decode the OP-V encoding and execute vector BF16 narrowing conversion: each active lane rounds an FP32 source value to BF16 using frm.
lane 0: bf16_rne(1.5) -> 0x3fc0 (1.5)
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 FP32 source is an even vs2..vs2+1 group and the BF16 destination is one register; legal overlap starts at the lowest source register. Numeric inputs are first represented as FP32, then narrowed by the selected frm. 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=32 / FP32 -> destination EEW=16 / BF16. The animation demonstrates finite BF16 results rounded by the selected frm; officially this instruction rounds by frm and may set Overflow, Underflow, Inexact, and Invalid.This is the RVV BF16 FP32-to-BF16 narrowing conversion: the assembly syntax has only vd, vs2, and vm; SEW is fixed to 16, and vs1[19:15]=11101 is a VFUNARY0 selector, not a source register.
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]=1.5 (FP32 0x3FC00000) → v4[0]=BF16 0x3FC0; 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]=1.5 (FP32 0x3FC00000) → v4[0]=BF16 0x3FC0; 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. The official semantics are FP32-to-BF16 narrowing conversion rounded by frm; simple truncation would misrepresent rounding and exception boundaries.