public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 0/7] OpenMP: dispatch + adjust_args support
@ 2024-05-27 11:54 Paul-Antoine Arras
  2024-05-27 11:54 ` [PATCH 1/7] OpenMP: dispatch + adjust_args tree data structures and front-end interfaces Paul-Antoine Arras
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Paul-Antoine Arras @ 2024-05-27 11:54 UTC (permalink / raw)
  To: gcc-patches; +Cc: Paul-Antoine Arras

This series of patches implement two tightly-knit OpenMP features: the
`dispatch` construct and the `adjust_args` clause to the `declare variant`
directive. `adjust_args` can only be used if the `dispatch` selector appears in
the `match` clause. The "interoperability requirement set" and the `append_args`
clause are out of scope.

In practice, this is mostly useful to transparently convert host pointer
arguments into device pointers when the function is offloaded.

All three front-ends have been tested on an x86_64 Linux machine, as well as
offloading on an AMD Instinct MI210 (gfx90a) GPU.

Paul-Antoine Arras (7):
  OpenMP: dispatch + adjust_args tree data structures and front-end
    interfaces
  OpenMP: middle-end support for dispatch + adjust_args
  OpenMP: C front-end support for dispatch + adjust_args
  OpenMP: C++ front-end support for dispatch + adjust_args
  OpenMP: common C/C++ testcases for dispatch + adjust_args
  OpenMP: Fortran front-end support for dispatch + adjust_args
  OpenMP: update documentation for dispatch and adjust_args

 gcc/builtin-types.def                         |   1 +
 gcc/c-family/c-attribs.cc                     |   2 +
 gcc/c-family/c-omp.cc                         |   4 +-
 gcc/c-family/c-pragma.cc                      |   1 +
 gcc/c-family/c-pragma.h                       |   3 +
 gcc/c/c-parser.cc                             | 483 ++++++++++++--
 gcc/c/c-typeck.cc                             |   2 +
 gcc/cp/decl.cc                                |  27 +
 gcc/cp/parser.cc                              | 613 ++++++++++++++++--
 gcc/cp/pt.cc                                  |   3 +
 gcc/cp/semantics.cc                           |  20 +
 gcc/fortran/dump-parse-tree.cc                |  17 +
 gcc/fortran/frontend-passes.cc                |   2 +
 gcc/fortran/gfortran.h                        |  11 +-
 gcc/fortran/match.h                           |   1 +
 gcc/fortran/openmp.cc                         | 193 +++++-
 gcc/fortran/parse.cc                          |  38 ++
 gcc/fortran/resolve.cc                        |   2 +
 gcc/fortran/st.cc                             |   1 +
 gcc/fortran/trans-decl.cc                     |   9 +-
 gcc/fortran/trans-openmp.cc                   | 161 +++++
 gcc/fortran/trans.cc                          |   1 +
 gcc/fortran/types.def                         |   1 +
 gcc/gimple-low.cc                             |   1 +
 gcc/gimple-pretty-print.cc                    |  33 +
 gcc/gimple-walk.cc                            |   1 +
 gcc/gimple.cc                                 |  20 +
 gcc/gimple.def                                |   5 +
 gcc/gimple.h                                  |  33 +-
 gcc/gimplify.cc                               | 417 +++++++++++-
 gcc/gimplify.h                                |   2 +
 gcc/omp-builtins.def                          |   6 +
 gcc/omp-expand.cc                             |  18 +
 gcc/omp-general.cc                            |  16 +-
 gcc/omp-low.cc                                |  35 +
 gcc/omp-selectors.h                           |   3 +
 .../c-c++-common/gomp/adjust-args-1.c         |  30 +
 .../c-c++-common/gomp/adjust-args-2.c         |  31 +
 .../c-c++-common/gomp/declare-variant-2.c     |   4 +-
 gcc/testsuite/c-c++-common/gomp/dispatch-1.c  |  65 ++
 gcc/testsuite/c-c++-common/gomp/dispatch-2.c  |  28 +
 gcc/testsuite/c-c++-common/gomp/dispatch-3.c  |  15 +
 gcc/testsuite/c-c++-common/gomp/dispatch-4.c  |  18 +
 gcc/testsuite/c-c++-common/gomp/dispatch-5.c  |  26 +
 gcc/testsuite/c-c++-common/gomp/dispatch-6.c  |  19 +
 gcc/testsuite/c-c++-common/gomp/dispatch-7.c  |  28 +
 gcc/testsuite/g++.dg/gomp/adjust-args-1.C     |  39 ++
 gcc/testsuite/g++.dg/gomp/adjust-args-2.C     |  51 ++
 gcc/testsuite/g++.dg/gomp/dispatch-1.C        |  53 ++
 gcc/testsuite/g++.dg/gomp/dispatch-2.C        |  62 ++
 gcc/testsuite/gcc.dg/gomp/adjust-args-1.c     |  32 +
 gcc/testsuite/gcc.dg/gomp/dispatch-1.c        |  53 ++
 .../gfortran.dg/gomp/adjust-args-1.f90        |  54 ++
 .../gfortran.dg/gomp/adjust-args-2.f90        |  18 +
 .../gfortran.dg/gomp/adjust-args-3.f90        |  26 +
 .../gfortran.dg/gomp/adjust-args-4.f90        |  58 ++
 .../gfortran.dg/gomp/adjust-args-5.f90        |  58 ++
 .../gfortran.dg/gomp/declare-variant-2.f90    |   6 +-
 gcc/testsuite/gfortran.dg/gomp/dispatch-1.f90 |  77 +++
 gcc/testsuite/gfortran.dg/gomp/dispatch-2.f90 |  75 +++
 gcc/testsuite/gfortran.dg/gomp/dispatch-3.f90 |  39 ++
 gcc/testsuite/gfortran.dg/gomp/dispatch-4.f90 |  19 +
 gcc/testsuite/gfortran.dg/gomp/dispatch-5.f90 |  24 +
 gcc/testsuite/gfortran.dg/gomp/dispatch-6.f90 |  38 ++
 gcc/testsuite/gfortran.dg/gomp/dispatch-7.f90 |  27 +
 gcc/testsuite/gfortran.dg/gomp/dispatch-8.f90 |  39 ++
 gcc/tree-core.h                               |   7 +
 gcc/tree-inline.cc                            |   7 +
 gcc/tree-pretty-print.cc                      |  21 +
 gcc/tree.cc                                   |   4 +
 gcc/tree.def                                  |   5 +
 gcc/tree.h                                    |   7 +
 libgomp/libgomp.texi                          |   4 +-
 libgomp/testsuite/libgomp.c/dispatch-1.c      |  76 +++
 74 files changed, 3294 insertions(+), 135 deletions(-)
 create mode 100644 gcc/testsuite/c-c++-common/gomp/adjust-args-1.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/adjust-args-2.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/dispatch-1.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/dispatch-2.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/dispatch-3.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/dispatch-4.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/dispatch-5.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/dispatch-6.c
 create mode 100644 gcc/testsuite/c-c++-common/gomp/dispatch-7.c
 create mode 100644 gcc/testsuite/g++.dg/gomp/adjust-args-1.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/adjust-args-2.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/dispatch-1.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/dispatch-2.C
 create mode 100644 gcc/testsuite/gcc.dg/gomp/adjust-args-1.c
 create mode 100644 gcc/testsuite/gcc.dg/gomp/dispatch-1.c
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/adjust-args-1.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/adjust-args-2.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/adjust-args-3.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/adjust-args-4.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/adjust-args-5.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-1.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-2.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-3.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-4.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-5.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-6.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-7.f90
 create mode 100644 gcc/testsuite/gfortran.dg/gomp/dispatch-8.f90
 create mode 100644 libgomp/testsuite/libgomp.c/dispatch-1.c

-- 
2.45.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-05-31 10:07 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-27 11:54 [PATCH 0/7] OpenMP: dispatch + adjust_args support Paul-Antoine Arras
2024-05-27 11:54 ` [PATCH 1/7] OpenMP: dispatch + adjust_args tree data structures and front-end interfaces Paul-Antoine Arras
2024-05-27 11:54 ` [PATCH 2/7] OpenMP: middle-end support for dispatch + adjust_args Paul-Antoine Arras
2024-05-27 11:54 ` [PATCH 3/7] OpenMP: C front-end " Paul-Antoine Arras
2024-05-27 11:54 ` [PATCH 4/7] OpenMP: C++ " Paul-Antoine Arras
2024-05-27 11:54 ` [PATCH 5/7] OpenMP: common C/C++ testcases " Paul-Antoine Arras
2024-05-27 11:54 ` [PATCH 6/7] OpenMP: Fortran front-end support " Paul-Antoine Arras
2024-05-28  7:14   ` Tobias Burnus
2024-05-31 10:07     ` Paul-Antoine Arras
2024-05-27 11:54 ` [PATCH 7/7] OpenMP: update documentation for dispatch and adjust_args Paul-Antoine Arras

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).