先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
把源掩码寄存器的 VL 个 bits 打包为 ceil(vl/8) 个连续字节,并从 x[rs1] 起写入内存。
VSM.V 是 RISC-V V 扩展的 unit-stride mask store。它将源 mask register 的第 i 个 mask bit 放入 byte floor(i/8) 的 bit i mod 8,并存储 ceil(vl/8) 个 packed bytes。该指令存储掩码位,不按 SEW 存储普通向量元素。
从编码字段解析 packed mask 存储,再逐元素计算 x[rs1] + floor(i/8)。
动画从 32 位向量内存指令编码开始,按官方位段显示 nf、mew、mop、vm、rs2/vs2 或 lumop/sumop、width、寄存器字段和 opcode。
VSM.V 把 mask register 压缩成内存字节流:VL=16 时只写 2 个字节,每个 lane 贡献一个 bit。
阅读 VSM.V 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。后缀和操作数形式决定源操作数来自向量、标量还是立即数。
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
当前 vtype 提供 SEW、LMUL、tail policy 和 mask policy;这些规则影响元素宽度、寄存器组大小以及非活动/尾部目标元素。
带 vm 的普通向量指令在 vm=0 时用 v0 作为执行掩码,vm=1 表示未掩码。VMERGE 等少数形式会把 v0 当作数据选择输入。
结合 «vsm.v v0, (a0) # store ceil(vl/8) packed mask bytes» 等实际代码理解该场景。
结合 «vsm.v v0, (a0) # store ceil(vl/8) packed mask bytes» 等实际代码理解该场景。
结合 «vsm.v v0, (a0) # store ceil(vl/8) packed mask bytes» 等实际代码理解该场景。
VSM.V 存储 packed mask bits,长度为 ceil(vl/8) 字节;VSE8.V 存储 8-bit 数据元素。
不是。语法源操作数是 vs3,可以是向量 mask register;v0 只是常见掩码寄存器。