会处理整个寄存器吗?
只计算掩码允许的 vstart≤i<vl 元素。vstart≥vl(含 vl=0)时不更新任何目标元素。
VWMACCSU.VX 将有符号×无符号完整乘积加到旧 2*SEW 位 vd,结果保留低 2*SEW 位。
V 1.0 拓宽乘加:rs1 标量按有符号解释,vs2[i] 按无符号解释;SEW×SEW 的完整乘积加到旧宽累加器。仅活动元素计算,不饱和。
从 OP-V 编码字段开始,展示 VWMACCSU 如何读取旧 2*SEW 宽 vd 累加器,按有符号 vs1/rs1 × 无符号 vs2生成乘积,并写回累加结果。
教学环境:V 1.0、向量状态已启用、合法受支持 vtype;固定 LMUL=m1、VLEN=4096、vstart=0。要求支持 SEW 和 2*SEW;SEW=64 需额外128位整数元素支持。输入非负位模式;vs1/rs1 按补码有符号解释,vs2 按无符号解释。读取旧 2*SEW 位 vd,再加上完整乘积,保留低 2*SEW 位;不饱和,不改变 vxsat。标量先按 XLEN/SEW 转换(窄于 SEW 时符号扩展,宽于 SEW 时取低位),x0 提供0。vd 是 EMUL=2 的宽累加源,须偶数起点且不可与窄乘数重叠;同名窄源须有相同初值。v0.t 时 vd 和数据源不可含v0。仅展示 body,inactive/tail 按 vma/vta,不显示确定值。VL=0 不更新任何目标;正常完成后 vstart=0。步骤不是处理器周期。
vwmaccsu.vx 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 rs1 字段放在同一条编码带中。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、活动元素读取、2*SEW 拓宽整数有符号乘无符号拓宽乘加、旧 vd 累加器和 vd 写回;不模拟流水线、缓存或执行时延。
vd 先被读取,再加上完整宽乘积,最后以 2*SEW 位写回。
vd 是读写累加器,EEW=2*SEW、EMUL=2*LMUL≤8;vs2 和标量 rs1 转换后的值是 SEW 位乘数。XLEN>SEW 取低位,XLEN<SEW 符号扩展,x0 提供零。
32位 OP-V:opcode=1010111、funct6=111111、funct3=110 (OPMVX);vm 在bit25、vs2 在bits24:20、rs1 在bits19:15、vd 在bits11:7。可选 v0.t 表示vm=0,省略为vm=1。
活动 vd[i]=(旧 vd[i]+signed(转换后的标量)×unsigned(vs2[i])) mod 2^(2*SEW)。完整乘积参与累加,不饱和,不改变vxsat。组起点按EMUL对齐;窄乘数不可与宽累加源vd重叠,以免同一寄存器按不同EEW读取。
要求 RV32/RV64 V 1.0、向量状态已启用、vill=0 和受支持 SEW/2*SEW。仅掩码允许的 vstart≤i<vl 元素计算;prestart不变,inactive/tail按vma/vta。masked vd不可含v0,v0不可同时提供掩码与数据。vstart≥vl(含vl=0)不更新任何目标元素;正常完成后vstart=0。
假定 V/VS 已启用、合法 e8,m1,tu,mu、支持16位结果、VLEN=4096、XLEN=64、vl=4、vstart=0,v0.mask[0..3]=1101;old v8=[1,1,1,1], v12=[255,128,1,127], x5=255。v8=[0xff02,0xff81,unchanged,0xff82](unchanged表示保持旧值),结果保留低16位。lane2和tail保持旧值;vxsat不变,正常完成后vstart=0。
只计算掩码允许的 vstart≤i<vl 元素。vstart≥vl(含 vl=0)时不更新任何目标元素。