vslidedown.vxmnemonic把更高源索引的元素写入较低目标索引;.vx 偏移来自整数寄存器。
vslidedown 把 vs2[i+OFFSET] 写入 vd[i]。源索引仍在 VLMAX 内时,即使超过当前 vl 也可以读取;达到或超过 VLMAX 时结果为 0。
vslidedown.vx 02v8, 03v10, 04a0, 05v0.tvslidedown.vxmnemonic把更高源索引的元素写入较低目标索引;.vx 偏移来自整数寄存器。
v8destination接收结果;LMUL=2 时占用 v8–v9,并允许与源组重叠。
v10source可读取当前 vl 以外、但仍位于 VLMAX 内的元素。
a0offset按照无符号 XLEN 位整数解释。
v0.tmaskv0[i] 控制目标元素 i;无掩码时省略。
[511:384]v2[383:256]v1[255:128]v0[127:0][511:384]v10[383:256]v9[255:128]v8[127:0][511:384]v2[383:256]v1[255:128]v0[127:0]| 形式 | 偏移来源 |
|---|---|
vslidedown.vx vd, vs2, rs1, vm | 无符号 XLEN 位整数寄存器 |
vslidedown.vi vd, vs2, uimm, vm | 5 位无符号立即数,范围 0…31 |
for i = vstart .. vl-1:
if mask[i]:
vd[i] = (i+OFFSET < VLMAX) ? vs2[i+OFFSET] : 0指令修改 vd[vstart .. vl-1] 中启用的元素。被屏蔽元素由 vtype.vma 决定,尾部由 vtype.vta 决定。正常完成后 vstart 重置为 0;vs2、偏移来源、vl 和 vtype 不变。
与 vslideup 不同,vslidedown 允许 vd 与 vs2 重叠,可用于原地向低索引滑动。掩码形式的 vd 仍不能与 v0 重叠。
掩码位控制目标索引。指令可以读取 vl 以外但小于 VLMAX 的源元素;当 vstart >= vl 时不写入任何元素。
指令不访问内存,因此没有内存对齐要求。
指令不修改整数条件码、vxsat、vxrm 或 fflags。
.text
.globl slidedown_demo
slidedown_demo:
vsetivli t0, 8, e32, m2, tu, mu
vle32.v v10, (a0)
vsetivli t0, 6, e32, m2, tu, mu
vslidedown.vi v8, v10, 2
vse32.v v8, (a1)
ret