KTESTW, KTESTB, KTESTQ, KTESTD
已包装的位测试面罩和设置旗
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
VEX.L0.0F.W0 99 /r | KTESTW k1, k2 | RR | 有效 | 有效 | 根据16位元面具OR AVX10.1的标志位AND和ANDN的注册源设置ZF和CF. |
VEX.L0.66.0F.W0 99 /r | KTESTB k1, k2 | RR | 有效 | 有效 | 根据8位元的符号比特AND和ANDN的mag-OR AVX10.1 ister源设置ZF和CF. |
VEX.L0.0F.W1 99 /r | KTESTQ k1, k2 | RR | 有效 | 有效 | 根据64位元面具 OR AVX10.1 的标志位 AND 和 ANDN 设置 ZF 和 CF 注册源. |
VEX.L0.66.0F.W1 99 /r | KTESTD k1, k2 | RR | 有效 | 有效 | 根据32位元面具OR AVX10.1寄存源的符号位AND和ANDN设定ZF和CF. |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
RR
modrm.reglecturaModRM 字节的 reg 字段(第 5-3 位)modrm.rmlecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
实测开销
正在从 arch-data 加载实测数据...
说明
对第一源操作数的位点和第二源操作数的对应位点进行比数比较. 如果AND操作产生所有零,则ZF被另设定为ZF清晰. 如果使用第二源操作数的反向第一源操作数的位元AND操作产生所有零,则CF会被另设定为CF清晰. 只有 EFLAGS 登记册更新 。
说明: 在VEX-encoded版本中,VEX.vvvv是保留的,必须是1111b,否则指令会#UD.
行动
KTESTW
TEMP[15:0] := SRC2[15:0] AND SRC1[15:0]
IF (TEMP[15:0] = = 0)
THEN ZF :=1;
ELSE ZF := 0;
FI;
TEMP[15:0] := SRC2[15:0] AND NOT SRC1[15:0]
IF (TEMP[15:0] = = 0)
THEN CF :=1;
ELSE CF := 0;
FI;
AF := OF := PF := SF := 0;
KTESTB
TEMP[7:0] := SRC2[7:0] AND SRC1[7:0]
IF (TEMP[7:0] = = 0)
THEN ZF :=1;
ELSE ZF := 0;
FI;
TEMP[7:0] := SRC2[7:0] AND NOT SRC1[7:0]
IF (TEMP[7:0] = = 0)
THEN CF :=1;
ELSE CF := 0;
FI;
AF := OF := PF := SF := 0;
KTESTQ
TEMP[63:0] := SRC2[63:0] AND SRC1[63:0]
IF (TEMP[63:0] = = 0)
THEN ZF :=1;
ELSE ZF := 0;
FI;
TEMP[63:0] := SRC2[63:0] AND NOT SRC1[63:0]
IF (TEMP[63:0] = = 0)
THEN CF :=1;
ELSE CF := 0;
FI;
AF := OF := PF := SF := 0;
KTESTD
TEMP[31:0] := SRC2[31:0] AND SRC1[31:0]
IF (TEMP[31:0] = = 0)
THEN ZF :=1;
ELSE ZF := 0;
FI;
TEMP[31:0] := SRC2[31:0] AND NOT SRC1[31:0]
IF (TEMP[31:0] = = 0)
THEN CF :=1;
ELSE CF := 0;
FI;
AF := OF := PF := SF := 0;SIMD 浮点 例外
None.
其他例外
参见表2-65"TYPE K20例外定义(VEX-Encoded Opmask Directions w/o Memory Arg)".