This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [ia64, rfa] vector pattern improvements
- From: Steve Ellcey <sje at cup dot hp dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 06 Jan 2011 12:22:00 -0800
- Subject: Re: [ia64, rfa] vector pattern improvements
- References: <201101061725.p06HPCX21825@lucas.cup.hp.com> <4D260FB1.80800@redhat.com>
- Reply-to: sje at cup dot hp dot com
On Thu, 2011-01-06 at 10:53 -0800, Richard Henderson wrote:
>
> Although for this specific case it would probably be better
> to simply manually swap the operands in the output template:
>
> {
> if (TARGET_BIG_ENDIAN)
> return "mix1.r %0 = %r1, %r2";
> else
> return "mix1.r %0 = %r2, %r1";
> }
>
> but this would not be true of all of the patterns.
If swapping arguments doesn't work for all patterns then I think I would
rather use the predicate method in all cases instead of having some use
the select*parallel predicate and others swapping arguments.
> Another possibility is to simply give up on representing these
> instructions exactly and instead use UNSPECs.
>
> I think the proper representation is very much preferable,
> since then we can do something akin to the i386 port with the
> expand_vec_perm scheme, where we search for combinations of
> permutations that we can support.
Yes, I think using a proper representation instead of UNSPEC's is
preferable too.
> It's somewhat unfortunate that there's no ia64-hpux available
> in the compile farm. I could do the bulk conversion and test
> on linux, but I'd still have to rely on you to test hpux.
I can certainly do any HP-UX testing that is needed if you create
a patch.
Steve Ellcey
sje@cup.hp.com