Hello!

This patch series shows how I'm approaching OpenMP SIMD for NVPTX.  It looks
good both in check-c testing and libgomp testing, including new target-3x.c
cases (but for-5.c fails to run with resource exhaustion, maybe it should be
split for NVPTX -- will investigate more later).

The previously posted patch to handle 'omp_data_o' is no longer necessary with
soft-stacks.

Looking forward to your comments.

Alexander

  nvptx backend: allow emitting COND_EXEC insns
  nvptx backend: new "uniform SIMT" codegen variant
  nvptx backend: add two more identifier maps
  nvptx backend: add -mgomp option and multilib
  new target hook: TARGET_SIMT_VF
  nvptx libgcc: rewrite in C
  nvptx mkoffload: pass -mgomp for OpenMP offloading
  libgomp: update gomp_nvptx_main for -mgomp
  adjust SIMD loop lowering for SIMT targets

 gcc/config/nvptx/mkoffload.c       |   7 ++
 gcc/config/nvptx/nvptx.c           | 181 ++++++++++++++++++++++++++++++++-----
 gcc/config/nvptx/nvptx.h           |   4 +
 gcc/config/nvptx/nvptx.md          |  61 +++++++++----
 gcc/config/nvptx/nvptx.opt         |   8 ++
 gcc/config/nvptx/t-nvptx           |   2 +
 gcc/doc/invoke.texi                |  19 ++++
 gcc/doc/tm.texi                    |   4 +
 gcc/doc/tm.texi.in                 |   2 +
 gcc/internal-fn.c                  |  22 +++++
 gcc/internal-fn.def                |   2 +
 gcc/omp-low.c                      | 138 ++++++++++++++++++++++++++--
 gcc/passes.def                     |   1 +
 gcc/target.def                     |  12 +++
 gcc/tree-pass.h                    |   2 +
 libgcc/config/nvptx/crt0.c         |  61 +++++++++++++
 libgcc/config/nvptx/crt0.s         |  54 -----------
 libgcc/config/nvptx/free.asm       |  50 ----------
 libgcc/config/nvptx/free.c         |  34 +++++++
 libgcc/config/nvptx/malloc.asm     |  55 -----------
 libgcc/config/nvptx/malloc.c       |  35 +++++++
 libgcc/config/nvptx/nvptx-malloc.h |   5 +
 libgcc/config/nvptx/realloc.c      |   2 +
 libgcc/config/nvptx/stacks.c       |  30 ++++++
 libgcc/config/nvptx/t-nvptx        |  11 ++-
 libgomp/config/nvptx/team.c        |  37 ++++++--
 26 files changed, 622 insertions(+), 217 deletions(-)
 create mode 100644 libgcc/config/nvptx/crt0.c
 delete mode 100644 libgcc/config/nvptx/crt0.s
 delete mode 100644 libgcc/config/nvptx/free.asm
 create mode 100644 libgcc/config/nvptx/free.c
 delete mode 100644 libgcc/config/nvptx/malloc.asm
 create mode 100644 libgcc/config/nvptx/malloc.c
 create mode 100644 libgcc/config/nvptx/stacks.c

Reply via email to