首页/指令库/VMFLT-VV
VMFLT.VV

RISC-V VMFLT.VV 指令详解

指令手册R-type

逐元素执行 < 比较,并把布尔结果写入目标掩码 vd。

指令语法

vmflt.vv vd, vs2, vs1, vm
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
V向量浮点运算比较

指令行为说明

VMFLT.VV 是 RISC-V V 扩展的向量浮点比较指令。它在 vl 范围内对活动元素比较 vs2 与vs1,把比较结果写入目标掩码寄存器 vd。浮点比较的 NaN、invalid 异常标志和安静/信号比较行为遵循 RVV 浮点比较规则。

快速理解与检索要点

VMFLT.VV 的结果是掩码位,不是 0/-1 整数向量。

目标寄存器按掩码寄存器布局保存布尔结果,每个元素一位。
浮点比较遵循 RVV 的 NaN 和异常标志规则;不要套用整数比较语义。
vm=0 使用 v0 作为执行掩码,vm=1 表示不使用掩码;未活动元素和尾部元素按当前 vma/vta 策略处理。

常见使用场景

NaN检查

结合 «vmflt.vv v1, v2, v4» 等实际代码理解该场景。

条件分支

结合 «vmflt.vv v1, v2, v4» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 R-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

结果写入掩码寄存器,tail始终agnostic
NaN 与 invalid 标志按 RVV 浮点比较规则处理,不要套用整数比较语义。
向量 FP32/FP64 比较需要对应的标量 F/D 支持;FP16 比较需要向量半精度支持。

常见问题

VMFLT.VV 写入普通向量元素吗?

不写。比较类指令写入掩码目标 vd,每个元素对应一位布尔值。

VMFLT.VV 如何处理掩码?

vm=0 时用 v0 选择活动元素,vm=1 时所有 body 元素都参与;非活动和尾部元素按当前策略处理。