This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][ARM] one_cmpldi2 in NEON
- From: Richard Henderson <rth at redhat dot com>
- To: Andrew Stubbs <andrew_stubbs at mentor dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, "patches at linaro dot org" <patches at linaro dot org>, Andrew Stubbs <ams at codesourcery dot com>
- Date: Tue, 06 Dec 2011 15:07:18 -0800
- Subject: Re: [PATCH][ARM] one_cmpldi2 in NEON
- References: <4EDE5810.1070204@codesourcery.com> <4EDE839A.1020906@redhat.com> <4EDE8C3D.2020102@mentor.com>
On 12/06/2011 01:42 PM, Andrew Stubbs wrote:
> On Tue 06 Dec 2011 21:05:30 GMT, Richard Henderson wrote:
>> On 12/06/2011 09:59 AM, Andrew Stubbs wrote:
>>> +(define_insn "*one_cmpldi2_neon"
>>> + [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?w")
>>> + (not:DI (match_operand:DI 1 "s_register_operand" " w, 0, r, w")))]
>>
>> alternative 0 == alternative 3?
>
> Yes and no. This is an idiom used in several places in neon.md. They
> are the same, but only one or other is enabled at the same time (see
> the "arch" attribute) so while both 'w' and 'r' options are always
> available, the order of preference is different.
Except that without *, I don't think this is what is actually achieved.
Perhaps I'm mistaken about how register preferencing is handled in the
current state of the register allocator...
r~