估算结果是 implementation-defined 吗?
不是按实现随意决定。官方 V 扩展定义了 7 位估算和特殊输入处理规则。
计算vs2每个浮点元素的1/√x近似值(7位精度),写入vd。
按规定查表产生 7 位倒数平方根估算;输出不依赖动态 frm,但仍要求有效 frm。零、无穷、NaN 和负数按规定的特殊值规则处理。
定性编码演示:固定 SEW=32、LMUL=m1、VLEN=4096、vl=1、vstart=0、vm=1、ta、有效 frm=RNE、合法 vtype 与 VS/FS 已启用。展示有限 FP32 输入的编码及负数/±0 特殊分支;正数的查表数值、无穷和 NaN 输入不在模型展开。教学步骤不是处理器周期。
VFUNARY1 OP-V 编码:vs1=00100,funct3=001,vm=1。
v0-v31; vm=1
v0-v31; vm=1
finite FP32 demo value
hex: 4e821257
VFRSQRT7.V 是表定义的 7 位估算指令,不是普通浮点除法或平方根。
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/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 处理,不假定清零。
假定 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 处理,不假定清零。
不是按实现随意决定。官方 V 扩展定义了 7 位估算和特殊输入处理规则。