Sometimes, you can end up with cross-bank copies between same-sized GPRs and FPRs, which feed into G_STOREs. When these copies feed only into stores, they aren't necessary; we can just store using the original register bank.
This provides some minor code size savings for some floating point SPEC benchmarks. (Around 0.2% for 453.povray and 450.soplex)
This issue doesn't seem to show up due to regbankselect or anything similar. So, this patch introduces an early select function, contractCrossBankCopyIntoStore which performs the contraction when possible. The selector then continues normally and selects the correct store opcode, eliminating needless copies along the way.