c-tree.texi: Document new tree codes.
authorIra Rosen <irar@il.ibm.com>
Wed, 22 Nov 2006 08:46:03 +0000 (08:46 +0000)
committerIra Rosen <irar@gcc.gnu.org>
Wed, 22 Nov 2006 08:46:03 +0000 (08:46 +0000)
commit98b44b0eeac41545f8b4d236ba5b3fe1562203aa
tree4b2ea3085ae0c7d9acece7d444f408bf4d827a97
parentb0c6db58adfcdd39c80ea0b1895d1b7d255fe633
c-tree.texi: Document new tree codes.

        * doc/c-tree.texi: Document new tree codes.
        * doc/md.texi: Document new optabs.
        * tree-pretty-print.c (dump_generic_node): Handle print of new tree
        codes.
        * optabs.c (optab_for_tree_code, init_optabs): Handle new optabs.
        * optabs.h (optab_index): Add new.
        (vec_extract_even_optab, vec_extract_odd_optab,
        vec_interleave_high_optab, vec_interleave_low_optab): New optabs.
        * genopinit.c (vec_extract_even_optab, vec_extract_odd_optab,
        vec_interleave_high_optab, vec_interleave_low_optab): Initialize
        new optabs.
        * expr.c (expand_expr_real_1): Add implementation for new tree codes.
        * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
        * tree-vectorizer.h (stmt_vec_info): Add new fields for interleaving
        along with macros for their access.
        * tree-data-ref.h (first_location_in_loop, data_reference): Update
        comment.
        * tree-vect-analyze.c (toplev.h): Include.
        (vect_determine_vectorization_factor): Fix indentation.
        (vect_insert_into_interleaving_chain,
        vect_update_interleaving_chain, vect_equal_offsets): New functions.
        (vect_analyze_data_ref_dependence): Add argument for interleaving
        check. Check for interleaving if it's true.
        (vect_check_dependences): New function.
        (vect_analyze_data_ref_dependences): Call vect_check_dependences for
        every ddr. Call vect_analyze_data_ref_dependence with new argument.
        (vect_update_misalignment_for_peel): Update for interleaving.
        (vect_verify_datarefs_alignment): Check only first data-ref for
        interleaving.
        (vect_enhance_data_refs_alignment): Update for interleaving. Check
        only first data-ref for interleaving.
        (vect_analyze_data_ref_access): Check interleaving, update
        interleaving data.
        (vect_analyze_data_refs): Call compute_data_dependences_for_loop
        with different parameters.
        * tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR,
        VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): New tree codes.
        * tree-inline.c (estimate_num_insns_1): Add cases for new codes.
        * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
        Update step in case of interleaving.
        (vect_strided_store_supported, vect_permute_store_chain): New
        functions.
        (vectorizable_store): Handle strided stores.
        (vect_strided_load_supported, vect_permute_load_chain,
        vect_transform_strided_load): New functions.
        (vectorizable_load): Handle strided loads.
        (vect_transform_stmt): Add argument. Handle strided stores. Check
        that vectorized stmt exists for patterns.
        (vect_gen_niters_for_prolog_loop): Update calculation for
        interleaving.
        (vect_transform_loop): Remove stmt_vec_info for strided stores after
        whole chain vectorization.
        * config/rs6000/altivec.md (UNSPEC_EXTEVEN, UNSPEC_EXTODD,
        UNSPEC_INTERHI, UNSPEC_INTERLO): New constants.
        (vpkuhum_nomode, vpkuwum_nomode, vec_extract_even<mode>,
        vec_extract_odd<mode>, altivec_vmrghsf, altivec_vmrglsf,
        vec_interleave_high<mode>, vec_interleave_low<mode>): Implement.

From-SVN: r119088
43 files changed:
gcc/ChangeLog
gcc/config/rs6000/altivec.md
gcc/doc/c-tree.texi
gcc/doc/md.texi
gcc/expr.c
gcc/genopinit.c
gcc/optabs.c
gcc/optabs.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/vect-1.c
gcc/testsuite/gcc.dg/vect/vect-107.c
gcc/testsuite/gcc.dg/vect/vect-98.c
gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-float.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-mult.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp
gcc/tree-data-ref.h
gcc/tree-inline.c
gcc/tree-pretty-print.c
gcc/tree-vect-analyze.c
gcc/tree-vect-transform.c
gcc/tree-vectorizer.c
gcc/tree-vectorizer.h
gcc/tree.def