这些浮点指令使用 vxrm 吗?
不使用。普通 RVV 浮点运算和浮点转换使用浮点舍入模式 frm 或指令指定的固定舍入;vxrm 用于定点舍入指令。
将 vs1[0] 与 vs2 的活动浮点元素用实现选择的归约树求和,结果写入 vd[0];给定 vtype 和 vl 时树结构必须确定。
将 vs1[0] 与活动 vs2 浮点元素归约到 vd[0]。实现选择二叉树和中间精度;给定 vtype、vl 时树结构必须确定,最终按动态 frm 舍入到 SEW。
固定 SEW=32、LMUL=m1、VLEN=4096、vstart=0、frm=RNE、合法 vtype 与 VS/FS 已启用。输入先表示为 FP32,每次加法再以 RNE 舍入到 FP32;有限结果之外及异常标志不计算。空元素列表明确表示 vl=0。目标允许与源及 v0 重叠。
OP-V 编码:funct6=000001,funct3=001,vm=0。
v0-v31
single-width source
scalar seed in element 0
finite FP32; RNE
finite FP32 values; empty = vl=0
one bit per value
hex: 04861257
v4[0] = 8
VFREDUSUM.VS 是归约指令:多个活动元素合成为一个标量样结果,目标是向量寄存器的元素 0。
32 位 OP-V 编码:funct6=000001、funct3=001、opcode=1010111。vs1 选择向量寄存器;.vs 归约只读取其元素 0,.vv 逐元素读取。
vs1[0] 始终参与;vs2 的活动元素参与归约。目标是单个向量寄存器的 vd[0],其余元素按 vta 作为尾部处理;vma 不控制标量结果。目标可与源及 v0 重叠;非零 vstart 触发非法指令异常。
可选 vm 操作数写作 v0.t,对应 vm=0;省略为 vm=1。活动元素满足 vstart≤i<vl 且掩码启用。不能把同一源寄存器同时作为 EEW=1 的 mask 和 SEW 数据读取。
vl=0 不更新任何目标元素。vl>0 而无活动 vs2 元素时,NaN 初值允许原样传递,也允许规范化,并可对 sNaN 置 NV;有限初值按规范归约。
树结构对给定 vtype、vl 必须确定;各节点可使用至少 SEW 的范围及精度,按动态 frm 舍入,根节点再舍入到 SEW。不同实现不必给出相同数值结果。
V 1.0 适用于 RV32/RV64,包含 FP32/FP64 并依赖 F/D;SEW=16 算术需 Zvfh。要求合法 vtype、支持的宽度及 VS/FS 已启用;H 且虚拟化 V=1 时 vsstatus.VS/FS 也须启用。所有这些向量浮点指令都要求有效 frm,即使结果不依赖它或 vl=0;vxrm 不控制它们。
动画为教学步骤,不是处理器周期。固定 VLEN=4096、LMUL=m1、vstart=0、合法 vtype 与 VS/FS 已启用;具体输入格式、固定舍入及模型边界见动画说明。VF 标量按 FLEN=64 读取,SEW=32 时假定有效 NaN-boxed。
假定 V/VS/FS 已启用、合法 vtype、有效 frm=RNE、e32,m1 可用、VLMAX≥4、a0=4;vsetvli 后 vl=4、vstart=0。输入为 binary32;ft0 若使用则在 FLEN=64 下有效 NaN-boxed。省略 v0.t,未掩码:v3[0]=0, v2=[1,2,3,4] → v1[0]=10。尾部按 ta 处理,不假定清零。
假定 V/VS/FS 已启用、合法 vtype、有效 frm=RNE、e32,m1 可用、VLMAX≥4、a0=4;vsetvli 后 vl=4、vstart=0。输入为 binary32;ft0 若使用则在 FLEN=64 下有效 NaN-boxed。省略 v0.t,未掩码:v3[0]=0, v2=[1,2,3,4] → v1[0]=10。尾部按 ta 处理,不假定清零。
不使用。普通 RVV 浮点运算和浮点转换使用浮点舍入模式 frm 或指令指定的固定舍入;vxrm 用于定点舍入指令。