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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Richard Sandiford <rsand...@gcc.gnu.org>:

https://gcc.gnu.org/g:9d2fe6d427b37755410bb4eb4ecce8382f2ebfc5

commit r13-1111-g9d2fe6d427b37755410bb4eb4ecce8382f2ebfc5
Author: Richard Sandiford <richard.sandif...@arm.com>
Date:   Wed Jun 15 17:40:09 2022 +0100

    Revert recent internal-fn changes [PR105975]

    The recent internal-fn âclean-upsâ triggered problems on nvptx
    because some of the omp_simt_* patterns had modeless operands.
    I wondered about adapting expand_fn_using_insn to cope with that,
    but then the problem becomes: what should the mode of operand 0
    be when there is no lhs?  The answer depends on the target insn.
    For GOMP_SIMT_ENTER_ALLOC the answer was: use Pmode.
    For GOMP_SIMT_ORDERED_PRED and others the answer was: elide the call.
    (However, GOMP_SIMT_ORDERED_PRED doesn't seem to have ECF_* flags
    that would normally allow it to be dropped at the gimple level.)

    So these instructions seem to be special enough that they need
    their own code after all.  This patch reverts the second patch
    and most of the first.  The only part retained from the first
    is splitting expand_fn_using_insn out of expand_direct_optab_fn,
    since I think expand_fn_using_insn could still be useful in future.

    gcc/
            PR middle-end/105975
            Revert everything apart from the expand_fn_using_insn and
            expand_direct_optab_fn changes from:

            * internal-fn.def (DEF_INTERNAL_INSN_FN): New macro.
            (GOMP_SIMT_ENTER_ALLOC, GOMP_SIMT_EXIT, GOMP_SIMT_LANE)
            (GOMP_SIMT_LAST_LANE, GOMP_SIMT_ORDERED_PRED, GOMP_SIMT_VOTE_ANY)
            (GOMP_SIMT_XCHG_BFLY, GOMP_SIMT_XCHG_IDX): Use it.
            * internal-fn.h (direct_internal_fn_info::directly_mapped): New
            member variable.
            (direct_internal_fn_info::vectorizable): Reduce to 1 bit.
            (direct_internal_fn_p): Also return true for internal functions
            that map directly to instructions defined target-insns.def.
            (direct_internal_fn): Adjust comment accordingly.
            * internal-fn.cc (direct_insn, optab1, optab2, vectorizable_optab1)
            (vectorizable_optab2): New local macros.
            (not_direct): Initialize directly_mapped.
            (mask_load_direct, load_lanes_direct, mask_load_lanes_direct)
            (gather_load_direct, len_load_direct, mask_store_direct)
            (store_lanes_direct, mask_store_lanes_direct, vec_cond_mask_direct)
            (vec_cond_direct, scatter_store_direct, len_store_direct)
            (vec_set_direct, unary_direct, binary_direct, ternary_direct)
            (cond_unary_direct, cond_binary_direct, cond_ternary_direct)
            (while_direct, fold_extract_direct, fold_left_direct)
            (mask_fold_left_direct, check_ptrs_direct): Use the macros above.
            (expand_GOMP_SIMT_ENTER_ALLOC, expand_GOMP_SIMT_EXIT): Delete
            (expand_GOMP_SIMT_LANE, expand_GOMP_SIMT_LAST_LANE): Likewise;
            (expand_GOMP_SIMT_ORDERED_PRED, expand_GOMP_SIMT_VOTE_ANY):
Likewise.
            (expand_GOMP_SIMT_XCHG_BFLY, expand_GOMP_SIMT_XCHG_IDX): Likewise.
            (direct_internal_fn_types): Handle functions that map to
instructions
            defined in target-insns.def.
            (direct_internal_fn_types): Likewise.
            (direct_internal_fn_supported_p): Likewise.
            (internal_fn_expanders): Likewise.

            (expand_fn_using_insn): New function,
            split out and adapted from...
            (expand_direct_optab_fn): ...here.
            (expand_GOMP_SIMT_ENTER_ALLOC): Use it.
            (expand_GOMP_SIMT_EXIT): Likewise.
            (expand_GOMP_SIMT_LANE): Likewise.
            (expand_GOMP_SIMT_LAST_LANE): Likewise.
            (expand_GOMP_SIMT_ORDERED_PRED): Likewise.
            (expand_GOMP_SIMT_VOTE_ANY): Likewise.
            (expand_GOMP_SIMT_XCHG_BFLY): Likewise.
            (expand_GOMP_SIMT_XCHG_IDX): Likewise.

Reply via email to