VOR.VX 的标量怎样转成 SEW 位?
XLEN>SEW 取低 SEW 位;XLEN<SEW 符号扩展;x0 提供零,因此活动结果等于 vs2。
VOR.VX 对 RVV 活动元素执行 SEW 宽整数按位或。
VOR.VX 对活动元素计算 vd[i]=vs2[i] | scalar。标量来自 x[rs1]:XLEN>SEW 取低 SEW 位,XLEN<SEW 符号扩展;x0 提供零。省略 v0.t 为未掩码,给出时仅 v0.mask[i]=1 的 body 元素参与。
从 OP-V 编码字段开始,展示 VOR 如何对活动元素执行 SEW 宽逐位 OR,并写回 vd。
要求 V 1.0、已启用向量状态及合法受支持 vtype/SEW。固定 LMUL=m1、vstart=0、VLEN=4096,VLMAX=4096/16=256。普通 masked vd 不可为 v0;同宽源/目标可重叠。XLEN>SEW 取标量低 SEW 位,XLEN<SEW 符号扩展,x0 提供零。v0 提供 EEW=1 掩码时不可同时作 SEW 数据源。VL=0 不更新任何目标元素;这里只展示 body,不伪造 inactive/tail 的确定值。步骤是教学分解,不是处理器周期。
vor.vx 使用 OP-V 编码。动画把固定字段、寄存器字段、vm 和 rs1 字段放在同一条编码带中。
动画展示 OP-V 字段解析、活动元素读取、SEW 宽度整数按位或、mask 控制和 vd 写回。步骤是教学分解,不表示流水线、缓存或执行时延。
VOR.VX 是 V 扩展单宽整数逻辑指令:在 vl 范围内,只对活动元素计算 vs2 | 第二源,结果保持 SEW 位并写入普通向量寄存器 vd。
语法:vor.vx vd, vs2, rs1[, v0.t];省略 v0.t 为 vm=1,给出为 vm=0。32 位 OP-V:opcode=1010111、funct3=100 (OPIVX)、funct6=001010。
vd/vs2 是 SEW/LMUL 向量组,rs1 是整数标量源。XLEN>SEW 取低 SEW 位,XLEN<SEW 符号扩展;x0 提供零,活动结果为 vs2[i] | scalar。
活动 body 为 vstart≤i<vl 且掩码开启;prestart 不变,inactive/tail 按 vma/vta,agnostic 可保留旧值或写全1。vstart≥vl(含 vl=0)不更新任何目标元素。
同宽源/目标允许重叠,组起点按 EMUL 对齐,EMUL≤8。masked vd 不可包含 v0;v0 用作 EEW=1 掩码时不可同时作 SEW 数据源。
要求 V 1.0、已启用向量状态和合法受支持 vtype/SEW;成功执行后 vstart 复位为0。动画按其声明的 m1/vstart=0 条件展示,不表示处理器周期。
假定 V/VS 已启用、合法 m1、VLEN≥128、支持 SEW、vl=4、vstart=0、v0.mask[0..3]=1111,源已初始化。SEW=16, x11=0x8000, v8=[1,2,3,4] → v4=[32769,32770,32771,32772]。逐元素按位或,XLEN=32/64 均取标量低16位。vl=0 时不更新目标。
假定 V/VS 已启用、合法 m1、VLEN≥128、支持 SEW、vl=4、vstart=0、v0.mask[0..3]=1111,源已初始化。SEW=16, x11=0x8000, v8=[1,2,3,4] → v4=[32769,32770,32771,32772]。逐元素按位或,XLEN=32/64 均取标量低16位。vl=0 时不更新目标。
XLEN>SEW 取低 SEW 位;XLEN<SEW 符号扩展;x0 提供零,因此活动结果等于 vs2。
不会生成掩码;它写普通 SEW 元素。inactive 按 vma、tail 按 vta;agnostic 可保留旧值或写全1,不能假定清零。