This patch changes the way VGPR register pairs (for 64-bit values) are allocated. There are no hardware restrictions on the alignment of such pairs (unlike for scalar registers), but there's also not a full set of 64-bit instructions, meaning that many operations get decomposed into two or more real instructions. This creates an early-clobber problem when the inputs and outputs partially overlap, so up to now we've been adding the early-clobber constraint and fixing it that way. To complicate matters, most of the patterns don't have any trouble if the inputs and output registers match exactly, and often having them do so reduces register pressure, so we've been adding '0' match-constraints to allow that. All this works, but there have been several bugs with missed early-clobber cases, and several more where the match-constraints conflict with other "real" match constraints, or generally confuse LRA. The fix is usually to explode the number of alternatives. The presence of these constraints also tends to mess up the alternative scoring system, which can make for suboptimal decisions. To make things worse the exact effects tend to change over time, creating an ongoing maintenance burden. This patch forces registers pairs to be allocated aligned, and removes all the early-clobber work-arounds, leaving only actual early-clobber cases. Andrew