首页/指令库/VFWREDUSUM-VS
VFWREDUSUM.VS

RISC-V VFWREDUSUM.VS 指令详解

指令手册R-type

将活动的 vs2 浮点元素拓宽后做无序归约求和,以 vs1[0] 作为宽精度初值并写入 vd[0]。

指令语法

vfwredusum.vs vd, vs2, vs1, vm
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
VZvfh向量归约浮点

指令行为说明

VFWREDUSUM.VS 是 RISC-V V 扩展的拓宽浮点无序归约求和指令。它把活动的窄 vs2 元素扩展到 2*SEW 精度,与宽精度初值 vs1[0] 组成归约树;结果只写入 vd[0]。无序归约允许实现选择归约顺序,因此浮点舍入结果不要求与有序归约逐项一致。

快速理解与检索要点

VFWREDUSUM.VS 做拓宽浮点无序求和;如果需要固定元素顺序的语义,应查看 VFWREDOSUM.VS。

vs2 是 SEW 宽度浮点输入,归约和 vd[0]/vs1[0] 使用 2*SEW 宽度。
只归约 vl 范围内被掩码选中的活动元素;归约结果之外的目标元素不承载结果。
浮点舍入和异常标志遵循 RVV 浮点规则;定点 vxrm 不控制该指令。
vm=0 使用 v0 作为执行掩码,vm=1 表示不使用掩码;未活动元素和尾部元素按当前 vma/vta 策略处理。

常见使用场景

拓宽求和

结合 «vsetvli t0, a0, e16, m1, ta, ma vfwredusum.vs v2, v4, v3» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 R-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

无序归约允许实现选择归约树;浮点结果不要求与有序逐项求和一致。需有序语义时用 vfwredosum.vs。
向量 FP32/FP64 操作需要对应的标量 F/D 支持;仅有 V 并不意味着支持 FP16。

常见问题

VFWREDUSUM.VS 的结果是否可重复?

ISA 允许无序归约采用不同归约树;浮点舍入可能随实现或设置不同而变化。需要有序语义时使用 VFWREDOSUM.VS。

VFWREDUSUM.VS 如何处理掩码?

vm=0 时用 v0 选择活动元素,vm=1 时所有 body 元素都参与;非活动和尾部元素按当前策略处理。