On Wed, Jun 15, 2016 at 02:51:20PM -0500, Segher Boessenkool wrote: > On Wed, Jun 15, 2016 at 02:24:41PM -0400, Michael Meissner wrote: > > > > ; Some DImode loads are best done as a load of -1 followed by a mask > > > > ; instruction. > > > > (define_split > > > > - [(set (match_operand:DI 0 "gpc_reg_operand") > > > > + [(set (match_operand:DI 0 "int_reg_operand_not_pseudo") > > > > > > Not sure what this is for... If you want to say this split is only to > > > be done after RA, just say that explicitly in the split condition (i.e. > > > "reload_completed"). Or does this mean something else? > > > > This is so that constants being loaded into the vector registers aren't > > split > > (they are handled via different define_splits). Previously, the only > > constant > > that was loaded in vector registers was 0. > > > > The int_reg_operand_not_pseudo allows the split to take place if it has > > already > > gotten hard registers before register allocation. > > When does that happen?
Using arguments, function returns, and of course explicit registers, but I agree it is fairly low. > > It could have been the > > normal int_reg_operand and then use a reload_completed check. > > That is preferred if it makes no difference (otherwise, bebfore you know > it we'll have twice as many predicates). We already had the predicate for another use, so I wasn't adding a new one. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797