On Tue, Sep 6, 2022 at 4:01 PM Robin Dapp <rd...@linux.ibm.com> wrote: > > > cost might also depend on the context in case flag setting > > behavior differs for xor vs sub (on x86 sub looks strictly more > > powerful here). The same is probably true when looking for > > a combination with another bitwise operation. > > > > Btw, why not perform the optimization in expand_binop? That > > for example already does > > > > if (binoptab == sub_optab && CONST_INT_P (op1)) > > { > > op1 = negate_rtx (mode, op1); > > binoptab = add_optab; > > } > > > > alternatively a targets expander can do the selection as well. > > I was under the impression optabs/expand_binops is only supposed to > "optimize" when it's clear that it is an optimization/canonicalization. > I didn't see other functions there trying two alternatives and also none > seems to use range information already. > > Regarding the proper costing (including the surroundings): is it even > possible to encompass everything in such a localized decision? A > target's expander decision would also not take this into account when > deciding? If so, should we not perform this conversion generally and not > only target specifc?
The question is really whether xor or sub is "better" statically. I can't think of any reasons. On s390, why does xor end up "better"? Richard. > > Regards > Robin