This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Vector shuffling


Here is a new version of the patch which hopefully fixes all the
formatting issues and uses expand_simple_binop instead of force_reg in
binary operations.

Ok?


On Wed, Sep 28, 2011 at 3:46 PM, Richard Henderson <rth@redhat.com> wrote:
> On 09/28/2011 05:59 AM, Artem Shinkarov wrote:
>> I don't really understand this. As far as I know, expand_normal
>> "converts" tree to rtx. All my computations are happening at the level
>> of rtx and force_reg is needed just to bring an rtx expression to the
>> register of the correct mode. If I am missing something, could you
>> give an example how can I use expand_normal instead of force_reg in
>> this particular code.
>
> Sorry, I meant expand_(simple_)binop.
>
>>> Is ssse3_pshufb why you do the wrong thing in the expander for v0 != v1?
>>
>> My personal feeling is that it may be the case with v0 != v1, that it
>> would be more efficient to perform piecewise shuffling rather than
>> bitwise dances around the masks.
>
> Maybe for V2DI and V2DFmode, but probably not otherwise.
>
> We can perform the double-word shuffle in 12 insns; 10 for SSE 4.1.
> Example assembly attached.
>
>>> It's certainly possible to handle it, though it takes a few more steps,
>>> and might well be more efficient as a libgcc function rather than inline.
>>
>> I don't really understand why it could be more efficient. I thought
>> that inline gives more chances to the final RTL optimisation.
>
> We'll not be able to optimize this at the rtl level. ?There are too many
> UNSPEC instructions in the way. ?In any case, even if that weren't so we'd
> only be able to do useful optimization for a constant permutation. ?And
> we should have been able to prove that at the gimple level.
>
>
> r~
>

Attachment: vec-shuffle.v17.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]