[autovect] [patch] support vectorization of data-types of different sizes
Dorit Naishlos
DORIT@il.ibm.com
Thu Sep 29 03:27:00 GMT 2005
First step towards supporting vectorization in the presence of types of
different sizes in the loop. This patch adds support for the case when the
different types are used in independent computations (i.e. there are no
type casts and such).
Bootstrapped with vectorization enabled on powerpc-linux, tested on the
vectorizer testcases, committed to the branch.
dorit
Changelog:
* tree-vect-analyze.c (vect_determine_vectorization_factor): Don't
fail
in the presence of data-types of different sizes. Record the
maximum
nunits as the vectorization-factor.
(vect_analyze_data_ref_dependence): Don't record datarefs as
same_align
if they are of different sizes.
(vect_update_misalignment_for_peel): Compare misalignments in terms
of
number of elements rather than number of bytes.
(vect_enhance_data_refs_alignment): Add debug printouts.
(vect_pattern_recog): Fix debug printout.
* tree-vect-transform.c (vect_create_data_ref_ptr): Add new
argument -
PTR_INCR.
(vect_finish_stmt_generation): Set a stmt_info to newly generated
stmts.
(vect_create_epilog_for_reduction): Remove redundant assert.
(vectorizable_target_reduction_pattern): Check if multiple-types
support is needed. If so - fail for now.
(vectorizable_reduction, vectorizable_assignment):
(vectorizable_condition): Likewise.
(vectorizable_operation): Support vectorization in the presence of
multiple-data-types (i.e. - the vectorization factor is bigger than
the number of elements in vectype for this operation).
(vectorizable_load, vectorizable_store): Likewise.
(vect_gen_niters_for_prolog_loop): element_size is calculated using
the data-types.
(vect_trsnform_loop): Remove assert.
* gcc.dg/vect/vect-1.c: Remove loop (appears in other tests).
* gcc.dg/vect/vect-12.c: Now vectorizable.
* gcc.dg/vect/vect-109.c: Now vectorizable. Change to unknown loop
bound.
* gcc.dg/vect/vect-118.c: New.
* gcc.dg/vect/vect-119.c: New.
* gcc.dg/vect/vect-120.c: New.
* gcc.dg/vect/vect-121.c: New.
* gcc.dg/vect/vect-reduc-dot-s8s16.c: New.
* gcc.dg/vect/vect-96.c: Fix comment.
Patch:
(See attached file: sept29.multitypes1.txt)
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sept29.multitypes1.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20050929/5e3aa117/attachment.txt>
More information about the Gcc-patches
mailing list