This is a companion to D57601, but will be landed afterwards. I don't want to have to worry about two sources of atomic MMOs, some volatile, some not.
The existing lowering code is accidentally correct for unordered atomics as far as I can tell. An unordered atomic has no memory ordering, and simply requires the actual load or store to be done as a single well aligned instruction. As such, relax the restriction while adding tests to ensure the lowering remains correct in the future.
I don't know about mixing GlobalISel and SelectionDAG tests.
I would also expect this to be a MIR pass which just runs the selector, but it looks like x86 is using a number of end-to-end tests for this already