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]

[autovect] [patch] Strided same constant store


Despite strided stores in the following loop, there is no need in
permutation of the stored values:

for i
   a[2i] = 0
   a[2i+1] = 0

This patch detects such stores (strided stores that store the same
constant) and avoids unnecessary interleaving.
It's a first step towards loop-aware interleaving based SLP I am going to
implement.

Bootstrapped and tested on ppc-linux.
Committed to autovect branch.

Ira

ChangeLog entry:

        * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
        * tree-vectorizer.h (struct _stmt_vec_info): Add new field
        interleaving_not_needed and macros to access it.
        * tree-vect-analyze.c (vect_analyze_data_ref_access): Detect
        interleaved stores with equal constant right hand sides and mark
that
        there is no need to do interleaving for them.
        * tree-vect-transform.c (vectorizable_store): Do not interleave if
        there is no need in interleaving.

The patch:
(See attached file: jan16.txt)

Attachment: jan16.txt
Description: Text document


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