Some AMD GCN devices support an "XNACK" mode in which the device can handle page-misses (and maybe other traps in memory instructions), but it's not completely invisible to software. We need this now to support OpenMP Unified Shared Memory (I plan to post updated patches for that in January), and in future it may enable support for APU devices (such as MI300). The first patch ensures that load instructions are "restartable", meaning that the outputs do not overwrite the input registers (address and offsets). This maps pretty much exactly to the GCC "early-clobber" concept, so we just need to add additional alternatives and then not generate problem instructions explicitly. The second patch is a workaround for the register allocation patch I asked about on gcc@ yesterday. The early clobber increases register pressure which causes compile failure when LRA is unable to spill additional registers without needing yet more registers. This doesn't become a problem on gfx90a (MI200) so soon due to the additional AVGPR spill registers, and that's the only device that really supports USM, so far, so limiting XNACK to that device will work for now. The -mxnack option was already added as a placeholder, so not much is needed there. Committed to master. An older version of these patches is already committed to devel/omp/gcc-13 (OG13). Andrew