[PATCH] [4.3 projects] Verctorizer - versioning for alias
Victor Kaplansky
VICTORK@il.ibm.com
Thu Aug 16 11:07:00 GMT 2007
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)
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: vfa-n.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20070816/487512ff/attachment.txt>
More information about the Gcc-patches
mailing list