VSM4R.VV 是否逐元素可掩码?
不是。它是 element-group 密码指令,官方语法无 vm。
向量 SM4 四轮加密/解密;作为不可掩码的 element-group 密码指令执行。
语法 vsm4r.vv vd, vs2;vd 提供当前四字状态并接收下一状态,vs2 提供对应组四个轮密钥;向量寄存器为 v0–v31,不能添加 v0.t。
32 位 OP-VE:funct6=101000、vm=1、vs1字段固定10000、OPMVV=010、opcode=1110111。Zvksed 依赖 Zve32x。
执行四轮:B=x1 XOR x2 XOR x3 XOR rk;S=逐字节SM4 S-box(B);下一字=x0 XOR S XOR ROL32(S,2/10/18/24)。解密按相反次序提供轮密钥。
SEW=32、EGS=4、EGW=128;vl/vstart非4倍数或其它SEW为保留。LMUL*VLEN<128即使vl=0也引发非法指令。vd/vs2可同宽重叠并读原值,组按LMUL对齐。
启用向量状态和合法vtype;仅活动组执行,prestart保持、tail按vta。vstart≥vl不更新目标;成功将vstart清零,非零vstart须实现支持。执行延迟必须与数据无关。
VSM4R.VV 属于 Zvksed:从 vd 读取四个32位当前状态字,从 vs2 对应元素组读取四个轮密钥,按 SM4 S-box、循环移位和异或执行四轮,将下一四字状态写回 vd。SEW=32、EGS=4、EGW=128;固定 vm=1,不可掩码。解密使用相反顺序的轮密钥。
有界模型展示一个 element group 的官方 ISA 可见数据流,不模拟密码协议或微架构。
固定 vm=1,OP-VE,OPMVV;EGS=4,EGW=128。
以下列表按元素索引从低到高排列;只展示活动组,tail 按 tu 保持。 vd[x0..x3]=[0,1,2,3]; vs2[rk0..rk3]=[4,5,6,7]. .vv 从 vs2 读取与当前 vd 状态组对应的轮密钥组。
OP-VE -> funct6 101000 -> vsm4r.vv
VSM4R.VV 是 SM4 向量密码指令,按 element group 执行,不能逐元素独立套用普通整数公式。
语法 vsm4r.vv vd, vs2;vd 提供当前四字状态并接收下一状态,vs2 提供对应组四个轮密钥;向量寄存器为 v0–v31,不能添加 v0.t。
32 位 OP-VE:funct6=101000、vm=1、vs1字段固定10000、OPMVV=010、opcode=1110111。Zvksed 依赖 Zve32x。
执行四轮:B=x1 XOR x2 XOR x3 XOR rk;S=逐字节SM4 S-box(B);下一字=x0 XOR S XOR ROL32(S,2/10/18/24)。解密按相反次序提供轮密钥。
SEW=32、EGS=4、EGW=128;vl/vstart非4倍数或其它SEW为保留。LMUL*VLEN<128即使vl=0也引发非法指令。vd/vs2可同宽重叠并读原值,组按LMUL对齐。
启用向量状态和合法vtype;仅活动组执行,prestart保持、tail按vta。vstart≥vl不更新目标;成功将vstart清零,非零vstart须实现支持。执行延迟必须与数据无关。
启用本页扩展与向量状态,合法 vtype、SEW=32、VLEN=256、LMUL=1、vl=4、vstart=0、tu;按语法指定的寄存器组预置输入。按本页元素组数据流计算,动画列出初值与结果;成功后 vstart=0。
启用本页扩展与向量状态,合法 vtype、SEW=32、VLEN=256、LMUL=1、vl=4、vstart=0、tu;按语法指定的寄存器组预置输入。按本页元素组数据流计算,动画列出初值与结果;成功后 vstart=0。
不是。它是 element-group 密码指令,官方语法无 vm。
SEW 必须为 32,且 LMUL*VLEN 要能覆盖 128 位 element group。