首页/指令库/VMSGT-VI
VMSGT.VI

RISC-V VMSGT.VI 指令详解

指令手册I-type

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

指令语法

vmsgt.vi vd, vs2, imm, vm
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数所在的寄存器。
立即数 imm:12 位有符号立即数,符号扩展后与 rs1 进行运算。
V向量整数运算比较

指令行为说明

VMSGT.VI 是 RISC-V V 扩展的向量整数有符号大于比较指令。它在 vl 范围内对活动元素比较 vs2 与 5 位符号扩展立即数,把比较结果写入目标掩码寄存器 vd。立即数先符号扩展到 SEW,再按该指令的比较关系解释。整数比较不产生浮点异常。

快速理解与检索要点

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

目标寄存器按掩码寄存器布局保存布尔结果,每个元素一位。
有符号关系决定比较结果;立即数先符号扩展到 SEW。
vm=0 使用 v0 作为执行掩码,vm=1 表示不使用掩码;未活动元素和尾部元素按当前 vma/vta 策略处理。

常见使用场景

条件执行

结合 «vmsgt.vi v1, v2, 0» 等实际代码理解该场景。

范围检查

结合 «vmsgt.vi v1, v2, 0» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

整数比较不产生浮点异常
结果始终tail-agnostic

常见问题

VMSGT.VI 写入普通向量元素吗?

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

VMSGT.VI 如何处理掩码?

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