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.


Reply via email to