XPERM4 是否访问内存?
不访问。它只在整数寄存器内重排位字段或查表。
半字节查表置换(Zbkx)。
语法为 xperm4 rd, rs1, rs2;操作数为整数 x0–x31 或 ABI 名称,没有汇编立即数。
32 位 OP:funct7=0010100、funct3=010、opcode=0110011。
RV32/RV64 Zbkx;rs1 保存 XLEN/4 个 4 位表项,rs2 各元素为索引,越界结果为零。
x0 源恒为零,写入 x0 被丢弃;重叠源/目标读取写回前的值,同名源只有一个值。不访问内存。
XPERM4(Zbkx)把 rs1 看作由 XLEN/4 个 4 位元素组成的表,把 rs2 的每个 4 位元素看作索引。对每个结果位置,若索引小于 XLEN/4,则从 rs1 中选取对应 4 位元素写入 rd;否则该结果元素写 0。
每个 4-bit rs2 元素是 rs1 元素表的索引;越界结果元素为零。
x0 恒为零;源值在写回前读取。教学步骤不表示处理器周期。
00101000110001011010010100110011x[rs2] indexes 8 entries in x[rs1]; result = 0x00000000
显示当前指令的固定字段和寄存器字段。
XPERM4 在整数寄存器内查表:rs1 保存 XLEN/4 个半字节,rs2 的各半字节选择对应表项;越界索引写零。
RV32 Zbkx,x11=0x89ABCDEF、x12=0x76543210:xperm4 x10, x11, x12 得到 x10=0x89ABCDEF。
RV32 Zbkx,x11=0x89ABCDEF、x12=0x76543210:xperm4 x10, x11, x12 得到 x10=0x89ABCDEF。
不访问。它只在整数寄存器内重排位字段或查表。
它属于 Zbkx 交叉置换扩展。