首页/指令库/VFRSQRT7-V
VFRSQRT7.V

RISC-V VFRSQRT7.V 指令详解

指令手册OP-V

计算vs2每个浮点元素的1/√x近似值(7位精度),写入vd。

指令语法

vfrsqrt7.v vd, vs2, vm
操作数说明
32 位 OP-V 编码:funct6=010011、funct3=001、opcode=1010111。vs1=00100 是固定 VFUNARY1 选择子,不是第二向量源。
向量操作数及结果为 SEW 位、EMUL=LMUL。同宽源/目标可重叠,同名源必须有一致的初始位模式。普通 masked 目标不能与 v0 重叠。
可选 vm 操作数写作 v0.t,对应 vm=0;省略为 vm=1。活动元素满足 vstart≤i<vl 且掩码启用。不能把同一源寄存器同时作为 EEW=1 的 mask 和 SEW 数据读取。
prestart 不更新;vstart≥vl 或 vl=0 时所有目标元素包括 tail 均不更新。其他非活动/尾部按 vma/vta 处理,ta/ma 不保证清零。
结果由规范的 7 位查表和特殊值规则决定,不依赖 frm;±0 返回同号无穷并置 DZ,负非零或 sNaN 返回 canonical NaN 并置 NV,+∞ 返回 +0,qNaN 返回 canonical NaN。
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向量运算浮点

指令行为说明

按规定查表产生 7 位倒数平方根估算;输出不依赖动态 frm,但仍要求有效 frm。零、无穷、NaN 和负数按规定的特殊值规则处理。

VFRSQRT7.V 倒数平方根估算动画

定性编码演示:固定 SEW=32、LMUL=m1、VLEN=4096、vl=1、vstart=0、vm=1、ta、有效 frm=RNE、合法 vtype 与 VS/FS 已启用。展示有限 FP32 输入的编码及负数/±0 特殊分支;正数的查表数值、无穷和 NaN 输入不在模型展开。教学步骤不是处理器周期。

步骤 1/5

VFUNARY1 OP-V 编码:vs1=00100,funct3=001,vm=1。

v0-v31; vm=1

v0-v31; vm=1

finite FP32 demo value

funct6
010011
vm
1
vs2
01000
vs1
00100
funct3
001
vd
00100
opcode
1010111

hex: 4e821257

完整特殊值和普通输入查表规则见官方来源;此演示只对有限负数和 ±0 给出具体结果及本次产生的异常,不表示清除原有 fflags。

快速理解与检索要点

VFRSQRT7.V 是表定义的 7 位估算指令,不是普通浮点除法或平方根。

只对 vl 范围内的活动元素执行;非活动元素和尾部元素受当前 vma/vta 策略影响。
vm=0 使用 v0 作为执行掩码,vm=1 表示不使用掩码。
特殊值结果和异常标志应按官方估算指令表处理。
向量 FP32/FP64 操作需要相应标量 F/D 支持;FP16 由相应向量半精度扩展控制,基础 V 扩展不自动包含半精度算术。
VFUNARY1 的 vs1=00100 是固定选择子;funct6=010011、funct3=001、opcode=1010111。
-0 返回 -∞、+0 返回 +∞,均置 DZ;负的非零值及 sNaN 返回 canonical NaN 并置 NV。+∞ 返回 +0;qNaN 返回 canonical NaN,不置异常。
正的有限输入按规范表产生正规估算结果,输出不依赖动态 frm;仍要求有效 frm。

向量执行上下文

32 位 OP-V 编码:funct6=010011、funct3=001、opcode=1010111。vs1=00100 是固定 VFUNARY1 选择子,不是第二向量源。

向量操作数及结果为 SEW 位、EMUL=LMUL。同宽源/目标可重叠,同名源必须有一致的初始位模式。普通 masked 目标不能与 v0 重叠。

可选 vm 操作数写作 v0.t,对应 vm=0;省略为 vm=1。活动元素满足 vstart≤i<vl 且掩码启用。不能把同一源寄存器同时作为 EEW=1 的 mask 和 SEW 数据读取。

prestart 不更新;vstart≥vl 或 vl=0 时所有目标元素包括 tail 均不更新。其他非活动/尾部按 vma/vta 处理,ta/ma 不保证清零。

结果由规范的 7 位查表和特殊值规则决定,不依赖 frm;±0 返回同号无穷并置 DZ,负非零或 sNaN 返回 canonical NaN 并置 NV,+∞ 返回 +0,qNaN 返回 canonical NaN。

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。

The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture — Version 20260120, Chapter 31

常见使用场景

向量归一化

假定 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,未掩码:v2=[1,1,1,1] → v1=[0.99609375,0.99609375,0.99609375,0.99609375]。尾部按 ta 处理,不假定清零。

Newton-Raphson

假定 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,未掩码:v2=[1,1,1,1] → v1=[0.99609375,0.99609375,0.99609375,0.99609375]。尾部按 ta 处理,不假定清零。

使用前检查清单

语法检查
  • 32 位 OP-V 编码:funct6=010011、funct3=001、opcode=1010111。vs1=00100 是固定 VFUNARY1 选择子,不是第二向量源。
  • 向量操作数及结果为 SEW 位、EMUL=LMUL。同宽源/目标可重叠,同名源必须有一致的初始位模式。普通 masked 目标不能与 v0 重叠。
语义检查
  • 可选 vm 操作数写作 v0.t,对应 vm=0;省略为 vm=1。活动元素满足 vstart≤i<vl 且掩码启用。不能把同一源寄存器同时作为 EEW=1 的 mask 和 SEW 数据读取。
  • prestart 不更新;vstart≥vl 或 vl=0 时所有目标元素包括 tail 均不更新。其他非活动/尾部按 vma/vta 处理,ta/ma 不保证清零。
  • 结果由规范的 7 位查表和特殊值规则决定,不依赖 frm;±0 返回同号无穷并置 DZ,负非零或 sNaN 返回 canonical NaN 并置 NV,+∞ 返回 +0,qNaN 返回 canonical NaN。
  • 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。

容易混淆 / 常见误区

查看官方特殊值表处理零、无穷、NaN 和负输入;不要把零输入结果标成 implementation-defined。
估算结果精度有限,通常需要后续迭代才能得到高精度结果。
向量 FP32/FP64 操作需要相应标量 F/D 支持;FP16 由相应向量半精度扩展控制,基础 V 扩展不自动包含半精度算术。

常见问题

估算结果是 implementation-defined 吗?

不是按实现随意决定。官方 V 扩展定义了 7 位估算和特殊输入处理规则。