Skip to content

VSHUFPS:x86 permute向量指令

VSHUFPS 属于 AVX 的 permute 类 SIMD 指令。传统、VEX 与 EVEX 形式如共享该助记符,会集中列在本页。

操作码
Intel SDM · 见各编码形式
指令集
AVX / AVX512F
英文全称
VSHUFPS
参考资料
Intel SDM
页码
01VSHUFPS02ymm, ymm, ymm, imm8
01
指令助记符VSHUFPSmnemonic

VSHUFPS 的 AVX 编码。

02
操作数ymm, ymm, ymm, imm8destination

Intel 官方资料列出的一个操作数形式;全部形式见下表。

VSHUFPS · REGISTER OPERATIONX86 · PERMUTE
元素数量向量宽度 ÷ 元素宽度32
vs2 · zmm1第一来源
zmm1[511:0]
vs2[31]3216 bits
vs2[30]3116 bits
vs2[29]3016 bits
vs2[28]2916 bits
vs2[27]2816 bits
vs2[26]2716 bits
vs2[25]2616 bits
vs2[24]2516 bits
vs2[23]2416 bits
vs2[22]2316 bits
vs2[21]2216 bits
vs2[20]2116 bits
vs2[19]2016 bits
vs2[18]1916 bits
vs2[17]1816 bits
vs2[16]1716 bits
vs2[15]1616 bits
vs2[14]1516 bits
vs2[13]1416 bits
vs2[12]1316 bits
vs2[11]1216 bits
vs2[10]1116 bits
vs2[9]1016 bits
vs2[8]916 bits
vs2[7]816 bits
vs2[6]716 bits
vs2[5]616 bits
vs2[4]516 bits
vs2[3]416 bits
vs2[2]316 bits
vs2[1]216 bits
vs2[0]116 bits
vs1 · zmm2第二来源
zmm2[511:0]
vs1[31]6416 bits
vs1[30]6316 bits
vs1[29]6216 bits
vs1[28]6116 bits
vs1[27]6016 bits
vs1[26]5916 bits
vs1[25]5816 bits
vs1[24]5716 bits
vs1[23]5616 bits
vs1[22]5516 bits
vs1[21]5416 bits
vs1[20]5316 bits
vs1[19]5216 bits
vs1[18]5116 bits
vs1[17]5016 bits
vs1[16]4916 bits
vs1[15]4816 bits
vs1[14]4716 bits
vs1[13]4616 bits
vs1[12]4516 bits
vs1[11]4416 bits
vs1[10]4316 bits
vs1[9]4216 bits
vs1[8]4116 bits
vs1[7]4016 bits
vs1[6]3916 bits
vs1[5]3816 bits
vs1[4]3716 bits
vs1[3]3616 bits
vs1[2]3516 bits
vs1[1]3416 bits
vs1[0]3316 bits
vd · zmm0(结果)permute
zmm0[511:0]
vd[31]1permute
vd[30]2permute
vd[29]3permute
vd[28]4permute
vd[27]5permute
vd[26]6permute
vd[25]7permute
vd[24]8permute
vd[23]9permute
vd[22]10permute
vd[21]11permute
vd[20]12permute
vd[19]13permute
vd[18]14permute
vd[17]15permute
vd[16]16permute
vd[15]17permute
vd[14]18permute
vd[13]19permute
vd[12]20permute
vd[11]21permute
vd[10]22permute
vd[9]23permute
vd[8]24permute
vd[7]25permute
vd[6]26permute
vd[5]27permute
vd[4]28permute
vd[3]29permute
vd[2]30permute
vd[1]31permute
vd[0]32permute
每个圆球代表一个完整元素强调背景:目标写入高索引在左、低索引在右

指令形式

语法说明
VSHUFPS xmm {k}, xmm, xmm, imm8Intel 官方操作数形式
VSHUFPS xmm {z}, xmm, xmm, imm8Intel 官方操作数形式
VSHUFPS ymm {k}, ymm, ymm, imm8Intel 官方操作数形式
VSHUFPS ymm {z}, ymm, ymm, imm8Intel 官方操作数形式
VSHUFPS ymm, ymm, ymm, imm8Intel 官方操作数形式
VSHUFPS zmm {k}, zmm, zmm, imm8Intel 官方操作数形式
VSHUFPS zmm {z}, zmm, zmm, imm8Intel 官方操作数形式
VSHUFPS zmm, zmm, zmm, imm8Intel 官方操作数形式

操作语义

操作数按 Intel SDM 中该编码规定的 packed 元素或低位标量解释。元素 0 位于向量寄存器最低有效位;128 位 lane 内行为与跨 lane 行为以具体形式为准。

注意点

修改的寄存器

显式目标寄存器或内存被写入,来源保持不变。传统双操作数形式可能覆盖第一来源;VEX/EVEX 非破坏性形式使用独立目标,并按编码规则清零有效宽度以上的目标位。EVEX 写掩码支持合并与 {z} 清零。

内存对齐

普通算术和转换内存来源通常没有额外自然对齐要求;名称为 aligned move 的形式以及部分非临时存储必须按 16、32 或 64 字节操作数宽度对齐。地址始终必须可访问完整操作数。

标志位与异常

浮点运算可能依据 MXCSR、舍入控制和 SAE 累积浮点异常。 只有 Intel SDM 明确规定的比较、测试或字符串形式修改 EFLAGS/RFLAGS;其他形式不修改整数标志。

示例形式

asm
vshufps ymm, ymm, ymm, imm8

参考

SIGNAL MAINTAINED · BUILT FROM MARKDOWN