At least based on the lit tests, the coalescer sometimes fail to
propagate the copy from X0 into the branch instruction. This patch
does it manually during isel. The majority of the changes are from
the select patterns.
Some of the changes are just register allocation changes. Only
the Select change affects the whether a b*z instruction is generated
in the tests. I changed the branch pattern for consistency.
I think there's still a problem with this code. This initialization of a1 appears to never be clobbered, and yet we have multiple register copies below instead of zero initialization. It's less immediate problematic than the branch interaction, but something odd is still going on here.