VSE16.V 会自动设置 vl 吗?
不会。vl/vtype 由此前的 vsetvli、vsetivli 或 vsetvl 设置;向量加载/存储按当前配置执行。
把 vs3 中的活动 16 位元素按单位步长存入 x[rs1] 开始的连续内存。
VSE16.V 将 vs3 的活动 16 位元素写入 x[rs1]+i×2 字节;仅 vstart≤i<vl 且掩码开启的元素访问内存。省略 v0.t 为未掩码。
从编码字段解析 16 位单位步长存储,再逐元素计算 x[rs1] + i * 2。
教学配置:V 1.0、VS 已启用、合法 vtype;VLEN=4096、SEW=EEW=16、LMUL=EMUL=m1、vstart=0。基址自然对齐,rs1=x0 时为0;假定活动写入均成功,不建模陷入。VL=0 不访问内存;关闭元素和 tail 不写内存。逐元素步骤不是实际访问顺序或处理器周期;正常完成后 vstart=0。
动画从 32 位向量内存指令编码开始,按官方位段显示 nf、mew、mop、vm、rs2/vs2 或 lumop/sumop、width、寄存器字段和 opcode。
第 i 个活动元素将 vs3[i] 写到 x[rs1]+i×2 字节。vm=0 使用 v0.t,vm=1 未掩码;关闭元素和 tail 不写内存。
vs3 是 EEW=16 数据源组,rs1 选择整数基址;x0 为0。语法 vse16.v vs3, (rs1)[, v0.t]。
省略 v0.t 为 vm=1;提供 v0.t 为 vm=0。EEW 固定在指令中,EMUL=(EEW/SEW)×LMUL。
活动元素写到 x[rs1]+i×2 字节;关闭元素、prestart 和 tail 不写内存。元素访问无序,逐 lane 动画不表示硬件访问顺序。
要求 V 1.0、向量状态启用、合法 vtype/寄存器组及可写内存;body 为 vstart≤i<vl。vl=0 不访问内存;存储不更新 vl 或 vtype。
假定 V/VS 已启用、合法 m1、VLEN=4096、支持所需宽度、vl=4、vstart=0,源已初始化,所选内存可写且写入成功。SEW=EEW=16, x10=0x8000, v8=[1,2,3,4], v0.mask[0..3]=1010 → [0x8000]=1, [0x8004]=3。仅 lane 0、2 写内存;其余地址不变,不保证实际访问顺序。vl=0 不更新目标。
假定 V/VS 已启用、合法 m1、VLEN=4096、支持所需宽度、vl=4、vstart=0,源已初始化,所选内存可写且写入成功。SEW=EEW=16, x10=0x8000, v8=[1,2,3,4], v0.mask[0..3]=1010 → [0x8000]=1, [0x8004]=3。仅 lane 0、2 写内存;其余地址不变,不保证实际访问顺序。vl=0 不更新目标。
不会。vl/vtype 由此前的 vsetvli、vsetivli 或 vsetvl 设置;向量加载/存储按当前配置执行。
第 i 个活动元素使用 x[rs1] + i * 2 字节;这是连续内存访问,不是任意 gather/scatter。
不会。vm=0 且对应 v0.t 位为 0 的 body 元素不会执行该元素的存储内存访问。