mbox series

[v6,00/10] New backend for the TI PRU processor

Message ID 20190609200147.27209-1-dimitar@dinux.eu
Headers show
Series New backend for the TI PRU processor | expand

Message

Dimitar Dimitrov June 9, 2019, 8:01 p.m. UTC
This is the latest patch set for adding TI PRU I/O processor backend to GCC.
Comments from all previous series have been addressed [1], [2], [3], [4], [5].

Test results can be downloaded from here:
   http://dinux.eu/gnupru/testresults/20190607-c16eb7019be/

Changes since patch series v5 [5] are minimal:

- A few whitespace and comment fixes.
- doloop_end_internal length expression fix.
- Define TARGET_HARD_REGNO_CALL_PART_CLOBBERED hook for PRU.
- Use uniform naming for the PRU register number constants.

[1] http://gcc.gnu.org/ml/gcc-patches/2018-06/msg00775.html
[2] http://gcc.gnu.org/ml/gcc-patches/2018-07/msg01779.html
[3] http://gcc.gnu.org/ml/gcc-patches/2018-08/msg00927.html
[4] http://gcc.gnu.org/ml/gcc-patches/2018-09/msg00392.html
[5] http://gcc.gnu.org/ml/gcc-patches/2018-10/msg00979.html

Regards,
Dimitar

