This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
gcc/gcc ChangeLog.autovect expr.c genopinit.c ...
- From: dorit at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: 23 Sep 2005 17:09:10 -0000
- Subject: gcc/gcc ChangeLog.autovect expr.c genopinit.c ...
CVSROOT: /cvs/gcc
Module name: gcc
Branch: autovect-branch
Changes by: dorit@gcc.gnu.org 2005-09-23 17:09:10
Modified files:
gcc : ChangeLog.autovect expr.c genopinit.c optabs.c
optabs.h tree-inline.c tree-pretty-print.c
tree-ssa-operands.c tree-vect-analyze.c
tree-vect-transform.c tree-vectorizer.h
tree.def
gcc/config/rs6000: altivec.md
gcc/testsuite : ChangeLog.autovect
Added files:
gcc/testsuite/gcc.dg/vect: vect-reduc-dot-s16.c
vect-reduc-dot-s8.c
vect-reduc-dot-u16.c
vect-reduc-dot-u8.c
Log message:
* expr.c (expand_expr_real_1): Add DOT_PROD_EXPR case. Tentatively add
cases for WIDEN_MULT_EXPR and MULT_HI_EXPR.
* genopinit.c (sdot_prod_optab, udot_prod_optab): Initialize new optabs.
* optabs.c (optab_for_tree_code): Add cases for DOT_PROD_EXPR,
WIDEN_MULT_EXPR and MULT_HI_EXPR.
(expand_widen_pattern_expr): Extend to handled widening patterns with
more than two arguments.
(init_optabs): Initalize new optabs sdot_prod_optab, udot_prod_optab.
* optabs.h (OTI_sdot_prod, OTI_udot_prod): New optabs indexes.
(expand_widen_pattern_expr): Add argument to function declaration,
* tree-inline.c (estimate_num_insns_1): Add cases for DOT_PROD_EXPR,
WIDEN_MULT_EXPR and MULT_HI_EXPR.
* tree-pretty-print.c (dump_generic_node, op_prio): Add cases for
DOT_PROD_EXPR, WIDEN_MULT_EXPR and MULT_HI_EXPR.
(op_symbol): Added cases for WIDEN_MULT_EXPR and MULT_HI_EXPR.
* tree-ssa-operands (get_expr_operands): Add case for DOT_PROD_EXPR.
* tree.def (WIDEN_MULT_EXPR, MULT_HI_EXPR, DOT_PROD_EXPR): New
tree-codes.
* tree-vect-analyze.c (widened_name_p): New function.
(vect_pattern_recog_funcs): Add new pattern recognition functions to
the initialization.
(vect_recog_mult_hi_pattern): New function (not yet implemented).
(vect_recog_dot_prod_pattern): New function.
(vect_recog_widen_mult_pattern): New function.
(vect_recog_widen_sum_pattern): Call widened_name_p. Fix type
comparison. Do not consider stmts that have already been recognized
as part of a pattern.
(vect_recog_unsigned_subsat_pattern): Do not consider stmts that have
already been recognized as part of a pattern.
* tree-vect-transform.c (get_initial_def_for_reduction): Add case for
DOT_PROD_EXPR.
(vect_create_epilog_for_reduction): Add assert.
(vectorizable_reduction): Support reductions with more than two
arguments.
* tree-vectorizer.h (ternary_op): New operation_type.
(NUM_PATTERNS): Set to 5.
(vect_recog_widen_mult_pattern): New function declaration.
(vect_recog_mult_hi_pattern): New function declaration.
(vect_recog_dot_prod_pattern): New function declaration.
* config/rs6000/altivec.md (altivec_vmsumshm, altivec_vmsumuhs):
(altivec_vmsumshs, altivec_vmsumu<VI_char>m, altivec_vmsumm<VI_char>m):
(widen_usum<mode>3, widen_ssumv16qi3, widen_ssumv8hi3): Expose the PLUS.
(udot_prod<mode>, sdot_prodv16qi, sdot_prodv8hi): New patterns.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.autovect.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.2.85&r2=1.1.2.86
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expr.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.738.2.9&r2=1.738.2.10
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/genopinit.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.82.14.9&r2=1.82.14.10
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/optabs.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.247.2.11&r2=1.247.2.12
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/optabs.h.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.40.2.10&r2=1.40.2.11
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-inline.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.150.2.8&r2=1.150.2.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pretty-print.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.47.4.8&r2=2.47.4.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-operands.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.56.2.7&r2=2.56.2.8
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vect-analyze.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.4.4.21&r2=2.4.4.22
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vect-transform.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.1.4.20&r2=2.1.4.21
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vectorizer.h.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.7.2.23&r2=2.7.2.24
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree.def.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.103.14.13&r2=1.103.14.14
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/altivec.md.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.24.8.11&r2=1.24.8.12
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.autovect.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.2.43&r2=1.1.2.44
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=NONE&r2=1.1.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=NONE&r2=1.1.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=NONE&r2=1.1.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=NONE&r2=1.1.2.1