public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "H.J. Lu" <hjl.tools@gmail.com>
To: Richard Biener <richard.guenther@gmail.com>
Cc: Uros Bizjak <ubizjak@gmail.com>, liuhongt <hongtao.liu@intel.com>,
	gcc-patches@gcc.gnu.org,  crazylht@gmail.com
Subject: Re: [PATCH] Remove TARGET_GEN_MEMSET_SCRATCH_RTX since it's not used anymore.
Date: Wed, 22 Mar 2023 11:23:11 -0700	[thread overview]
Message-ID: <CAMe9rOojdTeTUVg4JBbdWer9V9FVLoo+XT_CkYusrUGQvN63Dw@mail.gmail.com> (raw)
In-Reply-To: <CAFiYyc051spn1VrS2zSkAsD0fhGYerh0AM14jWt438fjRXco3Q@mail.gmail.com>

On Wed, Mar 22, 2023 at 3:19 AM Richard Biener
<richard.guenther@gmail.com> wrote:
>
> On Wed, Mar 22, 2023 at 8:07 AM Uros Bizjak <ubizjak@gmail.com> wrote:
> >
> > On Wed, Mar 22, 2023 at 3:59 AM liuhongt <hongtao.liu@intel.com> wrote:
> > >
> > > The target hook is only used by i386, and the current definition is
> > > same as default gen_reg_rtx. So there's no need for this target hook.
> > >
> > > Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,}.
> > > Ok for trunk(or GCC14)?
> > >
> > > gcc/ChangeLog:
> > >
> > >         * builtins.cc (builtin_memset_read_str): Replace
> > >         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
> > >         (builtin_memset_gen_str): Ditto.
> > >         * config/i386/i386-expand.cc
> > >         (ix86_convert_const_wide_int_to_broadcast): Replace
> > >         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
> > >         (ix86_expand_vector_move): Ditto.
> > >         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
> > >         Removed.
> > >         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
> > >         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
> > >         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
> > >         * doc/tm.texi.in: Ditto.
> > >         * target.def: Ditto.
> >
> > Looks trivial enough for gcc13, so OK for x86 part.
> >
> > Needs also OK from a middle-end reviewer.
>
> Is/was the code ever exercised for non-x86?  HJ, what was the reason to
> abstract this?
>
> OK if HJ thinks it was really unnecessary abstraction unlikely to be
> required by another target.

OK with me.

Thanks.

