Skip to content

vrgather:向量收集

vrgather 是 RISC-V V 1.0 的向量收集指令。不同操作数后缀属于同一助记符并集中列在本页。

操作码
V 1.0 · 见官方编码表
指令集
RISC-V V 1.0
英文全称
vrgather:向量收集
参考资料
RISC-V V 1.0
页码
01vrgather.vv02vd, vs2, vs1, vm
01
指令助记符vrgather.vvmnemonic

vrgather:向量收集

02
操作数vd, vs2, vs1, vmdestination

该形式的操作数顺序;其他形式见下表。

VRGATHER · REGISTER OPERATIONRISCV · PERMUTE
VLMAXLMUL × VLEN ÷ SEW16
vs2 · v8第一来源
v8[511:0]
vs2[15]16SEW=32
vs2[14]15SEW=32
vs2[13]14SEW=32
vs2[12]13SEW=32
vs2[11]12SEW=32
vs2[10]11SEW=32
vs2[9]10SEW=32
vs2[8]9SEW=32
vs2[7]8SEW=32
vs2[6]7SEW=32
vs2[5]6SEW=32
vs2[4]5SEW=32
vs2[3]4SEW=32
vs2[2]3SEW=32
vs2[1]2SEW=32
vs2[0]1SEW=32
vs1 · v12第二来源
v12[511:0]
vs1[15]32SEW=32
vs1[14]31SEW=32
vs1[13]30SEW=32
vs1[12]29SEW=32
vs1[11]28SEW=32
vs1[10]27SEW=32
vs1[9]26SEW=32
vs1[8]25SEW=32
vs1[7]24SEW=32
vs1[6]23SEW=32
vs1[5]22SEW=32
vs1[4]21SEW=32
vs1[3]20SEW=32
vs1[2]19SEW=32
vs1[1]18SEW=32
vs1[0]17SEW=32
vd · v0(结果)permute
v0[511:0]
vd[15]1permute
vd[14]2permute
vd[13]3permute
vd[12]4permute
vd[11]5permute
vd[10]6permute
vd[9]7permute
vd[8]8permute
vd[7]9permute
vd[6]10permute
vd[5]11permute
vd[4]12permute
vd[3]13permute
vd[2]14permute
vd[1]15permute
vd[0]16permute
每个圆球代表一个完整元素强调背景:目标写入高索引在左、低索引在右

指令形式

语法说明
vrgather.vv vd, vs2, vs1, vmRISC-V V 1.0 规范形式
vrgather.vx vd, vs2, rs1, vmRISC-V V 1.0 规范形式
vrgather.vi vd, vs2, imm, vmRISC-V V 1.0 规范形式

元素语义

元素 0 位于寄存器组最低 SEW 位;活动 body 元素按 permute 类语义处理。VLMAX = LMUL × VLEN / SEW,实际写入范围由 vstartvl、执行掩码和尾部策略共同决定。

注意点

修改的寄存器与状态

活动目标元素写入 vd,来源保持不变;prestart 元素不变,被掩码元素由 vma、尾部元素由 vta 决定保持或 agnostic,正常完成后 vstart=0。目标与来源须满足 LMUL/EMUL 对齐、编号范围和重叠限制。

内存对齐

该指令只使用寄存器,不访问数据内存,因此没有内存对齐要求。整数、掩码和排列操作不修改 x86 风格条件码;浮点运算按规范累积 fflags

示例

asm
vsetvli t0, a0, e32, m1, tu, mu
vrgather.vv v0, v8, v12

参考

SIGNAL MAINTAINED · BUILT FROM MARKDOWN