Dimitar Dimitrov (10):
  Initial TI PRU GCC port
  Initial TI PRU libgcc port
  testsuite: Add PRU tests
  testsuite: Add check for overflowed IMEM region to testsuite
  testsuite: Add check for unsupported TI ABI PRU features to testsuite
  testsuite: Remove PRU from test cases requiring hosted environment
  testsuite: Define PRU stack usage
  testsuite: Mark that PRU has one-cycle jumps
  testsuite: Mark that PRU uses all function pointer bits
  testsuite: Mark testsuite that PRU has different calling convention

 configure.ac                                       |    7 +
 gcc/common/config/pru/pru-common.c                 |   36 +
 gcc/config.gcc                                     |    9 +
 gcc/config/pru/alu-zext.md                         |  181 ++
 gcc/config/pru/constraints.md                      |  108 +
 gcc/config/pru/predicates.md                       |  287 ++
 gcc/config/pru/pru-opts.h                          |   31 +
 gcc/config/pru/pru-passes.c                        |  228 ++
 gcc/config/pru/pru-pragma.c                        |   86 +
 gcc/config/pru/pru-protos.h                        |   72 +
 gcc/config/pru/pru.c                               | 3036 ++++++++++++++++++++
 gcc/config/pru/pru.h                               |  573 ++++
 gcc/config/pru/pru.md                              | 1022 +++++++
 gcc/config/pru/pru.opt                             |   54 +
 gcc/config/pru/t-pru                               |   31 +
 gcc/doc/extend.texi                                |   21 +
 gcc/doc/invoke.texi                                |   65 +
 gcc/doc/md.texi                                    |   19 +
 gcc/testsuite/g++.old-deja/g++.abi/ptrmem.C        |    2 +-
 gcc/testsuite/gcc.c-torture/execute/20101011-1.c   |    2 +
 gcc/testsuite/gcc.dg/20020312-2.c                  |    2 +
 gcc/testsuite/gcc.dg/builtin-apply2.c              |    2 +-
 gcc/testsuite/gcc.dg/stack-usage-1.c               |    2 +
 .../gcc.dg/torture/stackalign/builtin-apply-2.c    |    2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c         |    2 +-
 gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c         |    2 +-
 gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c         |    2 +-
 gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c         |    2 +-
 gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c         |    2 +-
 gcc/testsuite/gcc.target/pru/abi-arg-struct.c      |  164 ++
 gcc/testsuite/gcc.target/pru/ashiftrt.c            |   13 +
 gcc/testsuite/gcc.target/pru/builtins-1.c          |   12 +
 gcc/testsuite/gcc.target/pru/builtins-error.c      |    6 +
 gcc/testsuite/gcc.target/pru/clearbit.c            |   13 +
 gcc/testsuite/gcc.target/pru/loop-asm.c            |   19 +
 gcc/testsuite/gcc.target/pru/loop-dowhile.c        |   45 +
 gcc/testsuite/gcc.target/pru/loop-hi-1.c           |   38 +
 gcc/testsuite/gcc.target/pru/loop-hi-2.c           |   17 +
 gcc/testsuite/gcc.target/pru/loop-qi-1.c           |   38 +
 gcc/testsuite/gcc.target/pru/loop-qi-2.c           |   17 +
 gcc/testsuite/gcc.target/pru/loop-short-1.c        |   53 +
 gcc/testsuite/gcc.target/pru/loop-short-2.c        |   21 +
 gcc/testsuite/gcc.target/pru/loop-si-1.c           |   41 +
 gcc/testsuite/gcc.target/pru/loop-si-2.c           |   20 +
 .../gcc.target/pru/loop-u8_pcrel_overflow.c        |   42 +
 gcc/testsuite/gcc.target/pru/loop-ubyte-1.c        |   30 +
 gcc/testsuite/gcc.target/pru/loop-ubyte-2.c        |   18 +
 .../pru/lra-framepointer-fragmentation-1.c         |   33 +
 .../pru/lra-framepointer-fragmentation-2.c         |   61 +
 gcc/testsuite/gcc.target/pru/mabi-ti-1.c           |   10 +
 gcc/testsuite/gcc.target/pru/mabi-ti-2.c           |   15 +
 gcc/testsuite/gcc.target/pru/mabi-ti-3.c           |   12 +
 gcc/testsuite/gcc.target/pru/mabi-ti-4.c           |   14 +
 gcc/testsuite/gcc.target/pru/mabi-ti-5.c           |   33 +
 gcc/testsuite/gcc.target/pru/mabi-ti-6.c           |   12 +
 gcc/testsuite/gcc.target/pru/mabi-ti-7.c           |   21 +
 gcc/testsuite/gcc.target/pru/pr64366.c             |  128 +
 gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c |   22 +
 gcc/testsuite/gcc.target/pru/pru.exp               |   41 +
 gcc/testsuite/gcc.target/pru/qbbc-1.c              |   29 +
 gcc/testsuite/gcc.target/pru/qbbc-2.c              |   15 +
 gcc/testsuite/gcc.target/pru/qbbc-3.c              |   15 +
 gcc/testsuite/gcc.target/pru/qbbs-1.c              |   29 +
 gcc/testsuite/gcc.target/pru/qbbs-2.c              |   15 +
 gcc/testsuite/gcc.target/pru/setbit.c              |   13 +
 .../gcc.target/pru/zero_extend-and-hisi.c          |   16 +
 .../gcc.target/pru/zero_extend-and-qihi.c          |   16 +
 .../gcc.target/pru/zero_extend-and-qisi.c          |   16 +
 gcc/testsuite/gcc.target/pru/zero_extend-hisi.c    |   43 +
 gcc/testsuite/gcc.target/pru/zero_extend-qihi.c    |   43 +
 gcc/testsuite/gcc.target/pru/zero_extend-qisi.c    |   43 +
 gcc/testsuite/lib/gcc-dg.exp                       |   11 +
 gcc/testsuite/lib/target-supports.exp              |   35 +-
 gcc/testsuite/lib/target-utils.exp                 |   12 +
 libgcc/config.host                                 |    7 +
 libgcc/config/pru/asri.c                           |   33 +
 libgcc/config/pru/eqd.c                            |   45 +
 libgcc/config/pru/eqf.c                            |   45 +
 libgcc/config/pru/ged.c                            |   45 +
 libgcc/config/pru/gef.c                            |   45 +
 libgcc/config/pru/gtd.c                            |   45 +
 libgcc/config/pru/gtf.c                            |   45 +
 libgcc/config/pru/led.c                            |   45 +
 libgcc/config/pru/lef.c                            |   45 +
 libgcc/config/pru/lib2bitcountHI.c                 |   43 +
 libgcc/config/pru/lib2divHI.c                      |   42 +
 libgcc/config/pru/lib2divQI.c                      |   42 +
 libgcc/config/pru/lib2divSI.c                      |   48 +
 libgcc/config/pru/libgcc-eabi.ver                  |   88 +
 libgcc/config/pru/ltd.c                            |   45 +
 libgcc/config/pru/ltf.c                            |   45 +
 libgcc/config/pru/mpyll.S                          |   57 +
 libgcc/config/pru/pru-abi.h                        |  109 +
 libgcc/config/pru/pru-asm.h                        |   35 +
 libgcc/config/pru/pru-divmod.h                     |  117 +
 libgcc/config/pru/sfp-machine.h                    |  125 +
 libgcc/config/pru/t-pru                            |   50 +
 97 files changed, 8485 insertions(+), 9 deletions(-)
 create mode 100644 gcc/common/config/pru/pru-common.c
 create mode 100644 gcc/config/pru/alu-zext.md
 create mode 100644 gcc/config/pru/constraints.md
 create mode 100644 gcc/config/pru/predicates.md
 create mode 100644 gcc/config/pru/pru-opts.h
 create mode 100644 gcc/config/pru/pru-passes.c
 create mode 100644 gcc/config/pru/pru-pragma.c
 create mode 100644 gcc/config/pru/pru-protos.h
 create mode 100644 gcc/config/pru/pru.c
 create mode 100644 gcc/config/pru/pru.h
 create mode 100644 gcc/config/pru/pru.md
 create mode 100644 gcc/config/pru/pru.opt
 create mode 100644 gcc/config/pru/t-pru
 create mode 100644 gcc/testsuite/gcc.target/pru/abi-arg-struct.c
 create mode 100644 gcc/testsuite/gcc.target/pru/ashiftrt.c
 create mode 100644 gcc/testsuite/gcc.target/pru/builtins-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/builtins-error.c
 create mode 100644 gcc/testsuite/gcc.target/pru/clearbit.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-asm.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-dowhile.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-hi-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-hi-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-qi-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-qi-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-short-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-short-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-si-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-si-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-u8_pcrel_overflow.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-ubyte-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/loop-ubyte-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-3.c
 create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-4.c
 create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-5.c
 create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-6.c
 create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-7.c
 create mode 100644 gcc/testsuite/gcc.target/pru/pr64366.c
 create mode 100644 gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c
 create mode 100644 gcc/testsuite/gcc.target/pru/pru.exp
 create mode 100644 gcc/testsuite/gcc.target/pru/qbbc-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/qbbc-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/qbbc-3.c
 create mode 100644 gcc/testsuite/gcc.target/pru/qbbs-1.c
 create mode 100644 gcc/testsuite/gcc.target/pru/qbbs-2.c
 create mode 100644 gcc/testsuite/gcc.target/pru/setbit.c
 create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-and-hisi.c
 create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-and-qihi.c
 create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-and-qisi.c
 create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-hisi.c
 create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-qihi.c
 create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-qisi.c
 create mode 100644 libgcc/config/pru/asri.c
 create mode 100644 libgcc/config/pru/eqd.c
 create mode 100644 libgcc/config/pru/eqf.c
 create mode 100644 libgcc/config/pru/ged.c
 create mode 100644 libgcc/config/pru/gef.c
 create mode 100644 libgcc/config/pru/gtd.c
 create mode 100644 libgcc/config/pru/gtf.c
 create mode 100644 libgcc/config/pru/led.c
 create mode 100644 libgcc/config/pru/lef.c
 create mode 100644 libgcc/config/pru/lib2bitcountHI.c
 create mode 100644 libgcc/config/pru/lib2divHI.c
 create mode 100644 libgcc/config/pru/lib2divQI.c
 create mode 100644 libgcc/config/pru/lib2divSI.c
 create mode 100644 libgcc/config/pru/libgcc-eabi.ver
 create mode 100644 libgcc/config/pru/ltd.c
 create mode 100644 libgcc/config/pru/ltf.c
 create mode 100644 libgcc/config/pru/mpyll.S
 create mode 100644 libgcc/config/pru/pru-abi.h
 create mode 100644 libgcc/config/pru/pru-asm.h
 create mode 100644 libgcc/config/pru/pru-divmod.h
 create mode 100644 libgcc/config/pru/sfp-machine.h
 create mode 100644 libgcc/config/pru/t-pru

