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] support vectorization of data-types of different sizes





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)

Attachment: sept29.multitypes1.txt
Description: Text document


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