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: [PATCH, PR52252] Alternative way of vectorization for load groups of size 2 and 3.


New hook is related to vector instructions only. Vector instructions
could be sequential in pipeline, but scalar - parallel. For x86
architectures TARGET_SCHED_REASSOC_WIDTH does not give required
differentiation.
General hooks could be potentially reused in other algorithms/by other
architectures.

Thanks,
Evgeny

On Thu, Jun 5, 2014 at 2:04 PM, Ramana Radhakrishnan
<ramana.gcc@googlemail.com> wrote:
> On Wed, May 28, 2014 at 2:09 PM, Evgeny Stupachenko <evstupac@gmail.com> wrote:
>> Hi,
>>
>> The patch introduces alternative way of permutations for load groups
>> of size 2 and 3 which should be faster on architectures with low
>> parallelism.
>> The patch gives 2 times gain on Silvermont to the test from PR52252
>> (in addition to already committed 3 times gain).
>>
>> Patch passes bootstrap on x86. Make check is in progress.
>
> Why do we need a new hook ? Can't you derive this information from
> something which is equally badly named TARGET_SCHED_REASSOC_WIDTH
> though used in the reassociation logic but also serves a similar
> purpose ?
>
> Also the documentation of this hook is incomplete at best and wrong at
> worst as this is not applied everywhere in the vectorizer but just for
> this special case for load store permuting. Implying this is useful
> everywhere in the vectorizer does not appear to be correct.
>
> regards
> Ramana
>
>
>
>
>>
>> ChangeLog:
>>
>> 2014-05-28  Evgeny Stupachenko  <evstupac@gmail.com>
>>
>>         * config/i386/i386.c (ix86_have_vector_parallel_execution): New.
>>         (TARGET_VECTORIZE_HAVE_VECTOR_PARALLEL_EXECUTION): New.
>>         * config/i386/i386.h (TARGET_VECTOR_PARALLEL_EXECUTION): New.
>>         * config/i386/x86-tune.def (X86_TUNE_VECTOR_PARALLEL_EXECUTION): New.
>>         * target.def (have_vector_parallel_execution): New.
>>         * doc/tm.texi.in (have_vector_parallel_execution)): New.
>>         * doc/tm.texi: Regenerate.
>>         * targhooks.c (default_have_vector_parallel_execution): New.
>>         * tree-vect-data-refs.c (vect_shift_permute_load_chain): New.
>>         Introduces alternative way of loads group permutaions.
>>         (vect_transform_grouped_load): Try alternative way of permutaions.
>>
>> Evgeny


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