先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
只把第一个 active set mask bit 的位置置 1
VMSOF.M 扫描 vs2 源掩码,找到第一个 active 且为 1 的元素,并只把该 first 位置写为 1;其它 active 位置写为 0。
从 OP-V 编码字段开始,展示 VMSOF.M 如何只把第一个 active set bit 的位置置 1。
vmsof.m 使用 OP-V 编码;vs1 字段固定为 00010,语法中没有 vs1 操作数。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、vl 内 active mask bit 扫描、目标 mask bit 写回;不模拟流水线、缓存或执行时延。
VMSOF.M 生成单点 mask:只有最低编号 active set bit 的位置为 1。
阅读 VMSOF.M 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。后缀和操作数形式决定源操作数来自向量、标量还是立即数。
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
当前 vtype 提供 SEW、LMUL、tail policy 和 mask policy;这些规则影响元素宽度、寄存器组大小以及非活动/尾部目标元素。
带 vm 的普通向量指令在 vm=0 时用 v0 作为执行掩码,vm=1 表示未掩码。VMERGE 等少数形式会把 v0 当作数据选择输入。
结合 «vmsof.m v1, v0» 等实际代码理解该场景。
结合 «vmsof.m v1, v0» 等实际代码理解该场景。
没有 active set bit 时,active 位置不会产生单点 1,动画结果全为 0。未活动和尾部位置仍受当前策略约束。