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

Message ID 20180906111217.24365-1-dimitar@dinux.eu
Headers show
Series
  • New backend for the TI PRU processor
Related show

Message

Dimitar Dimitrov Sept. 6, 2018, 11:12 a.m.
This patch series adds support for the TI PRU I/O processor to GCC. This
fourth patch set revision addresses comments from v1 [1], v2 [2] and
v3 [3].

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

Changes since patch series v3 [3]:
  - Added blockage in epilogue before SP restore.
  - Folded "mov" patterns.

[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

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                         |  178 ++
 gcc/config/pru/constraints.md                      |   88 +
 gcc/config/pru/predicates.md                       |  224 ++
 gcc/config/pru/pru-opts.h                          |   31 +
 gcc/config/pru/pru-passes.c                        |  234 ++
 gcc/config/pru/pru-pragma.c                        |   90 +
 gcc/config/pru/pru-protos.h                        |   72 +
 gcc/config/pru/pru.c                               | 3008 ++++++++++++++++++++
 gcc/config/pru/pru.h                               |  551 ++++
 gcc/config/pru/pru.md                              |  946 ++++++
 gcc/config/pru/pru.opt                             |   53 +
 gcc/config/pru/t-pru                               |   31 +
 gcc/doc/extend.texi                                |   21 +
 gcc/doc/invoke.texi                                |   55 +
 gcc/doc/md.texi                                    |   22 +
 gcc/testsuite/g++.old-deja/g++.abi/ptrmem.C        |    2 +-
 gcc/testsuite/gcc.c-torture/execute/20101011-1.c   |    3 +
 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.dg/tree-ssa/ssa-thread-14.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                       |   16 +
 gcc/testsuite/lib/target-supports.exp              |   38 +-
 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 +
 98 files changed, 8284 insertions(+), 11 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

-- 
2.11.0