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] | |
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] |