This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[lno][PATCH] Start using dd info in av
- From: Devang Patel <dpatel at apple dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 20 Feb 2004 13:56:45 -0800
- Subject: [lno][PATCH] Start using dd info in av
This patch updates tree vectorizer to use ddg info. This expands
scope of what can be vectorized.
--
Devang
2004-02-20 Devang Patel <dpatel@apple.com>
* tree-vectorizer.c (vect_analyze_data_ref_dependence): Use
ddg_direction_between_stmts ().
testsuite:
* testsuite/gcc.dg/tree-ssa-vect/tree-ssa-vect-3.c: New test.
Index: tree-vectorizer.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-vectorizer.c,v
retrieving revision 1.1.2.16
diff -Idpatel.pbxuser -c -3 -p -r1.1.2.16 tree-vectorizer.c
*** tree-vectorizer.c 18 Feb 2004 19:32:21 -0000 1.1.2.16
--- tree-vectorizer.c 20 Feb 2004 19:58:33 -0000
*************** vect_analyze_data_ref_dependence (struct
*** 2006,2011 ****
--- 2006,2018 ----
if (!array_base_name_differ_p (dra, drb))
{
+ enum data_dependence_direction ddd =
+ ddg_direction_between_stmts (DR_STMT (dra), DR_STMT (drb),
+ loop_num (loop_of_stmt (DR_STMT
(dra))));
+
+ if (ddd == dir_independent)
+ return true;
+
if (tree_dump_file && (tree_dump_flags & TDF_DETAILS))
fprintf (tree_dump_file,
"vect_analyze_data_ref_dependence: same base\n");
Index: testsuite/gcc.dg/tree-ssa-vect/tree-ssa-vect-3.c
===================================================================
RCS file: testsuite/gcc.dg/tree-ssa-vect/tree-ssa-vect-3.c
diff -N testsuite/gcc.dg/tree-ssa-vect/tree-ssa-vect-3.c
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- testsuite/gcc.dg/tree-ssa-vect/tree-ssa-vect-3.c 20 Feb 2004
19:58:33 -0000
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target powerpc*-*-* i?86-*-* } } */
+ /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats
-maltivec" { target powerpc*-*-* } } */
+ /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -msse" {
target i?86-*-* } } */
+
+ #define N 16
+
+ void fbar (float *);
+
+ foo (int n)
+ {
+ float a[N*2+1];
+ float b[N];
+ float c[N];
+ int i;
+
+ /* Use of data dependence graph is required. */
+ for (i = 0; i < N; i++){
+ a[i] = b[i];
+ a[i+N] = c[i];
+ }
+ fbar (a);
+ }
+
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"} }
*/