vfslide1down.vfmnemonic向低索引滑动一格并在最高活动边界插入浮点标量。
vfslide1down.vf vd, vs2, rs1, vm 固定滑动一个元素,并从寄存器标量向空出的边界位置插入一个值。
vfslide1down.vf 02vd, vs2, rs1, vmvfslide1down.vfmnemonic向低索引滑动一格并在最高活动边界插入浮点标量。
vd, vs2, rs1, vmdestination目标、向量来源、浮点标量来源与可选执行掩码。
li a0, 10
vsetvli t0, a0, e32, m4, tu, mu # VLEN=128
vfslide1down.vf v0, v8, fa0, v0.t插入值=99(f[rs1])[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]vstart <= i < vl-1: vd[i] = vs2[i + 1]
vstart <= i = vl-1: vd[i] = f[rs1]元素 0 位于最低 SEW 位。仅修改 vstart 到 vl-1 的活动目标元素;来源与标量寄存器保持不变,尾部遵循 vta,被掩码元素遵循 vma,正常完成后 vstart=0。向上形式禁止目标组与来源组重叠;向下形式遵循规范规定的安全重叠约束。
该指令不访问内存,没有内存对齐要求。浮点标量按位传送,不执行浮点运算,因此不累积 fflags。
# floating-point scalar is inserted at element vl-1
for i = vstart .. vl - 1:
if vm == 1 or v0.mask[i] == 1:
vd[i] = i == vl - 1 ? fp_scalar(rs1) : vs2[i + 1]
else:
vd[i] = vma ? agnostic : old_vd[i]
for i = vl .. VLMAX - 1:
vd[i] = vta ? agnostic : old_vd[i]
vstart = 0vsetvli t0, a0, e32, m4, tu, mu
vfslide1down.vf v0, v8, fa0