On Tue, Mar 12, 2019 at 12:43:29PM +0100, Jakub Jelinek wrote: > On Mon, Mar 04, 2019 at 10:04:01AM +0100, Jakub Jelinek wrote: > > The first one uses constraints and no C code in the output, I believe it is > > actually more expensive for compile time, because if one just reads what > > constrain_operands needs to do for another constraint, it is quite a lot. > > I've tried to at least not introduce new constraints for this, there is no > > constraint for number 1 (or for number -1). > > The Pu constraint is thumb2 only for numbers 1..8, and the alternative uses > > I constraint for the negation of it, i.e. -8..-1, only -1 from this is > > valid for I. If that matches, we emit adds with #1, otherwise just prefer > > subs over adds. > > > > The other swaps the alternatives similarly to the above, but for the special > > case of desirable adds with #1 uses C code instead of another alternative. > > > > Ok for trunk (which one)? > > I'd like to ping these patches: > > > 2019-03-04 Jakub Jelinek <ja...@redhat.com> > > > > PR target/89506 > > * config/arm/arm.md (cmpsi2_addneg): Swap the alternatives, add > > another alternative with I constraint for operands[2] and Pu > > for operands[3] and emit adds in that case, don't use C code to > > emit the instruction. > > or: > > > 2019-03-04 Jakub Jelinek <ja...@redhat.com> > > > > PR target/89506 > > * config/arm/arm.md (cmpsi2_addneg): Swap the alternatives and use > > subs for the first alternative except when operands[3] is 1.
Ping. Jakub