VGHSH.VV 是否总能带 v0.t 掩码?
不能。该类 element-group 密码指令没有 vm 操作数;不要把普通 RVV 掩码语法套到页面示例中。
向量 GHASH 加乘:用 vs1 密文组和 vs2 哈希子密钥更新 vd 中的部分哈希。
语法 vghsh.vv vd, vs2, vs1;向量寄存器选择 v0–v31。vd 同时提供输入;固定 vm=1,不可掩码。没有立即数。
32 位 OP-VE:funct6=101100,固定 vm=1[25],vs2[24:20],vs1[19:15],funct3=010,vd[11:7],opcode=1110111。
Zvkg 依赖 Zve32x;SEW=32、EGW=128、EGS=4,其它 SEW 保留。vd 的原 Y 与 vs1 的 X 异或后再乘 vs2 的 H;按 x^128+x^7+x^2+x+1 约简,输入和输出按每字节位反转衔接 GHASH 位序。执行延迟必须与数据无关。
vl 和 vstart 必须为 4 的整数倍,否则编码保留。LMUL*VLEN<128 即使 vl=0 也引发非法指令异常。启用向量状态,使用合法受支持的 vtype;同宽源/目的允许重叠,读取原始源值,同名输入值须一致;LMUL>1 的组须对齐。
仅处理 body 内活动元素,prestart 保持,inactive/tail 遵守 vma/vta。vstart≥vl(含 vl=0)不更新任何目标元素;成功执行清零 vstart。实现可拒绝不支持的非零 vstart。
vghsh.vv 在 SEW=32 的 128 位 element group 上执行 GHASH add-multiply。它从 vd 读取部分哈希 Y_i,从 vs1 读取密文 X_i,从 vs2 读取哈希子密钥 H,并把更新后的 Y_(i+1) 写回 vd。
此有界模型展示一个 128 位 element group 的 ISA 可见状态;不表示流水线、密码协议或未指定的实现细节。
执行环境:启用 Zvkg 与向量状态,合法支持的 vtype;LMUL=1,正常分支 VLEN≥256,仅展开组 0(最低 128 位,元素 0 在低 32 位)。容量不足分支表示 LMUL*VLEN<128。非零 vstart 假设实现支持。
funct6=101100, funct3=010, Zvkg
读取 vd 中的原值与 vs1 做 XOR 后,再与 vs2 做 GHASH 域乘法。
语法 vghsh.vv vd, vs2, vs1;向量寄存器选择 v0–v31。vd 同时提供输入;固定 vm=1,不可掩码。没有立即数。
32 位 OP-VE:funct6=101100,固定 vm=1[25],vs2[24:20],vs1[19:15],funct3=010,vd[11:7],opcode=1110111。
Zvkg 依赖 Zve32x;SEW=32、EGW=128、EGS=4,其它 SEW 保留。vd 的原 Y 与 vs1 的 X 异或后再乘 vs2 的 H;按 x^128+x^7+x^2+x+1 约简,输入和输出按每字节位反转衔接 GHASH 位序。执行延迟必须与数据无关。
vl 和 vstart 必须为 4 的整数倍,否则编码保留。LMUL*VLEN<128 即使 vl=0 也引发非法指令异常。启用向量状态,使用合法受支持的 vtype;同宽源/目的允许重叠,读取原始源值,同名输入值须一致;LMUL>1 的组须对齐。
仅处理 body 内活动元素,prestart 保持,inactive/tail 遵守 vma/vta。vstart≥vl(含 vl=0)不更新任何目标元素;成功执行清零 vstart。实现可拒绝不支持的非零 vstart。
启用本页扩展与向量状态、合法受支持 vtype、LMUL=1、VLEN=256、vstart=0、无掩码;SEW=32, vl=4, v4=0x0, v8=0x80, v12=0x80: v4=0x80。示例只给出活动组/元素,尾部按 tu 保持。成功后 vstart=0。
启用本页扩展与向量状态、合法受支持 vtype、LMUL=1、VLEN=256、vstart=0、无掩码;SEW=32, vl=4, v4=0x0, v8=0x80, v12=0x80: v4=0x80。示例只给出活动组/元素,尾部按 tu 保持。成功后 vstart=0。
不能。该类 element-group 密码指令没有 vm 操作数;不要把普通 RVV 掩码语法套到页面示例中。
SEW 必须为 32,EGW=128、EGS=4;其它 SEW 编码保留。