PSRLDQ

右移双四字

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
66 0F 73 /3 ibPSRLDQ xmm1, imm8A有效有效右移 xmm1 由 imm8 在 0s 中移动 。
VEX.128.66.0F.WIG 73 /3 ibVPSRLDQ xmm1, xmm2, imm8B有效有效右移 xmm2 由 imm8 字节在 0s 中移动时进行.
VEX.256.66.0F.WIG 73 /3 ibVPSRLDQ ymm1, ymm2, imm8B有效有效右移 ymm1 由 imm8 字节在 0s 中移动时进行.
EVEX.128.66.0F.WIG 73 /3 ibVPSRLDQ xmm1, xmm2/m128, imm8C有效有效右移 xmm2/m128 由 imm8 字节进行,而 AVX512BW) OR AVX10.1 以 0s 移动,存储结果为 xmm1.
EVEX.256.66.0F.WIG 73 /3 ibVPSRLDQ ymm1, ymm2/m256, imm8C有效有效右移 ymm2/m256 由 imm8 字节进行,而 AVX512BW) OR AVX10.1 以 0s 移动,存储结果为 ymm1.
EVEX.512.66.0F.WIG 73 /3 ibVPSRLDQ zmm1, zmm2/m512, imm8C有效有效右移 zmm2/m512 由 imm8 字节进行,而 OR AVX10.1 则在 0s 中移动,存储结果为 zmm1.

操作数编码

每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。

A

  1. modrm.rm lectura y escrituraModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
  2. imm8指令后的立即数字节

B

  1. vex.vvvv escrituraVEX 前缀的 vvvv 字段(按位取反)
  2. modrm.rm lecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
  3. imm8指令后的立即数字节

C

  1. evex.vvvv escrituraEVEX 前缀的 vvvv 字段(按位取反)
  2. modrm.rm lecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
  3. imm8指令后的立即数字节

Tupla: Full Mem

实测开销

正在从 arch-data 加载实测数据...

说明

将 目标操作数 (第一个 操作数) 移到右侧, 以计数 操作数 (第二个 操作数) 中指定的字节数表示. 空高序字节被清除(设置为所有 0s). 如果计数 操作数 指定的值大于 15,则 目标操作数 设定为全部 0s 。 计数操作数为8位即时.

在64位模式中,没有用VEX/EVEX编码,使用REX前缀形式为REX.R允许此指令访问额外的注册(XMM8-XMM15).

128位遗产 SSE 版本 : 来源与目标操作数相同. 相应的YMM目的地注册保持不变的位数(MAXVL-1:128).

VEX.128 编码版本 : 来源和目标操作数是XMM登记册. 目的地YMM的位数(MAXVL-1:128)登记被清零.

VEX.256 编码版本 : 源操作数是一个YMM登记册. 目标操作数是一个YMM登记册. 对应的ZMM注册被清零的位数(MAXVL-1:256). 计数操作数既适用于低车道,也适用于高128位车道.

EVEX 编码版本 : 源操作数是一个ZMM/YMM/XMM的登记册或512/256/128位内存位置. 目标操作数是一个ZMM/YMM/XMM登记册. 操作数的计数适用于每128位车道.

说明: VEX.vvvv/EVEX.vvvv编码目的地注册.

行动

VPSRLDQ (EVEX.512 Encoded Version)
TEMP := COUNT
IF (TEMP > 15) THEN TEMP := 16; FI
DEST[127:0] := SRC[127:0] >> (TEMP * 8)
DEST[255:128] := SRC[255:128] >> (TEMP * 8)
DEST[383:256] := SRC[383:256] >> (TEMP * 8)
DEST[511:384] := SRC[511:384] >> (TEMP * 8)
DEST[MAXVL-1:512] := 0;

VPSRLDQ (VEX.256 and EVEX.256 Encoded Version)
TEMP := COUNT
IF (TEMP > 15) THEN TEMP := 16; FI
DEST[127:0] := SRC[127:0] >> (TEMP * 8)
DEST[255:128] := SRC[255:128] >> (TEMP * 8)
DEST[MAXVL-1:256] := 0;

VPSRLDQ (VEX.128 and EVEX.128 Encoded Version)
TEMP := COUNT
IF (TEMP > 15) THEN TEMP := 16; FI
DEST := SRC >> (TEMP * 8)
DEST[MAXVL-1:128] := 0;

PSRLDQ (128-bit Legacy SSE Version)
TEMP := COUNT
IF (TEMP > 15) THEN TEMP := 16; FI
DEST := DEST >> (TEMP * 8)
DEST[MAXVL-1:128] (Unmodified)

Intel C/C++ 内在编译器

(V)PSRLDQ __m128i _mm_srli_si128 ( __m128i a, int imm) VPSRLDQ __m256i _mm256_bsrli_epi128 ( __m256i, const int) VPSRLDQ __m512i _mm512_bsrli_epi128 ( __m512i, int);

受影响的旗帜

None.

数字例外

None.

其他例外

非EVEX-encoded指令,参见表2-24"Type 7类例外条件". EVEX-encoded指令,参见表2-52"Type E4NF类例外条件"中的例外类型E4NF.nb.

来源