先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
按官方 FCLASS 10 类表分类每个活动浮点元素,并把 one-hot 分类码写入 vd[i] 低位。
VFCLASS.V 是 RVV 一元浮点分类指令,语法为 vfclass.v vd, vs2, vm;每个活动元素读取 vs2[i] 的浮点编码,并把 10 位 one-hot 分类码写入普通向量数据元素 vd[i] 的低位,高位为 0。分类码 bit 0..9 依次表示负无穷、负正规数、负非正规数、负零、正零、正非正规数、正正规数、正无穷、signaling NaN 和 quiet NaN。
从 OP-V 编码解码到 VFUNARY1 浮点分类:每个活动元素读取 vs2[i] 的原始浮点编码,并写出 10 位 one-hot 分类码。
V 扩展浮点指令使用 OP-V 主操作码,字段包含 funct6、源寄存器、vm、funct3、vd 和 opcode。
VFCLASS.V 不产生浮点数或布尔掩码;它把每个活动浮点元素映射成官方 10 类 one-hot 整数分类码。
阅读 VFCLASS.V 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。后缀和操作数形式决定源操作数来自向量、标量还是立即数。
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
当前 vtype 提供 SEW、LMUL、tail policy 和 mask policy;这些规则影响元素宽度、寄存器组大小以及非活动/尾部目标元素。
带 vm 的普通向量指令在 vm=0 时用 v0 作为执行掩码,vm=1 表示未掩码。VMERGE 等少数形式会把 v0 当作数据选择输入。
结合 «vsetvli t0, a0, e32, m1, ta, ma vfclass.v v1, v2» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vfclass.v v1, v2» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vfclass.v v1, v2» 等实际代码理解该场景。
不是。它把 10 位 one-hot 分类码写入普通向量数据元素;这不同于 VMFEQ/VMFNE 生成的一位掩码结果。
不会。官方 FCLASS 语义说明分类不会设置浮点异常标志,包括对 signaling NaN 或 quiet NaN 分类。
汇编语法只有 vd、vs2 和 vm;编码中的 vs1 字段固定为 10000,用来在 VFUNARY1 空间中选择 classify。