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: 17 Oct 2005 12:51:03 -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-10-17 12:51:03
Modified files:
gcc : ChangeLog.autovect expr.c genopinit.c optabs.c
optabs.h target-def.h target.h tree-inline.c
tree-pretty-print.c tree-vect-analyze.c
tree-vect-generic.c tree-vect-transform.c
tree-vectorizer.c tree-vectorizer.h tree.def
gcc/config/rs6000: altivec.md rs6000.c
gcc/testsuite : ChangeLog.autovect
gcc/testsuite/gcc.dg/vect: vect-9.c vect-reduc-dot-s8.c
vect-reduc-dot-u8.c
vect-reduc-pattern-1.c
Added files:
gcc/testsuite/gcc.dg/vect: vect-widen-mult-s16.c
vect-widen-mult-s8.c
vect-widen-mult-u16.c
vect-widen-mult-u8.c
Removed files:
gcc/testsuite/gcc.dg/vect: vect-106.c
Log message:
* tree.def (VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR):
(VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_PACK_MOD_EXPR):
(VEC_PACK_SAT_EXPR): New tree-codes.
* expr.c (expand_expr_real_1): Add cases for VEC_UNPACK_HI_EXPR,
VEC_UNPACK_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR.
Remove WIDEN_MULT_EXPR case. Add cases for VEC_PACK_MOD_EXPR and
VEC_PACK_SAT_EXPR (yet to be implemented).
* genopinit.c (vec_widen_umult_hi_optab, vec_widen_smult_hi_optab):
(vec_widen_umult_lo_optab, vec_widen_smult_lo_optab):
(vec_unpack_hi_optab, vec_unpack_hi_optab, vec_pack_mod_optab):
(vec_pack_sat_optab): New optabs.
* optabs.c (optab_for_tree_code): Add cases for new tree-codes.
(expand_widen_pattern_expr): Add documentation. Add support for
widening-multiplication and type-conversion.
(init_optabs): Initalize new optabs.
* optabs.h (OTI_vec_widen_umult_hi, OTI_vec_widen_smult_hi):
(OTI_vec_widen_umult_lo, OTI_vec_widen_smult_lo, OTI_vec_unpack_hi):
(OTI_vec_unpack_lo, OTI_vec_pack_mod, OTI_vec_pack_sat): New optab
indices.
* target-def.h (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN):
(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): New hooks.
* target.h (builtin_mul_widen_even, builtin_mul_widen_odd): New hooks.
* tree-inline.c (estimate_num_insns_1): Add cases for new tree-codes.
* tree-pretty-print.c (dump_generic_node): Add cases for new tree-codes.
(op_prio): Add cases for new tree-codes.
* tree-vect-anlyze.c (vect_analyze_operations): Call
vectorizable_type_promotion.
(vect_mark_relevant): Add check for STMT_VINFO_RELATED_STMT.
(vect_mark_stmts_to_be_vectorized): Fix typo.
(widened_name_p): Add documentation.
(vect_recog_mult_hi_pattern, vect_recog_dot_prod_pattern):
(vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern):
(vect_recog_unsigned_subsat_pattern): Change arguement name from
pattern_type to pattern_vectype.
(vect_recog_widen_mult_pattern): Call supportable_widening_operation.
(vect_recog_unsigned_subsat_pattern): Check target support.
(vect_pattern_recog_1): Remove target support check. Record
STMT_VINFO_RELATED_STMT for all the stmts in the sequence.
* tree-vect-generic.c (expand_vector_operations_1): Check for
VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR, VEC_UNPACK_HI_EXPR,
and VEC_UNPACK_LO_EXPR.
* tree-vect-transform.c (vect_create_epilog_for_reduction):
(vectorizable_target_reduction_pattern, vectorizable_reduction): Add
check for STMT_VINFO_IN_PATTERN_P.
(vectorizable_operation): Check if result size is same as arguments
size.
(vectorizable_type_promotion): New function.
(vect_transform_stmt): Call vectorizable_type_promotion.
* tree-vectorizer.c (supportable_widening_operation): New function.
* tree-vectorizer.h (type_promotion_vec_info_type):
(supportable_widening_operation, vectorizable_type_promotion): New
function declarations.
* config/rs6000/altivec.md (UNSPEC_VMULWHUB, UNSPEC_VMULWLUB):
(UNSPEC_VMULWHSB, UNSPEC_VMULWLSB, UNSPEC_VMULWHUH, UNSPEC_VMULWLUH):
(UNSPEC_VMULWHSH, UNSPEC_VMULWLSH): New define_constants.
(vec_unpack_hi_v16qi, vec_unpack_hi_v8hi, vec_unpack_lo_v16qi):
(vec_unpack_lo_v8hi, vec_widen_umult_hi_v16qi):
(vec_widen_umult_lo_v16qi, vec_widen_smult_hi_v16qi):
(vec_widen_smult_lo_v16qi, vec_widen_umult_hi_v8hi):
(vec_widen_umult_lo_v8hi, vec_widen_smult_hi_v8hi):
(vec_widen_smult_lo_v8hi): New define_expands.
* config/rs6000/rs6000.c (rs6000_builtin_mul_widen_even):
(rs6000_builtin_mul_widen_even): New function declarations.
(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN):
(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Define.
(rs6000_builtin_mul_widen_even, rs6000_builtin_mul_widen_odd): New.
(altivec_init_builtins): Remove TARGET_ALTIVEC check.
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.89&r2=1.1.2.90
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expr.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.738.2.10&r2=1.738.2.11
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/genopinit.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.82.14.10&r2=1.82.14.11
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/optabs.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.247.2.12&r2=1.247.2.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/optabs.h.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.40.2.11&r2=1.40.2.12
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/target-def.h.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.106.12.5&r2=1.106.12.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/target.h.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.118.12.5&r2=1.118.12.6
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.9&r2=1.150.2.10
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.9&r2=2.47.4.10
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.23&r2=2.4.4.24
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vect-generic.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.5.4.2&r2=2.5.4.3
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.23&r2=2.1.4.24
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-vectorizer.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=2.25.2.29&r2=2.25.2.30
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.24&r2=2.7.2.25
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree.def.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.103.14.14&r2=1.103.14.15
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.13&r2=1.24.8.14
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.739.2.9&r2=1.739.2.10
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.47&r2=1.1.2.48
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-widen-mult-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-widen-mult-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-widen-mult-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-widen-mult-u8.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-9.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.32.4&r2=1.1.32.5
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=1.1.2.2&r2=1.1.2.3
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=1.1.2.1&r2=1.1.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.2.6&r2=1.1.2.7
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/vect/vect-106.c.diff?cvsroot=gcc&only_with_tag=autovect-branch&r1=1.1.20.1&r2=NONE