Opcode | Encoding | 16-bit | 32-bit | 64-bit | CPUID Feature Flag(s) | Description |
---|---|---|---|---|---|---|
NP 0F 1C mem/0 CLDEMOTE m8 | m | Valid | Valid | Valid | cldemote | Hint to the processor that the memory at m8 will not be accessed for a while and can be moved to a more distant cache level. |
Encoding
Encoding | Operand |
---|---|
m | ModRM.r/m |
Description
The CLDEMOTE
instruction hints to the processor that the cache line containing the operand's effective address should be moved ("demoted") to a cache further away from the core.
Software using this instruction should ensure that the referenced memory is not accessed afterwards to avoid cache data move penalties.
This instruction has no guarantees and may be ignored by the processor. For example, usage of this instruction with an effective memory address that is not in the cache will do nothing.
In some architectures, this instruction may cause a transactional abort with the Transactional Synchronization Extensions (TSX). However, programmers must not rely on this behavior.
Operation
public void CLDEMOTE(IntPtr addr)
{
CacheLineDemote(addr);
}
Intrinsics
void _cldemote(const void *ptr)
Exceptions
Real-Address Mode
#UD
- If the
LOCK
- prefix is used.
Virtual-8086 Mode
#UD
- If the
LOCK
- prefix is used.
Protected Mode
#UD
- If the
LOCK
- prefix is used.
Compatibility Mode
#UD
- If the
LOCK
- prefix is used.
Long Mode
#UD
- If the
LOCK
- prefix is used.