先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
逐元素执行浮点小于比较,并把布尔结果写入目标掩码 vd。
VMFLT.VV 是 RISC-V V 扩展的向量浮点比较指令。它在 vl 范围内对活动元素计算 vs2[i] < 同 lane 的 vs1[i],并把每个布尔结果写入目标掩码寄存器 vd 的对应位。vm=0 时 v0.t 选择活动元素,vm=1 表示不使用执行掩码;NaN、invalid 异常标志和 tail-agnostic 结果规则遵循官方 RVV 浮点比较语义。
从 OP-V 编码解码到逐元素浮点比较:每个活动元素计算 vs2[i] < vs1[i],并把布尔结果写入目标掩码位。
V 扩展浮点指令使用 OP-V 主操作码,字段包含 funct6、源寄存器、vm、funct3、vd 和 opcode。
VMFLT.VV 的核心是从 OP-V 编码解码出 vv 形式,对活动元素计算 vs2[i] < 同 lane 的 vs1[i],并把 true/false 写成目标 mask 位。
阅读 VMFLT.VV 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。.vv:两个向量源逐元素参与运算。
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
当前 vtype 提供 SEW、LMUL、tail policy 和 mask policy;这些规则影响元素宽度、寄存器组大小以及非活动/尾部目标元素。
带 vm 的普通向量指令在 vm=0 时用 v0 作为执行掩码,vm=1 表示未掩码。VMERGE 等少数形式会把 v0 当作数据选择输入。
结合 «vmflt.vv v1, v2, v4» 等实际代码理解该场景。
结合 «vmflt.vv v1, v2, v4» 等实际代码理解该场景。
结合 «vmflt.vv v1, v2, v4» 等实际代码理解该场景。
结合 «vmflt.vv v1, v2, v4» 等实际代码理解该场景。
不写。VMFLT.VV 写目标掩码 vd,每个活动元素产生一个布尔位。
可以。官方 V 规范允许生成 mask 的比较指令目标与源 mask v0 重叠,这一点不同于普通 masked vector 指令。
VMFLT.VV 遇到 NaN 比较写 0;invalid 标志规则按官方 RVV 浮点比较定义。