On 09/09/13 13:50, Kyrylo Tkachov wrote: > Hi Richard, > >> On 29/07/13 14:58, Kyrylo Tkachov wrote: >>> Hi all, >>> >>> Now that combine emits the canonical form for (eq (neg x) (y)) instead >> of (eq >>> (x) (neg y)), this patch fixes up the corresponding pattern in aarch64 >> to >>> match that. This enables combine to properly generate the cmn >> instruction >>> where appropriate. >>> >>> Tested aarch64-none-elf on model. >>> >>> Ok for trunk? >>> >> >> No, this is wrong for inequalities, since in reality it's the second >> operand that's inverted. >> >> You'll need to use CC_SWP mode and then arrange for this to be correctly >> picked by select_cc_mode. >> > > How's this? > > aarch64_select_cc_mode is updated to return CC_SWPmode for these comparisons > and > the MD pattern is updated accordingly. > > Tested aarch64-none-elf on a model. > > Is this ok? > > Thanks, > Kyrill > > 2013-09-09 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for > comparison with negated operand. > * config/aarch64/aarch64.md (compare_neg<mode>): Match canonical RTL > form. > > 2013-09-09 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * gcc.target/aarch64/cmn-neg.c: New test. > > >
OK. R.