PTEST

逻辑比较

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
66 0F 38 17 /rPTEST xmm1, xmm2/m128RM有效有效设置 ZF 如果 xmm2/m128 AND xmm1 结果都是 0s. 如果 xmm2/m128 AND NOT xmm1结果都是 0s.
VEX.128.66.0F38.WIG 17 /rVPTEST xmm1, xmm2/m128RM有效有效根据来源的位元AND和ANDN设置ZF和CF.
VEX.256.66.0F38.WIG 17 /rVPTEST ymm1, ymm2/m256RM有效有效根据来源的位元AND和ANDN设置ZF和CF.

操作数编码

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

RM

  1. modrm.reg lecturaModRM 字节的 reg 字段(第 5-3 位)
  2. modrm.rm lecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移

实测开销

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

涉及的标志位

说明

PTEST和VPTEST如果结果中的所有位点都是第一源操作数(第一操作数)的位点AND的0和第二源操作数(第二操作数),则设置ZF旗. VPTEST设定了CF旗,如果结果中的所有位点都是第二源运行符(第二源运行符)的位元AND的0,以及目的地运行符的逻辑NOT.

第一个源寄存器由ModR/M reg字段指定.

128位版本 : 第一个来源登记册是XMM登记册。 第二个来源寄存器可以是XMM寄存器,也可以是128位的内存位置寄存器. 目的地登记册没有修改 。

VEX.256 编码版本 : 第一个来源登记册是YMM登记册。 第二个来源寄存器可以是YMM寄存器或256位内存位置寄存器. 目的地登记册没有修改 。

说明: 在VEX-encoded版本中,VEX.vvvv是保留的,必须是1111b,否则指令会#UD.

行动

(V)PTEST (128-bit Version)
IF (SRC[127:0] BITWISE AND DEST[127:0] = 0)

    THEN ZF := 1;
    ELSE ZF := 0;
IF (SRC[127:0] BITWISE AND NOT DEST[127:0] = 0)
    THEN CF := 1;
    ELSE CF := 0;
DEST (unmodified)
AF := OF := PF := SF := 0;

VPTEST (VEX.256 Encoded Version)
IF (SRC[255:0] BITWISE AND DEST[255:0] = 0) THEN ZF := 1;

    ELSE ZF := 0;
IF (SRC[255:0] BITWISE AND NOT DEST[255:0] = 0) THEN CF := 1;

    ELSE CF := 0;
DEST (unmodified)
AF := OF := PF := SF := 0;

Intel C/C++ 内在编译器

PTEST int _mm_testz_si128 (__m128i s1, __m128i s2);
PTEST int _mm_testc_si128 (__m128i s1, __m128i s2);
PTEST int _mm_testnzc_si128 (__m128i s1, __m128i s2);
VPTEST int _mm256_testz_si256 (__m256i s1, __m256i s2);
VPTEST int _mm256_testc_si256 (__m256i s1, __m256i s2);
VPTEST int _mm256_testnzc_si256 (__m256i s1, __m256i s2);
VPTEST int _mm_testz_si128 (__m128i s1, __m128i s2);
VPTEST int _mm_testc_si128 (__m128i s1, __m128i s2);
VPTEST int _mm_testnzc_si128 (__m128i s1, __m128i s2);

受影响的旗帜

OF,AF,PF,SF的旗帜被清除,ZF,CF的旗帜按照行动设置.

SIMD 浮点 例外

None.

其他例外

见表2-21,"第4类例外条件",另外:

#UD                     If VEX.vvvv  1111B.

来源