This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PING: [PATCH] apply_subst_iterator: Handle define_split/define_insn_and_split
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Uros Bizjak <ubizjak at gmail dot com>, Jeffrey Law <law at redhat dot com>, Jakub Jelinek <jakub at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Eric Botcazou <ebotcazou at libertysurf dot fr>
- Date: Sun, 4 Nov 2018 07:24:30 -0800
- Subject: PING: [PATCH] apply_subst_iterator: Handle define_split/define_insn_and_split
- References: <CAMe9rOrA53JD6PCnkF-Y3uXHa3=5gUwpEqdXekaUWW02GPszCg@mail.gmail.com>
On Fri, Oct 26, 2018 at 12:44 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On 10/25/18, Uros Bizjak <ubizjak@gmail.com> wrote:
> > On Fri, Oct 26, 2018 at 8:48 AM H.J. Lu <hjl.tools@gmail.com> wrote:
> >>
> >> On 10/25/18, Uros Bizjak <ubizjak@gmail.com> wrote:
> >> > On Fri, Oct 26, 2018 at 8:07 AM H.J. Lu <hjl.tools@gmail.com> wrote:
> >> >>
> >> >> * read-rtl.c (apply_subst_iterator): Handle
> >> >> define_insn_and_split.
> >> >> ---
> >> >> gcc/read-rtl.c | 6 ++++--
> >> >> 1 file changed, 4 insertions(+), 2 deletions(-)
> >> >>
> >> >> diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c
> >> >> index d698dd4af4d..5957c29671a 100644
> >> >> --- a/gcc/read-rtl.c
> >> >> +++ b/gcc/read-rtl.c
> >> >> @@ -275,9 +275,11 @@ apply_subst_iterator (rtx rt, unsigned int, int
> >> >> value)
> >> >> if (value == 1)
> >> >> return;
> >> >> gcc_assert (GET_CODE (rt) == DEFINE_INSN
> >> >> + || GET_CODE (rt) == DEFINE_INSN_AND_SPLIT
> >> >> || GET_CODE (rt) == DEFINE_EXPAND);
> >> >
> >> > Can we also handle DEFINE_SPLIT here?
> >> >
> >>
> >> Yes, we could if there were a usage for it. I am reluctant to add
> >> something
> >> I have no use nor test for.
> >
> > Just split one define_insn_and_split to define_insn and corresponding
> > define_split.
> >
> > define_insn_and_split is a contraction for for the define_insn and
> > corresponding define_split, so it looks weird to only handle
> > define_insn_and-split without handling define_split.
> >
>
> Here is the updated patch to handle define_split. Tested with
>
> (define_insn "*sse4_1_<code>v8qiv8hi2<mask_name>_2"
> [(set (match_operand:V8HI 0 "register_operand")
> (any_extend:V8HI
> (vec_select:V8QI
> (subreg:V16QI
> (vec_concat:V2DI
> (match_operand:DI 1 "memory_operand")
> (const_int 0)) 0)
> (parallel [(const_int 0) (const_int 1)
> (const_int 2) (const_int 3)
> (const_int 4) (const_int 5)
> (const_int 6) (const_int 7)]))))]
> "TARGET_SSE4_1 && <mask_avx512bw_condition> && <mask_avx512vl_condition>"
> "#")
>
> (define_split
> [(set (match_operand:V8HI 0 "register_operand")
> (any_extend:V8HI
> (vec_select:V8QI
> (subreg:V16QI
> (vec_concat:V2DI
> (match_operand:DI 1 "memory_operand")
> (const_int 0)) 0)
> (parallel [(const_int 0) (const_int 1)
> (const_int 2) (const_int 3)
> (const_int 4) (const_int 5)
> (const_int 6) (const_int 7)]))))]
> "TARGET_SSE4_1 && <mask_avx512bw_condition> && <mask_avx512vl_condition>
> && can_create_pseudo_p ()"
> [(set (match_dup 0)
> (any_extend:V8HI (match_dup 1)))]
> {
> operands[1] = adjust_address_nv (operands[1], V8QImode, 0);
> })
>
PING:
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg01665.html
This patch blocks an i386 backend patch.
--
H.J.