VMV2R.V 会只复制当前 vl 个元素吗?
不会。整寄存器移动复制完整向量寄存器组,不按当前 vl 或 SEW 选择元素。
复制 2 个连续完整向量寄存器的完整位内容,不按当前 vl、SEW 或 v0.t 逐元素筛选。
VMV2R.V 是 RISC-V V 扩展的整寄存器移动指令。它按 NREG=2 从 vs2 起始的向量寄存器组复制完整位内容到 vd 起始的寄存器组;该复制用于编译器重排向量寄存器内容,不需要知道或改变当前 vl。
从 OP-V 编码解析整寄存器移动字段,再复制 2 个完整向量寄存器;当前 vl 和 v0.t 不限制复制范围,SEW 只用于计算 evl。
EEW=SEW=32,EMUL=NREG=2,所以 evl=2*256/32=16。vl 不限制复制范围;vstart >= evl 的编码保留,不显示为可执行复制。
整寄存器移动使用 OPIVI 编码形式。动画把固定字段、完整 simm[4:0] immediate、源寄存器组和目标寄存器组放在同一条编码带中。
动画只展示官方 V 扩展定义的 ISA 可见关系:OP-V 字段解析、NREG=2 整寄存器组选择、完整寄存器内容复制和 vd 写回;不按 vl、SEW 或 v0.t 逐元素筛选,也不模拟流水线、缓存或执行时延。
VMV2R.V 复制整寄存器组的完整位内容。它不是 VMV.V.V 这种按当前 body 元素移动的形式;vl、SEW 和 v0.t 不限制复制范围。
vd、vs2 为 2 个连续向量寄存器的组起点,按 2 对齐,不越过 v31。
32 位 OP-V,opcode=1010111、funct6=100111、funct3=011、vm=1;simm[4:0]=00001 为固定字段,没有 v0.t。
vstart=0 时复制全部位;非零 vstart 从该元素继续,evl=NREG*VLEN/SEW,vstart≥evl 保留;vl 不限制复制,vd=vs2 不改向量状态。
要求 V 1.0、合法受支持 vtype、mstatus.VS 非 Off;H 且虚拟化 V=1 时 vsstatus.VS 也须非 Off。成功执行后 vstart 复位为0。
假定 V/VS 已启用、合法 m1、VLEN≥128、源已初始化、vstart=0;NREG=2: v2=v16, v3=v17。成功执行后 vstart=0。
假定 V/VS 已启用、合法 m1、VLEN≥128、源已初始化、vstart=0;NREG=2: v2=v16, v3=v17。成功执行后 vstart=0。
假定 V/VS 已启用、合法 m1、VLEN≥128、源已初始化、vstart=0;NREG=2: v2=v16, v3=v17。成功执行后 vstart=0。
不会。整寄存器移动复制完整向量寄存器组,不按当前 vl 或 SEW 选择元素。
不能。语法没有普通 vm 操作数;编码为未掩码整寄存器移动。
vd 和 vs2 命名连续寄存器组的起点,起点必须按 2 对齐,且寄存器组不能越过 v31。