> Richard.
>
> > Thanks,
> > Uros.
> >
> > > ---
> > >  gcc/builtins.cc                |  4 ++--
> > >  gcc/config/i386/i386-expand.cc |  6 +++---
> > >  gcc/config/i386/i386-protos.h  |  2 --
> > >  gcc/config/i386/i386.cc        | 12 ------------
> > >  gcc/doc/tm.texi                |  7 -------
> > >  gcc/doc/tm.texi.in             |  2 --
> > >  gcc/target.def                 |  9 ---------
> > >  7 files changed, 5 insertions(+), 37 deletions(-)
> > >
> > > diff --git a/gcc/builtins.cc b/gcc/builtins.cc
> > > index 90246e214d6..8026e2001b7 100644
> > > --- a/gcc/builtins.cc
> > > +++ b/gcc/builtins.cc
> > > @@ -4212,7 +4212,7 @@ builtin_memset_read_str (void *data, void *prev,
> > >         return const_vec;
> > >
> > >        /* Use the move expander with CONST_VECTOR.  */
> > > -      target = targetm.gen_memset_scratch_rtx (mode);
> > > +      target = gen_reg_rtx (mode);
> > >        emit_move_insn (target, const_vec);
> > >        return target;
> > >      }
> > > @@ -4256,7 +4256,7 @@ builtin_memset_gen_str (void *data, void *prev,
> > >          the memset expander.  */
> > >        insn_code icode = optab_handler (vec_duplicate_optab, mode);
> > >
> > > -      target = targetm.gen_memset_scratch_rtx (mode);
> > > +      target = gen_reg_rtx (mode);
> > >        class expand_operand ops[2];
> > >        create_output_operand (&ops[0], target, mode);
> > >        create_input_operand (&ops[1], (rtx) data, QImode);
> > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
> > > index c1300dc4e26..1e3ce4b7c3f 100644
> > > --- a/gcc/config/i386/i386-expand.cc
> > > +++ b/gcc/config/i386/i386-expand.cc
> > > @@ -338,7 +338,7 @@ ix86_convert_const_wide_int_to_broadcast (machine_mode mode, rtx op)
> > >    machine_mode vector_mode;
> > >    if (!mode_for_vector (broadcast_mode, nunits).exists (&vector_mode))
> > >      gcc_unreachable ();
> > > -  rtx target = ix86_gen_scratch_sse_rtx (vector_mode);
> > > +  rtx target = gen_reg_rtx (vector_mode);
> > >    bool ok = ix86_expand_vector_init_duplicate (false, vector_mode,
> > >                                                target,
> > >                                                GEN_INT (val_broadcast));
> > > @@ -686,7 +686,7 @@ ix86_expand_vector_move (machine_mode mode, rtx operands[])
> > >        if (!register_operand (op0, mode)
> > >           && !register_operand (op1, mode))
> > >         {
> > > -         rtx scratch = ix86_gen_scratch_sse_rtx (mode);
> > > +         rtx scratch = gen_reg_rtx (mode);
> > >           emit_move_insn (scratch, op1);
> > >           op1 = scratch;
> > >         }
> > > @@ -728,7 +728,7 @@ ix86_expand_vector_move (machine_mode mode, rtx operands[])
> > >        && !register_operand (op0, mode)
> > >        && !register_operand (op1, mode))
> > >      {
> > > -      rtx tmp = ix86_gen_scratch_sse_rtx (GET_MODE (op0));
> > > +      rtx tmp = gen_reg_rtx (GET_MODE (op0));
> > >        emit_move_insn (tmp, op1);
> > >        emit_move_insn (op0, tmp);
> > >        return;
> > > diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
> > > index bfb2198265a..71ae95ffef7 100644
> > > --- a/gcc/config/i386/i386-protos.h
> > > +++ b/gcc/config/i386/i386-protos.h
> > > @@ -50,8 +50,6 @@ extern void ix86_reset_previous_fndecl (void);
> > >
> > >  extern bool ix86_using_red_zone (void);
> > >
> > > -extern rtx ix86_gen_scratch_sse_rtx (machine_mode);
> > > -
> > >  extern unsigned int ix86_regmode_natural_size (machine_mode);
> > >  extern bool ix86_check_builtin_isa_match (unsigned int fcode);
> > >  #ifdef RTX_CODE
> > > diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
> > > index 5d0e4739a84..6a8734c2346 100644
> > > --- a/gcc/config/i386/i386.cc
> > > +++ b/gcc/config/i386/i386.cc
> > > @@ -24197,15 +24197,6 @@ ix86_optab_supported_p (int op, machine_mode mode1, machine_mode,
> > >      }
> > >  }
> > >
> > > -/* Implement the TARGET_GEN_MEMSET_SCRATCH_RTX hook.  Return a scratch
> > > -   register in MODE for vector load and store.  */
> > > -
> > > -rtx
> > > -ix86_gen_scratch_sse_rtx (machine_mode mode)
> > > -{
> > > -  return gen_reg_rtx (mode);
> > > -}
> > > -
> > >  /* Address space support.
> > >
> > >     This is not "far pointers" in the 16-bit sense, but an easy way
> > > @@ -25253,9 +25244,6 @@ static bool ix86_libc_has_fast_function (int fcode ATTRIBUTE_UNUSED)
> > >  #undef TARGET_LIBC_HAS_FAST_FUNCTION
> > >  #define TARGET_LIBC_HAS_FAST_FUNCTION ix86_libc_has_fast_function
> > >
> > > -#undef TARGET_GEN_MEMSET_SCRATCH_RTX
> > > -#define TARGET_GEN_MEMSET_SCRATCH_RTX ix86_gen_scratch_sse_rtx
> > > -
> > >  #if CHECKING_P
> > >  #undef TARGET_RUN_TARGET_SELFTESTS
> > >  #define TARGET_RUN_TARGET_SELFTESTS selftest::ix86_run_selftests
> > > diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
> > > index c4a92a5ebee..4bb48c5428c 100644
> > > --- a/gcc/doc/tm.texi
> > > +++ b/gcc/doc/tm.texi
> > > @@ -12001,13 +12001,6 @@ This function prepares to emit a conditional comparison within a sequence
> > >   @var{bit_code} is @code{AND} or @code{IOR}, which is the op on the compares.
> > >  @end deftypefn
> > >
> > > -@deftypefn {Target Hook} rtx TARGET_GEN_MEMSET_SCRATCH_RTX (machine_mode @var{mode})
> > > -This hook should return an rtx for a scratch register in @var{mode} to
> > > -be used when expanding memset calls.  The backend can use a hard scratch
> > > -register to avoid stack realignment when expanding memset.  The default
> > > -is @code{gen_reg_rtx}.
> > > -@end deftypefn
> > > -
> > >  @deftypefn {Target Hook} unsigned TARGET_LOOP_UNROLL_ADJUST (unsigned @var{nunroll}, class loop *@var{loop})
> > >  This target hook returns a new value for the number of times @var{loop}
> > >  should be unrolled. The parameter @var{nunroll} is the number of times
> > > diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
> > > index 4075e71624c..f7ab5d48a63 100644
> > > --- a/gcc/doc/tm.texi.in
> > > +++ b/gcc/doc/tm.texi.in
> > > @@ -7787,8 +7787,6 @@ lists.
> > >
> > >  @hook TARGET_GEN_CCMP_NEXT
> > >
> > > -@hook TARGET_GEN_MEMSET_SCRATCH_RTX
> > > -
> > >  @hook TARGET_LOOP_UNROLL_ADJUST
> > >
> > >  @defmac POWI_MAX_MULTS
> > > diff --git a/gcc/target.def b/gcc/target.def
> > > index f401fe148ee..1b9c882229e 100644
> > > --- a/gcc/target.def
> > > +++ b/gcc/target.def
> > > @@ -2738,15 +2738,6 @@ DEFHOOK
> > >   rtx, (rtx_insn **prep_seq, rtx_insn **gen_seq, rtx prev, int cmp_code, tree op0, tree op1, int bit_code),
> > >   NULL)
> > >
> > > -DEFHOOK
> > > -(gen_memset_scratch_rtx,
> > > - "This hook should return an rtx for a scratch register in @var{mode} to\n\
> > > -be used when expanding memset calls.  The backend can use a hard scratch\n\
> > > -register to avoid stack realignment when expanding memset.  The default\n\
> > > -is @code{gen_reg_rtx}.",
> > > - rtx, (machine_mode mode),
> > > - gen_reg_rtx)
> > > -
> > >  /* Return a new value for loop unroll size.  */
> > >  DEFHOOK
> > >  (loop_unroll_adjust,
> > > --
> > > 2.39.1.388.g2fc9e9ca3c
> > >



-- 
H.J.

      parent reply	other threads:[~2023-03-22 18:23 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-22  2:57 liuhongt
2023-03-22  7:07 ` Uros Bizjak
2023-03-22 10:18   ` Richard Biener
2023-03-22 10:34     ` Jakub Jelinek
2023-03-22 18:23     ` H.J. Lu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAMe9rOojdTeTUVg4JBbdWer9V9FVLoo+XT_CkYusrUGQvN63Dw@mail.gmail.com \
    --to=hjl.tools@gmail.com \
    --cc=crazylht@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hongtao.liu@intel.com \
    --cc=richard.guenther@gmail.com \
    --cc=ubizjak@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).