Skip to content

vsetivli

vsetivli 使用 5 位零扩展立即数给出应用向量长度(AVL),使用 vtypei 配置 vlvtype,并把硬件选出的新 vl 写入整数寄存器 rd

操作码
OP-V · funct3=111
指令集
RISC-V V 1.0
英文全称
Vector Set Immediate Vector Length Immediate
参考资料
RISC-V V 1.0
页码
314
01vsetivli02rd03uimm04vtypei
01
指令助记符vsetivlimnemonic

用 5 位立即数 AVL 配置 vl 与 vtype。

02
新 vlrddestination

接收硬件选出的 vl;写 x0 可丢弃结果。

03
AVLuimmimmediate

5 位零扩展立即数,范围为 0…31。

04
向量类型立即数vtypeiimmediate

编码 SEW、LMUL、尾部策略与掩码策略。

VSETIVLI · VECTOR CONFIGURATION32-BIT INSTRUCTION · XLEN-WIDE VTYPE
vsetivli x5, 10, e32, m4, tu, mu # VLEN=128
vtype[7:0]当前低 8 位结果0b00010010 · 0x12
VLMAXLMUL × VLEN ÷ SEW(示例 VLEN=128)16 个元素
32 位指令编码每个框说明相应位段的来源与作用
bit 31:30固定11

选择立即数 AVL 形式

bit 29:20vtypei[9:0]0000010010

位 9:8 必须为 0;位 7:0 按下表写入 vtype

bit 19:15uimm[4:0]01010

零扩展 AVL=10

bit 14:12funct3111

向量配置指令的固定功能码

bit 11:7rd00101

x5 接收新的 vl;rd=x0 时只更新 CSR

bit 6:0opcode1010111

OP-V 主操作码

写入 vtype 的每一位RV32 布局;RV64 仅将 vill 移到 bit 63
bit XLEN−1vill0

硬件接受配置时为 0;不支持任一位组合时置 1,并把其余位及 vl 清零。

bit XLEN−2:8reserved全 0

每一位都必须写 0;任一位非零都是不支持的 vtype。vsetvl 会检查 rs2 的全部 XLEN 位。

bit 7vma0

mu:被掩码元素保持旧值

bit 6vta0

tu:尾部元素保持旧值

bit 5vsew[2]0

与位 4、3 组成 vsew=010,选择 SEW=32

bit 4vsew[1]1

与位 5、3 共同编码元素宽度 SEW=32

bit 3vsew[0]0

与位 5、4 共同编码元素宽度 SEW=32

bit 2vlmul[2]0

与位 1、0 组成 vlmul=010,选择 m4 · 4

bit 1vlmul[1]1

与位 2、0 共同编码 m4 · 4

bit 0vlmul[0]0

与位 2、1 共同编码 m4 · 4

修改选项后,编码位与含义同步更新vl 由 AVL、VLMAX 与规范约束共同确定,并写入 rd配置指令不读写向量寄存器元素

指令形式

语法说明
vsetivli rd, uimm, vtypeiuimm[4:0] 给出 AVL,vtypei 提供新向量类型

配置语义

VLMAX = LMUL × VLEN / SEW。AVL 是 uimm[4:0] 的零扩展值,范围为 0…31;硬件依据 AVL、VLMAX 和规范约束选择新 vl,成功执行后 x[rd] = vl

vtypevill 位于 XLEN-1XLEN-2:8 为必须写零的保留位,位 7 是 vma,位 6 是 vta,位 5:3 是 vsew,位 2:0 是 vlmul。上方演示会逐位显示当前设置及其含义;在本指令编码内,vtypei[9:8] 必须为零。

语义伪代码

VSETIVLIRISC-V V 1.0 · PSEUDOCODE
AVL = zero_extend(uimm[4:0])
requested_vtype = zero_extend(vtypei)
(vl, vtype) = select_vl_and_validate_vtype(AVL, requested_vtype)
x[rd] = vl                 # rd=x0 discards this write
vstart = 0
agnostic 表示规范允许保留旧值或写全 1;辅助函数名称直接表达其规范动作。

注意点

修改的寄存器与状态

指令写入 vlvtype 和整数目标 rd,并在成功结束时把 vstart 清零;向量寄存器、fflagsvxrmvxsat 保持不变。配置指令不使用执行掩码,也不直接改写任何尾部或被掩码的向量元素;vtavma 只规定后续向量指令的写入策略。

若实现不支持给出的 vtype 任一位组合,硬件令 vtype.vill=1、其余 vtype 位为零,并令 vl=0

内存对齐

不访问数据内存,因此没有内存对齐要求。

示例

asm
vsetivli t0, 12, e16, m2, ta, ma  # AVL=12,t0 得到硬件选择的新 vl

参考

SIGNAL MAINTAINED · BUILT FROM MARKDOWN