The main this this test does is to add the IsNotPIC predicate to the all
the atomic instructions pattern that directly refer to tglobaladdr.
This is because in PIC mode we need to generate seperate instruciton
sequence (either a direct global.get, or __memory_base + offset) for
accessing global addresses.
As part of this change I noticed that many of the Requires attributes
added to the instruction in WebAssemblyInstrAtomics.td were not being
honored. This is because the wrapped in a `let Predicates =
[HasAtomics]` block and it seems that that outer wrapping overrides any
Requires on defs within it. As a workaround I removed the outer
let and added HasAtomics to all the inner Requires. I believe
that all the instrucitons that don't have Requires explcity bottom out
in ATOMIC_I and ATOMIC_NRI which have HasAtomics so this should
not remove this predicate from any patterns (at least that is the idea).
Good point. Maybe we can restore these for load/store patterns? (This and similar Predicates below) These patterns don't seem to contain PIC related predicates anyway.