Comments

Jeff Law June 11, 2019, 8:04 p.m. UTC | #1
On 6/9/19 2:01 PM, Dimitar Dimitrov wrote:
> This is the latest patch set for adding TI PRU I/O processor backend to GCC.
> Comments from all previous series have been addressed [1], [2], [3], [4], [5].
> 
> Test results can be downloaded from here:
>    http://dinux.eu/gnupru/testresults/20190607-c16eb7019be/
> 
> Changes since patch series v5 [5] are minimal:
> 
> - A few whitespace and comment fixes.
> - doloop_end_internal length expression fix.
> - Define TARGET_HARD_REGNO_CALL_PART_CLOBBERED hook for PRU.
> - Use uniform naming for the PRU register number constants.
> 
> [1] http://gcc.gnu.org/ml/gcc-patches/2018-06/msg00775.html
> [2] http://gcc.gnu.org/ml/gcc-patches/2018-07/msg01779.html
> [3] http://gcc.gnu.org/ml/gcc-patches/2018-08/msg00927.html
> [4] http://gcc.gnu.org/ml/gcc-patches/2018-09/msg00392.html
> [5] http://gcc.gnu.org/ml/gcc-patches/2018-10/msg00979.html
> 
> Regards,
> Dimitar
> 
> Dimitar Dimitrov (10):
>   Initial TI PRU GCC port
>   Initial TI PRU libgcc port
>   testsuite: Add PRU tests
>   testsuite: Add check for overflowed IMEM region to testsuite
>   testsuite: Add check for unsupported TI ABI PRU features to testsuite
>   testsuite: Remove PRU from test cases requiring hosted environment
>   testsuite: Define PRU stack usage
>   testsuite: Mark that PRU has one-cycle jumps
>   testsuite: Mark that PRU uses all function pointer bits
>   testsuite: Mark testsuite that PRU has different calling convention
[ ... ]
My recollection was this was all ready to go, so I'm going to ack with
the only pre-commit requirement being to fix the issue Andreas pointed
out with the 20101011-1.c test change.

