[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