VIOTA.M 如何处理掩码?
vm=0 时用 v0 选择活动元素,vm=1 时所有 body 元素都参与;非活动和尾部元素按当前策略处理。
对源掩码中当前元素之前的置位位数做前缀计数,并写入整数向量 vd。
VIOTA.M 是 RISC-V V 扩展的掩码前缀计数指令。对每个活动元素 i,它计算源掩码 vs2 中索引小于 i 的置位元素数,并把计数写入 vd。该指令常用于压缩、散列或从掩码生成紧凑下标。
VIOTA.M 输出的是每个位置之前有多少个匹配位,不包含当前位本身。
结合 «vsetvli t0, a0, e32, m1, ta, ma vmseq.vi v0, v8, 0 viota.m v12, v0 # v12[i]=count of zeros before i» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vmseq.vi v0, v8, 0 viota.m v12, v0 # v12[i]=count of zeros before i» 等实际代码理解该场景。
结合 «vsetvli t0, a0, e32, m1, ta, ma vmseq.vi v0, v8, 0 viota.m v12, v0 # v12[i]=count of zeros before i» 等实际代码理解该场景。
vm=0 时用 v0 选择活动元素,vm=1 时所有 body 元素都参与;非活动和尾部元素按当前策略处理。