Can you please fill out the write-after-approval form (list me as your
sponsor)

https://sourceware.org/cgi-bin/pdw/ps_form.cgi

Jeff
Dimitar Dimitrov June 12, 2019, 8:12 p.m. UTC | #2
On вторник, 11 юни 2019 г. 14:04:41 EEST Jeff Law wrote:
> On 6/9/19 2:01 PM, Dimitar Dimitrov wrote:
> > This is the latest patch set for adding TI PRU I/O processor backend to
> > GCC. Comments from all previous series have been addressed [1], [2], [3],
> > [4], [5].> 
> > Test results can be downloaded from here:
> >    http://dinux.eu/gnupru/testresults/20190607-c16eb7019be/
> > 
> > Changes since patch series v5 [5] are minimal:
> > 
> > - A few whitespace and comment fixes.
> > - doloop_end_internal length expression fix.
> > - Define TARGET_HARD_REGNO_CALL_PART_CLOBBERED hook for PRU.
> > - Use uniform naming for the PRU register number constants.
> > 
> > [1] http://gcc.gnu.org/ml/gcc-patches/2018-06/msg00775.html
> > [2] http://gcc.gnu.org/ml/gcc-patches/2018-07/msg01779.html
> > [3] http://gcc.gnu.org/ml/gcc-patches/2018-08/msg00927.html
> > [4] http://gcc.gnu.org/ml/gcc-patches/2018-09/msg00392.html
> > [5] http://gcc.gnu.org/ml/gcc-patches/2018-10/msg00979.html
> > 
> > Regards,
> > Dimitar
> > 
> > Dimitar Dimitrov (10):
> >   Initial TI PRU GCC port
> >   Initial TI PRU libgcc port
> >   testsuite: Add PRU tests
> >   testsuite: Add check for overflowed IMEM region to testsuite
> >   testsuite: Add check for unsupported TI ABI PRU features to testsuite
> >   testsuite: Remove PRU from test cases requiring hosted environment
> >   testsuite: Define PRU stack usage
> >   testsuite: Mark that PRU has one-cycle jumps
> >   testsuite: Mark that PRU uses all function pointer bits
> >   testsuite: Mark testsuite that PRU has different calling convention
> 
> [ ... ]
> My recollection was this was all ready to go, so I'm going to ack with
> the only pre-commit requirement being to fix the issue Andreas pointed
> out with the 20101011-1.c test change.
> 
> Can you please fill out the write-after-approval form (list me as your
> sponsor)
> 
> https://sourceware.org/cgi-bin/pdw/ps_form.cgi
> 
> Jeff
I committed all the patches to trunk. The 20101011-1.c issue was fixed.

Thanks,
Dimitar