On 12/20/16 16:09, Wilco Dijkstra wrote: > Bernd Edlinger wrote: >> this splits the *arm_negdi2, *arm_cmpdi_insn and *arm_cmpdi_unsigned >> also at split1 except for TARGET_NEON and TARGET_IWMMXT. >> >> In the new test case the stack is reduced to about 270 bytes, except >> for neon and iwmmxt, where this does not change anything. > > This looks odd: > > - operands[2] = gen_lowpart (SImode, operands[2]); > + if (can_create_pseudo_p ()) > + operands[2] = gen_reg_rtx (SImode); > + else > + operands[2] = gen_lowpart (SImode, operands[2]); > > Given this is an SI mode scratch, do we need the else part at all? It seems > wrong > to ask for the low part of an SI mode operand... >
Yes, I think that is correct. > Other than that it looks good to me, but I can't approve. > > As a result of your patches a few patterns are unused now. All the Thumb-2 > iordi_notdi* > patterns cannot be used anymore. Also I think arm_cmpdi_zero never gets used > - a DI > mode compare with zero is always split into ORR during expand. > I did not change anything for -mthumb -mfpu=neon for instance. Do you think that iordi_notdi* is never used also for that configuration? And if the arm_cmpdi_zero is never expanded, isn't it already unused before my patch? Bernd.