Get Mask Up to Lowest Set Bit

Encoding

EncodingOperand 1Operand 2
vmVEX.vvvv[w]ModRM.r/m[r]

Description

The BLSMSK instruction sets all the bits in the destination operand from position 0 up to (and including) the lowest set bit of the source operand. All other bits in the destination operand are cleared.

The operand size is always 32 bits if not in Long Mode. In other words, VEX.W1 is treated as VEX.W0 outside Long Mode.

Operation

public void BLSMSK(ref U32 dest, U32 src)
{
    dest = (-src) ^ src;
}

public void BLSMSK(ref U64 dest, U64 src)
{
    dest = (-src) ^ src;
}

Flags Affected

CF (carry flag)
Set if the source is not zero. Cleared otherwise.
PF (parity flag)
Undefined.
AF (auxiliary flag)
Undefined.
ZF (zero flag)
Cleared.
SF (sign flag)
Set according to the result.
OF (overflow flag)
Cleared.

Intrinsics

Exceptions

SIMD Floating-Point

None.

Other Exceptions

VEX Encoded Form: See Type 13 Exception Conditions.