GNU Assembler Patches Sent Out For Optimizing The Intel Jump Conditional Code Erratum
Now that Intel lifted its embargo on the "Jump Conditional Code" erratum affecting Skylake through Cascade Lake processors, while Intel's own Clear Linux was first to carry these patches they have now been sent out on the Binutils mailing list for trying to get the JCC optimization patches into the upstream Binutils/GAS code-base.
Well known Intel compiler toolchain expert H.J. Lu sent out the five patches on Tuesday for optimizing around the JCC Erratum. The GNU Assembler (GAS) patches aim to mitigate the performance by aligning branches within 32-byte boundaries for various instructions. The behavior is activated via the -mbranches-within-32B-boundaries command line switch.
The patches in total are over three thousand lines, including the addition of new test cases. If these patches are punctually accepted into the code-base, they will become part of the GNU Binutils 2.34 release in 2020 aside from getting picked up by the likes of Clear Linux and any other distributions wanting to deliver this mitigated support early to help offset the performance impact of Intel's new microcode updates.
For those wondering about the behavior if running a patched GNU Assembler with the 32B-boundaries option, I'll have those results out in the coming days along with more JCC Erratum benchmarks. If you missed the tests from yesterday see Benchmarks Of JCC Erratum: A New Intel CPU Bug With Performance Implications On Skylake Through Cascade Lake and The Gaming Performance Impact From The Intel JCC Erratum Microcode Update.