Intel Cleans Up LLVM/Clang For Misreporting CLDEMOTE On Arrow Lake & Future Hybrid CPUs
Code compilers like the prominent GCC and LLVM/Clang have been advertising support for the Cache Line Demote "CLDEMOTE" instruction on Arrow Lake processors as well as Lunar Lake and upcoming Panther Lake hybrid processors. Intel engineers added that compiler plumbing but was inaccurate and inadvertently missed until now with this prominent instruction not being supported there.
The CLDEMOTE instruction allows for the OS to tell the CPU core to demote a specified cache line to a higher cache level further away from the core. CLDEMOTE was found beginning with Intel Xeon Sapphire Rapids processors and can be helpful for system performance.
The compiler patches for GCC and LLVM/Clang have advertised CLDEMOTE being found with Arrow Lake, Lunar Lake, and upcoming Panther Lake but is inaccurate. That compiler enablement work was originally submitted years ago by Intel engineers but turned out to be inaccurate. This slipped under my radar too but when checking tonight on my Arrow Lake systems, CLDEMOTE support is indeed not advertised by the processor.
The GCC compiler is still advertising and will attempt to use CLDEMOTE on Arrow Lake and later too, but presumably will see a similar patch soon for removing the presence of CLDEMOTE on those Intel Core Ultra CPUs too.
Update: Intel has now posted a similar patch for the GCC compiler removing CLDEMOTE from client CPUs.
The CLDEMOTE instruction allows for the OS to tell the CPU core to demote a specified cache line to a higher cache level further away from the core. CLDEMOTE was found beginning with Intel Xeon Sapphire Rapids processors and can be helpful for system performance.
The compiler patches for GCC and LLVM/Clang have advertised CLDEMOTE being found with Arrow Lake, Lunar Lake, and upcoming Panther Lake but is inaccurate. That compiler enablement work was originally submitted years ago by Intel engineers but turned out to be inaccurate. This slipped under my radar too but when checking tonight on my Arrow Lake systems, CLDEMOTE support is indeed not advertised by the processor.
👁 LLVM Clang removes CLDEMOTE from Arrow Lake
The GCC compiler is still advertising and will attempt to use CLDEMOTE on Arrow Lake and later too, but presumably will see a similar patch soon for removing the presence of CLDEMOTE on those Intel Core Ultra CPUs too.
Update: Intel has now posted a similar patch for the GCC compiler removing CLDEMOTE from client CPUs.
