Adds handling for AArch64 exclusive loads that discard a value by targeting the zero register. Without this fix, we loop forever in the store since we load the real value and compare it to the zero we recorded. Our fix is to replace the zero register with a scratch register so that we record the actual value at load time. For the same-block optimized case, we instead simply skip the value comparison check at the store.
Adds a test of every size and destination zero variant. This test spins (at multiple points) without the fix.
Fixes #5245 (closed)