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]

Re: [PATCH] [4.3 projects] Verctorizer - versioning for alias


Please find below updated patch after implementation of comments
from Dorit and Zdenek.

  Here is the list of changes from previous patch:
  - A new testcase when IN and OUT overlap in such a way that
the vectorized copy of the loop would produce wrong results if
it were used added(vect-vfa-04.c).
  - Fixed the size of segment accessed by data reference in cases
when realignment loads are used.
  - POINTER_PLUS_EXPR used insted of PLUS_EXPR for pointer
arithmentics.
  - Parameters "vect-max-version-for-alignment-checks" and
"vect-max-version-for-alias-checks" documented in invoke.texi.
  - Fixed typos and unclear comments.


Bootstrapped with vectorization enabled on x86_64, regtested on
x86_64.
Okay for mainline after boostrap and regression testing on PPC?



2007-08-14  Victor Kaplansky <victork@il.ibm.com>

ChangeLog:

             * tree-vectorizer.c (new_loop_vec_info): Initialize new
             field.
             (destroy_loop_vec_info): Add call to VEC_free.
             * tree-vectorizer.h (may_alias_ddrs): Define.
             (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
             * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
             Change reporting to dump.
             (vect_is_duplicate_ddr): New.
             (vect_mark_for_runtime_alias_test): New.
             (vect_analyze_data_ref_dependences) Add call to
             vect_mark_for_runtime_alias_test.
             (vect_enhance_data_refs_alignment): Define local variable
             vect_versioning_for_alias_required, don't perform
             versioning for alignment if versioning for alias is
             required.
             (vect_enhance_data_refs_alignment): Use
             PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
             PARAM_VECT_MAX_VERSION_CHECKS.
             * tree-vect-transform.c
             (vect_create_cond_for_alias_checks): New.
             (vect_transform_loop): Add call to
             vect_create_cond_for_alias_checks.
             (vect_vfa_segment_size): New.
             * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
             Rename.
             (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
             * gcc/doc/invoke.texi
             (vect-max-version-for-alignment-checks): Document.
             (vect-max-version-for-alias-checks): Document.
             (vect-max-version-checks): Remove.


testsuite/ChangeLog:

            * gcc.dg/vect/vect-vfa-01.c: New.
            * gcc.dg/vect/vect-vfa-02.c: New.
            * gcc.dg/vect/vect-vfa-03.c: New.
            * gcc.dg/vect/vect-vfa-04.c: New.
            * gcc.dg/vect/vect-102a.c, gcc.dg/vect/vect-51.c,
            gcc.dg/vect/pr29145.c, gcc.dg/vect/vect-43.c,
            gcc.dg/vect/vect-61.c, gcc.dg/vect/vect-53.c,
            gcc.dg/vect/vect-45.c, gcc.dg/vect/vect-101.c,
            gcc.dg/vect/vect-37.c, gcc.dg/vect/vect-79.c,
            gcc.dg/vect/vect-102.c, gcc.dg/vect/vect-dv-2.c,
            gcc.dg/vect/vect-57.c, gcc.dg/vect/vect-49.c,
            gfortran.dg/vect/pr19049.f90: Rename to start with
            prefix no-vfa-.
            * gcc.dg/vect/vect.exp: Disable versioning for alias
            when test starts with no-vfa-.
            * gfortran.dg/vect/vect.exp: Likewise.

(See attached file: vfa-n.txt)

Attachment: vfa-n.txt
Description: Text document


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