# XTEST — Test if in Transactional Execution

Opcode/Instruction | Op/En | 64/32bit Mode Support | CPUID Feature Flag | Description
--- | --- | --- | --- | ---
NP 0F 01 D6 XTEST | ZO | V/V | HLE or RTM | Test if executing in a transactional region.

## Instruction Operand Encoding ¶

Op/En | Operand 1 | Operand2 | Operand3 | Operand4
--- | --- | --- | --- | ---
ZO | N/A | N/A | N/A | N/A

## Description ¶

The XTEST instruction queries the transactional execution status. If the instruction executes inside a transactionally executing RTM region or a transactionally executing HLE region, then the ZF flag is cleared, else it is set.

## Operation ¶

### XTEST ¶

    IF (RTM_ACTIVE = 1 OR HLE_ACTIVE = 1)
        THEN
            ZF := 0
        ELSE
            ZF := 1
    FI;

## Flags Affected ¶

The ZF flag is cleared if the instruction is executed transactionally; otherwise it is set to 1. The CF, OF, SF, PF, and AF, flags are cleared.

## Intel C/C++ Compiler Intrinsic Equivalent ¶

    XTEST int _xtest( void );

## SIMD Floating-Point Exceptions ¶

None.

## Other Exceptions ¶

#UD | CPUID.(EAX=7, ECX=0):EBX.HLE[bit 4] = 0 and CPUID.(EAX=7, ECX=0):EBX.RTM[bit 11] = 0.
If LOCK prefix is used.