LGTM. Kito Cheng <k...@andestech.com> 於 2019年3月26日 週二 下午1:29寫道:
> From: Kito Cheng <kito.ch...@gmail.com> > > Kito Cheng <kito.ch...@gmail.com> > Shiva Chen <shiva0...@gmail.com> > > ChangeLog: > gcc/ > * config/nds32/nds32-pipelines-auxiliary.c (wext_odd_dep_p): > Handle subreg. > > gcc/testsuite > * gcc.target/nds32/wext-dep.c: New. > --- > gcc/config/nds32/nds32-pipelines-auxiliary.c | 16 ++++++++++++---- > gcc/testsuite/gcc.target/nds32/wext-dep.c | 11 +++++++++++ > 2 files changed, 23 insertions(+), 4 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/nds32/wext-dep.c > > diff --git a/gcc/config/nds32/nds32-pipelines-auxiliary.c > b/gcc/config/nds32/nds32-pipelines-auxiliary.c > index 0c043d4..07ba037 100644 > --- a/gcc/config/nds32/nds32-pipelines-auxiliary.c > +++ b/gcc/config/nds32/nds32-pipelines-auxiliary.c > @@ -363,14 +363,19 @@ wext_odd_dep_p (rtx insn, rtx def_reg) > return reg_overlap_p (def_reg, use_reg); > > gcc_assert (REG_P (def_reg) || GET_CODE (def_reg) == SUBREG); > - gcc_assert (REG_P (use_reg)); > + gcc_assert (REG_P (use_reg) || GET_CODE (use_reg) == SUBREG); > > if (REG_P (def_reg)) > { > - if (!TARGET_BIG_ENDIAN) > - return REGNO (def_reg) == REGNO (use_reg) + 1; > + if REG_P (use_reg) > + { > + if (!TARGET_BIG_ENDIAN) > + return REGNO (def_reg) == REGNO (use_reg) + 1; > + else > + return REGNO (def_reg) == REGNO (use_reg); > + } > else > - return REGNO (def_reg) == REGNO (use_reg); > + return true; > } > > if (GET_CODE (def_reg) == SUBREG) > @@ -378,6 +383,9 @@ wext_odd_dep_p (rtx insn, rtx def_reg) > if (!reg_overlap_p (def_reg, use_reg)) > return false; > > + if (GET_CODE (use_reg) == SUBREG) > + return true; > + > if (!TARGET_BIG_ENDIAN) > return SUBREG_BYTE (def_reg) == 4; > else > diff --git a/gcc/testsuite/gcc.target/nds32/wext-dep.c > b/gcc/testsuite/gcc.target/nds32/wext-dep.c > new file mode 100644 > index 0000000..2af04d0 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/nds32/wext-dep.c > @@ -0,0 +1,11 @@ > +/* { dg-do compile } */ > +/* { dg-options "-mext-dsp -mcpu=n15" { target nds32*-*-* } } */ > + > +/* The test case check that wext_odd_dep_p in nds32-pipelines-auxiliary.c > + could handle the use_reg is SUBREG. */ > +typedef long long T; > +typedef T vl_t __attribute__((vector_size(2 * sizeof (T)))); > + > +void foo(vl_t *a, vl_t *b, int c) { > + *a = *b >> c; > +} > -- > 1.8.3.1 > >