首页/指令库/VMNAND-MM
VMNAND.MM

RISC-V VMNAND.MM 指令详解

指令手册V-type

向量掩码 NAND:vd.mask[i] = ~(vs2.mask[i] & vs1.mask[i])

指令语法

vmnand.mm vd, vs2, vs1
操作数说明
本指令为 V-type 格式,请根据汇编语法确认各操作数位置。
V向量运算掩码逻辑

指令行为说明

VMNAND.MM 按掩码位计算与非:vd.mask[i] = !(vs2.mask[i] & vs1.mask[i])。它操作 mask 位而非普通数据元素,并且总是 unmasked。

快速理解与检索要点

VMNAND.MM 是 RVV 向量掩码与非门 指令,按单比特 mask 元素计算,汇编操作数顺序为 vd, vs2, vs1;该类 mask logical 指令总是 unmasked。

操作不依赖 SEW/LMUL 的数据元素宽度;源和目的都是单个向量寄存器承载的 mask。
VMNAND.MM 的布尔函数必须按 vs2 与 vs1 的顺序理解,ANDN/ORN 尤其不能把取反对象写反。

常见使用场景

布尔完备逻辑

结合 «vmnand.mm v1, v2, v3» 等实际代码理解该场景。

掩码求反

结合 «vmnand.mm v1, v2, v3» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

汇编操作数顺序是 vd, vs2, vs1;ANDN/ORN 的取反对象是 vs1。
这些 mask logical 指令总是 unmasked,vm=0 编码保留。
它们操作 mask 位,不是普通向量数据元素;不要与 vand/vor/vxor 混淆。

常见问题

它和 vand.vv/vor.vv 一样吗?

不一样。mask logical 操作掩码位;vand/vor 操作普通向量数据元素。

是否受 v0 掩码控制?

不受。向量 mask logical 指令总是 unmasked,尾部按 tail-agnostic 更新。