这些向量 BF16 指令是否支持任意 SEW?
不支持。官方 BF16 向量指令在 SEW 不是 16 时为保留编码;本页动画固定 SEW=16。
BF16 向量-向量拓宽融合乘加,累加到 FP32 vd。
VFWMACCBF16.VV 在 SEW=16 下读取 vs1 和 vs2 的 BF16 元素以及 vd 中的 FP32 累加值,将 BF16 源相乘,未舍入乘积加到对应 FP32 累加值,再按 frm 舍入写回 FP32 vd;属于 Zvfbfwma。
从 OP-V 编码解码到 BF16 拓宽融合乘加:每个活动元素把 vs1[i] 与 vs2[i] 的 BF16 源相乘并累加到 FP32 vd[i]。
lane 0: fma_rne(1.5, 0.5, 0.5) -> 1.25 / 0x3fa00000
显示的 lane 与当前步骤高亮同步;其余逐元素结果位于下方。
V 扩展浮点指令使用 OP-V 主操作码,字段包含 funct6、源寄存器、vm、funct3、vd 和 opcode。
教学环境固定 SEW=16、LMUL=m1、VLEN=4096、VLMAX=256、vstart=0、合法 vtype、VS/FS 已启用与 ta/ma。BF16 源占单寄存器,FP32 累加器占偶数 vd..vd+1;累加器也是源,不能与 BF16 源重叠读取不同 EEW。同名 BF16 源须提供相同位模式。数值先表示为 FP32,再以 RNE 表示为 BF16;原始位模式直接提供 BF16 输入。乘积与 FP32 累加值精确相加后只按所选 frm 舍入一次;标量假定有效 NaN-box。VL=0 不更新任何目标元素;非活动/尾元素不显示确定值。NaN、无穷和 fflags 不在有限样例模型范围;超出模型范围不表示非法指令。
SEW=16,BF16 源来自 vs2 和 vs1/rs1,vd 是 FP32 累加输入和 FP32 结果。动画先精确加宽 BF16 源,再演示等价的 FP32 fused multiply-accumulate 路径;异常标志以官方 BF16 规则为准。这是 BF16 向量-向量 widening FMA:语法为 vd、vs1、vs2、vm;vd 先作为 FP32 累加器读取,再写回 FP32 结果。
SEW=16;活动元素满足 vstart≤i<vl 且掩码允许。vstart≥vl(含 vl=0)不更新任何目标元素;prestart 保持,inactive/tail 按 vma/vta。BF16 源 EMUL=LMUL,FP32 累加器/结果 EMUL=2×LMUL≤8。要求受支持的合法 vtype、所需扩展与已启用向量/浮点状态;每个活动元素按 frm 做一次融合舍入。
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture — Version 20260120, §25.5.5结合 «vfwmaccbf16.vv v4, v8, v12 # v4[fp32] += bf16(v8) * bf16(v12)» 等实际代码理解该场景。
结合 «vfwmaccbf16.vv v4, v8, v12 # v4[fp32] += bf16(v8) * bf16(v12)» 等实际代码理解该场景。
不支持。官方 BF16 向量指令在 SEW 不是 16 时为保留编码;本页动画固定 SEW=16。
不是。BF16 是 1 位符号、8 位指数、7 位 fraction;它与半精度 binary16 的指数和 fraction 位宽不同。
不完全相同。官方说明可用先把 BF16 源加宽到 FP32 再执行 vfmacc 的序列理解,但源格式、SEW=16 限制和 Zvfbfwma 扩展要求不同。