Opcode | Encoding | 16-bit | 32-bit | 64-bit | CPUID Feature Flag(s) | Description |
---|---|---|---|---|---|---|
XOP.L0.NP.09.W0 01 /1 BLCFILL r32, r/m32 | rm | Invalid | Valid | Valid | tbm | Find the least significant cleared bit in r/m32 and clear all lower bits. Store the result in r32. |
XOP.L0.NP.09.W1 01 /1 BLCFILL r64, r/m64 | rm | Invalid | Invalid | Valid | tbm | Find the least significant cleared bit in r/m64 and clear all lower bits. Store the result in r64. |
Encoding
Encoding | Operand 1 | Operand 2 |
---|---|---|
rm | ModRM.reg[w] | ModRM.r/m[r] |
Description
The BLCFILL
instruction clears, from the source operand, all set bits up to the lowest cleared bit. The result is stored in the destination operand.
The operand size is always 32 bits if not in Long Mode. In other words, XOP.W1
is treated as XOP.W0
outside Long Mode.
Operation
public void BLCFILL(ref U32 dest, U32 src)
{
dest = src & (src + 1);
}
public void BLCFILL(ref U64 dest, U64 src)
{
dest = src & (src + 1);
}
Flags Affected
CF
(carry flag)- Set according to the result.
PF
(parity flag)- Set according to the result.
AF
(auxiliary flag)- Set according to the result.
ZF
(zero flag)- Set according to the result.
SF
(sign flag)- Set according to the result.
OF
(overflow flag)- Set according to the result.
Intrinsics