- Don't try to copy values to and from the same register class.
- Replace copies with of registers with immediate values with v_mov/s_mov instructions.
The main purpose of this change is to make MachineSink do a better job of
determining when it is beneficial to split a critical edge, since the pass
assumes that copies will become move instructions.
This prevents a regression in uniform-cfg.ll if we enable critical edge
splitting for AMDGPU.
DebugLocs are supposed to be passed by reference now