This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: combination of read/write and earlyclobber constraint modifier
- From: Marc Glisse <marc dot glisse at inria dot fr>
- To: Tom de Vries <Tom_deVries at mentor dot com>
- Cc: gcc at gcc dot gnu dot org, Jeff Law <law at redhat dot com>, Vladimir Makarov <vmakarov at redhat dot com>
- Date: Wed, 2 Jul 2014 09:02:17 +0200 (CEST)
- Subject: Re: combination of read/write and earlyclobber constraint modifier
- Authentication-results: sourceware.org; auth=none
- References: <53B30B96 dot 2000603 at mentor dot com> <53B31041 dot 8060608 at redhat dot com> <alpine dot DEB dot 2 dot 10 dot 1407012155000 dot 2640 at laptop-mg dot saclay dot inria dot fr> <53B32D3A dot 1030700 at mentor dot com> <alpine dot DEB dot 2 dot 10 dot 1407020800530 dot 2059 at laptop-mg dot saclay dot inria dot fr> <53B3AAE8 dot 3080003 at mentor dot com>
On Wed, 2 Jul 2014, Tom de Vries wrote:
On 02-07-14 08:23, Marc Glisse wrote:
I think it could have used (match_dup 0) instead of operand 1, if there
had been only the first alternative. And then the constraint would have
been +&.
isn't that explicitly listed as unsupported here (
https://gcc.gnu.org/onlinedocs/gccint/RTL-Template.html#index-match_005fdup-3244
):
...
Note that match_dup should not be used to tell the compiler that a particular
register is being used for two operands (example: add that adds one register
to another; the second register is both an input operand and the output
operand). Use a matching constraint (see Simple Constraints) for those.
match_dup is for the cases where one operand is used in two places in the
template, such as an instruction that computes both a quotient and a
remainder, where the opcode takes two input operands but the RTL template has
to refer to each of those twice; once for the quotient pattern and once for
the remainder pattern.
...
?
Well, looking for instance at x86_shrd... Ok, I didn't know it wasn't
supported (though I did suggest using match_operand and "0" at some
point).
Still, the meaning of +&, in inline asm for instance, seems relatively
clear, no?
--
Marc Glisse