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]

[tree-ssa-lno] vectorizer patch.





I'm going to commit the following patch to tree-ssa-lno. It implements a
basic loop vectorization pass (disabled by default), as described in:
http://gcc.gnu.org/ml/gcc/2003-12/msg00908.html.

There are a lot of FIXME's and CHECKME's that yet need to be addressed,
including the issues discussed in
http://gcc.gnu.org/ml/gcc/2004-01/msg00007.html and
http://gcc.gnu.org/ml/gcc/2003-12/msg01433.html.

Test cases will follow shortly; The attached test file, if compiled with
"-O2 -ftree-vectorize -fno-inline -maltivec", should emit:
"
vectorized 0 loops in function.
vectorized 0 loops in function.
vectorized 0 loops in function.
vectorized 5 loops in function.
vectorized 0 loops in function.
vectorized 0 loops in function.
vectorized 0 loops in function.
"
and it should run correctly, at least on powerpc-apple-darwin6.4 (where
it's bootstrapping now).

Many thanks to Sebastian Pop for his help with interfacing the monev
analyzer, and to everyone who offered their comments.

dorit.

      * tree-vectorizer.c: new file. Implements loop vectorization pass.
      * tree-vectorizer.h: new file.
      * Makefile.in: new files tree-vectorizer.c,h
      * tree-dump.c: (dump_files): new dump file for the new
      vectorization pass.
      * tree.h: (TDI_vect): Same.
      * timevar.def (TV_TREE_VECTORIZATION): support new
      vectorization pass.
      * opts.c: (flag_tree_vetorize): new flag to enable/disable the
      new vectorization pass.
      * flags.h: Same.
      * toplev.c: Same.
      * common.opt: (ftree-vectorize): Same.
      * docs/invoke.texi: Document above new options.
      * tree-optimize.c: (optimize_function_tree): Invoke the new
      vetorization pass.
      * tree-flow.h: (struct stmt_ann_d): New field (aux) to allow
      recording information per stmt.
      * tree-data-ref.c (vec_analyze_array): New function, exposing
      API to the vectorizer.
      (vec_array_base_name_differ_p): New function, exposing API to
      the vectorizer.
      * tree-data-ref.h: Same.
      * defaults.h: (UNITS_PER_SIMD_WORD): Define.
      * config/rs6000/rs6000.h: Same.
      * target-def.h (TARGET_VECTYPE_FOR_SCALAR_TYPE): Declare a new
      target hook for vectorization.
      * target.h (vectype_for_scalar_type): Same.
      * config/rs6000/rs6000.c: (rs6000_vectype_for_scalar_type):
      implement the above new target hook.


(See attached file: vec_diff)(See attached file: tree-vectorizer_h)(See
attached file: tree-vectorizer_c) (See attached file: vect_tests_SF_c)

Attachment: vec_diff
Description: Binary data

Attachment: tree-vectorizer_h
Description: Binary data

Attachment: tree-vectorizer_c
Description: Binary data

Attachment: vect_tests_SF_c
Description: Binary data


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