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? > 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). Segher