CLDEMOTE: Demote Cache Line

For information about interpreting this page, see the help page.
Opcode and MnemonicEncoding16 bit Mode32 bit Mode64 bit ModeCPUID Feature FlagDescription
NP 0F 1C /0
CLDEMOTE m8
MValidValidValidCLDEMOTEHint to the processor to move the cache line containing m8 to a more distant cache without writing back to memory.

Encoding

EncodingOperand
MModRM.r/m[w]

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

This pseudo-code uses C# syntax. A list of the types used is available here.
public void CLDEMOTE(IntPtr ptr)
{
  CacheLineDemote(ptr);
}

C Intrinsics

Exceptions

Protected Mode

#UD
If the LOCK prefix is used.

Real-Address Mode

#UD
If the LOCK prefix is used.

Virtual-8086 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.