https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85918

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Tue May 29 11:58:24 2018
New Revision: 260893

URL: https://gcc.gnu.org/viewcvs?rev=260893&root=gcc&view=rev
Log:
        PR target/85918
        * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
        VEC_PACK_FLOAT_EXPR): New tree codes.
        * tree-pretty-print.c (op_code_prio): Handle
        VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
        (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
        VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
        * tree-inline.c (estimate_operator_cost): Likewise.
        * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
        * fold-const.c (const_binop): Likewise.
        (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
        VEC_UNPACK_FIX_TRUNC_LO_EXPR.
        * tree-cfg.c (verify_gimple_assign_unary): Likewise.
        (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
        * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
        VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
        * expr.c (expand_expr_real_2): Likewise.
        * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
        vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
        vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
        optabs.
        * optabs.c (expand_widen_pattern_expr): For
        VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
        sign from result type rather than operand's type.
        (expand_binop_directly): For vec_packu_float_optab and
        vec_packs_float_optab allow result type to be different from operand's
        type.
        * optabs-tree.c (optab_for_tree_code): Handle
        VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
        VEC_PACK_FLOAT_EXPR.  Formatting fixes.
        * tree-vect-generic.c (expand_vector_operations_1):  Handle
        VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
        VEC_PACK_FLOAT_EXPR.
        * tree-vect-stmts.c (supportable_widening_operation): Handle
        FIX_TRUNC_EXPR.
        (supportable_narrowing_operation): Handle FLOAT_EXPR.
        * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
        * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
        (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
        (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
        mode attributes.
        (vec_pack<floatprefix>_float_<mode>): New expander.
        (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
        attributes.
        (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
        vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
        * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
        vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
        vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
        Document.
        * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
        VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
        (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
        VEC_PACK_FLOAT_EXPR): Document.

        * gcc.target/i386/avx512dq-pr85918.c: Add -mprefer-vector-width=512
        and -fno-vect-cost-model options.  Add aligned(64) attribute to the
        arrays.  Add suffix 1 to all functions and use 4 iterations rather
        than N.  Add functions with conversions to and from float.
        Add new set of functions with 8 iterations and another one
        with 16 iterations, expect 24 vectorized loops instead of just 4.
        * gcc.target/i386/avx512dq-pr85918-2.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/i386/avx512dq-pr85918-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cfgexpand.c
    trunk/gcc/config/i386/i386.md
    trunk/gcc/config/i386/sse.md
    trunk/gcc/doc/generic.texi
    trunk/gcc/doc/md.texi
    trunk/gcc/expr.c
    trunk/gcc/fold-const.c
    trunk/gcc/gimple-pretty-print.c
    trunk/gcc/optabs-tree.c
    trunk/gcc/optabs.c
    trunk/gcc/optabs.def
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/i386/avx512dq-pr85918.c
    trunk/gcc/tree-cfg.c
    trunk/gcc/tree-inline.c
    trunk/gcc/tree-pretty-print.c
    trunk/gcc/tree-vect-generic.c
    trunk/gcc/tree-vect-stmts.c
    trunk/gcc/tree.def

Reply via email to