On Wed, Jan 24, 2018 at 03:19:00PM -0500, Michael Meissner wrote: > On Wed, Jan 24, 2018 at 12:35:38PM -0600, Segher Boessenkool wrote: > > Although, hrm, in your patch you also change "int i" to "long i"; that > > alone seems to be enough to fix everything? Could you check that please? > > Changing i and n to either 'long' or 'long unsigned' makes the test work. > > It is interesting that -mcpu=power7 -mbig does not seem to be able to create > LFDU and STFDU, but either setting cpu to power8/power9 or setting -mbig to > -mlittle or -m32 it can generate those instructions.
Yeah, dunno... I suspect we have some target costs a bit wrong, influencing the ivopts etc. decisions. The auto_inc_dec pass says (-mcpu=power7 -mabi=elfv2 -mbig): 23: r147:DF=[r126:DI] found mem(23) *(r[126]+0) trying SIMPLE_PRE_INC cost failure old=16 new=408 (where -mlittle thinks it is fine; does not say what costs, but the 408 for -mbig looks suspicious of course -- sounds like the call to rs6000_slow_unaligned_access in rs6000_rtx_costs misfired. Yet another reason to use insn_cost instead ;-) ) Segher