先看 vl
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
VWREDSUMU.VS 使用 vs1[0] 初值对活动 vs2 元素执行无符号拓宽求和归约,结果只写入 vd[0]。
VWREDSUMU.VS 是 RISC-V V 扩展的无符号拓宽整数归约指令。语法为 `vwredsumu.vs vd, vs2, vs1, vm`;它以 vs1[0] 为初值,只让当前 vl 内且掩码选中的 vs2 元素参与无符号拓宽求和归约,并把最终2*SEW 宽结果写入 vd[0]。活动 vs2 元素先按无符号方式拓宽,再与 2*SEW 初值累加。
从 OP-V 编码字段开始,展示 VWREDSUMU 如何以 vs1[0] 为初值,只归约活动 vs2 元素,并把2*SEW 拓宽结果写入 vd[0]。
vwredsumu.vs 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 vs1 字段放在同一条编码带中。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、活动元素读取、vs1[0] 初值归约整数无符号拓宽求和归约、mask 参与元素筛选和 vd 写回[0];不模拟流水线、缓存或执行时延。
vwredsumu.vs 是 V 扩展向量指令,参与归约的 vs2 元素由当前 vl 和可选 v0.t 掩码选择;vstart 必须为 0。活动 vs2 元素拓宽后与 2*SEW 宽 vs1[0] 初值归约求和,结果只在 vd[0]。
阅读 VWREDSUMU.VS 时,不要只看助记符。官方 V 扩展语义还依赖当前 vl、vtype 和掩码状态。后缀和操作数形式决定源操作数来自向量、标量还是立即数。
当前 vl 决定 body 元素数量。典型代码会先执行 vsetvli、vsetivli 或 vsetvl,再执行本页指令。
当前 vtype 提供 SEW、LMUL、tail policy 和 mask policy;这些规则影响元素宽度、寄存器组大小以及非活动/尾部目标元素。
带 vm 的普通向量指令在 vm=0 时用 v0 作为执行掩码,vm=1 表示未掩码。VMERGE 等少数形式会把 v0 当作数据选择输入。
结合 «vwredsumu.vs v8, v12, v4, v0.t» 等实际代码理解该场景。
结合 «vwredsumu.vs v8, v12, v4, v0.t» 等实际代码理解该场景。
结合 «vwredsumu.vs v8, v12, v4, v0.t» 等实际代码理解该场景。
由当前 vl 和可选 v0.t 掩码决定哪些 vs2 元素参与;本类整数归约要求 vstart=0,且 vs1[0] 初值始终参与。
不会。V 扩展指令按活动元素执行,寄存器组大小和未活动元素行为由 vtype 与策略位决定。