| Message ID | cover.1693991758.git.julian@codesourcery.com |
|---|---|
| Headers |
Return-Path: <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2F9A6383139E for <patchwork@sourceware.org>; Wed, 6 Sep 2023 09:35:22 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 5DB453858D35; Wed, 6 Sep 2023 09:35:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5DB453858D35 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="6.02,231,1688457600"; d="scan'208";a="16228960" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 06 Sep 2023 01:34:59 -0800 IronPort-SDR: XaYIcrVyWvEOs9OlkvMTdz34yfnDLpari78SIEsV0krx9pVFKbMGqnQhqMi78sJb07PVoe+ufT SbFT163WOwG2wYfMKLtwftfkSxhFGzR19g3seGtYnr17gkooMntrxhnonAF03oQXrGbr61w9Z1 WyoomRrcwaksjSANpl2uWrgD8IYWmSSdNLkVeEPhKhYmMyoQY3l5HoIT1Lbgzq7daVDdslpG1x mUBUZBCGCAbB+bcELVZuAwpWBCXkfgicZ61vNwewMozd7g8rhuybChbtkFqKsCFsqrgB+E8lT4 Tg0= From: Julian Brown <julian@codesourcery.com> To: <gcc-patches@gcc.gnu.org> CC: <fortran@gcc.gnu.org>, <tobias@codesourcery.com>, <jakub@redhat.com> Subject: [PATCH 0/5] OpenMP: Array-shaping operator and strided/rectangular 'target update' support Date: Wed, 6 Sep 2023 02:34:29 -0700 Message-ID: <cover.1693991758.git.julian@codesourcery.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-15.mgc.mentorg.com (139.181.222.15) To svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) X-Spam-Status: No, score=-5.8 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> |
| Series |
OpenMP: Array-shaping operator and strided/rectangular 'target update' support
|
|
Message
Julian Brown
Sept. 6, 2023, 9:34 a.m. UTC
This patch series provides support for the OpenMP 5.0+ array-shaping
operator and for strided/rectangular updates for 'target update'
directives. Each of C, C++ and Fortran is supported (using existing
base language syntax for the last).
This series applies on top of the "infrastructure" support series:
https://gcc.gnu.org/pipermail/gcc-patches/2023-August/627895.html
and the lvalue parsing/declare mapper series:
https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629363.html
The og13 version of this series was posted here:
https://gcc.gnu.org/pipermail/gcc-patches/2023-July/623502.html
This version of the series contains several follow-up fixes relative
to the og13 version, and omits some parts that are only present on the
branch for now. Further comments on individual patches.
Tested with offloading to NVPTX and bootstrapped. OK?
Julian Brown (5):
OpenMP, NVPTX: memcpy[23]D bias correction
OpenMP: Allow complete replacement of clause during map/to/from
expansion
OpenMP: Support strided and shaped-array updates for C++
OpenMP: Array shaping operator and strided "target update" for C
OpenMP: Noncontiguous "target update" for Fortran
gcc/c-family/c-common.h | 12 +-
gcc/c-family/c-omp.cc | 277 ++++++++--
gcc/c-family/c-pretty-print.cc | 5 +
gcc/c/c-parser.cc | 330 +++++++++++-
gcc/c/c-tree.h | 6 +-
gcc/c/c-typeck.cc | 281 ++++++++--
gcc/cp/cp-objcp-common.cc | 1 +
gcc/cp/cp-tree.def | 1 +
gcc/cp/cp-tree.h | 13 +-
gcc/cp/decl.cc | 75 +++
gcc/cp/decl2.cc | 19 +-
gcc/cp/error.cc | 5 +
gcc/cp/mangle.cc | 1 +
gcc/cp/operators.def | 1 +
gcc/cp/parser.cc | 303 ++++++++++-
gcc/cp/parser.h | 7 +
gcc/cp/pt.cc | 39 +-
gcc/cp/semantics.cc | 289 ++++++++--
gcc/cp/typeck.cc | 12 +-
gcc/fortran/openmp.cc | 5 +-
gcc/fortran/trans-openmp.cc | 499 ++++++++++++++++++
gcc/gimplify.cc | 54 +-
gcc/omp-general.cc | 47 ++
gcc/omp-general.h | 4 +-
gcc/omp-low.cc | 476 ++++++++++++++++-
gcc/testsuite/g++.dg/gomp/array-shaping-1.C | 22 +
gcc/testsuite/g++.dg/gomp/array-shaping-2.C | 134 +++++
.../g++.dg/gomp/bad-array-shaping-1.C | 47 ++
.../g++.dg/gomp/bad-array-shaping-2.C | 52 ++
.../g++.dg/gomp/bad-array-shaping-3.C | 53 ++
.../g++.dg/gomp/bad-array-shaping-4.C | 60 +++
.../g++.dg/gomp/bad-array-shaping-5.C | 55 ++
.../g++.dg/gomp/bad-array-shaping-6.C | 59 +++
.../g++.dg/gomp/bad-array-shaping-7.C | 48 ++
.../g++.dg/gomp/bad-array-shaping-8.C | 50 ++
.../gcc.dg/gomp/bad-array-shaping-c-1.c | 26 +
.../gcc.dg/gomp/bad-array-shaping-c-2.c | 24 +
.../gcc.dg/gomp/bad-array-shaping-c-3.c | 30 ++
.../gcc.dg/gomp/bad-array-shaping-c-4.c | 27 +
.../gcc.dg/gomp/bad-array-shaping-c-5.c | 17 +
.../gcc.dg/gomp/bad-array-shaping-c-6.c | 26 +
.../gcc.dg/gomp/bad-array-shaping-c-7.c | 15 +
.../gfortran.dg/gomp/noncontig-updates-1.f90 | 19 +
.../gfortran.dg/gomp/noncontig-updates-2.f90 | 16 +
.../gfortran.dg/gomp/noncontig-updates-3.f90 | 16 +
.../gfortran.dg/gomp/noncontig-updates-4.f90 | 15 +
gcc/tree-pretty-print.cc | 17 +
gcc/tree.def | 2 +-
include/gomp-constants.h | 7 +-
libgomp/libgomp.h | 15 +
libgomp/plugin/plugin-nvptx.c | 67 +++
libgomp/target.c | 271 +++++++---
.../testsuite/libgomp.c++/array-shaping-1.C | 469 ++++++++++++++++
.../testsuite/libgomp.c++/array-shaping-10.C | 61 +++
.../testsuite/libgomp.c++/array-shaping-11.C | 63 +++
.../testsuite/libgomp.c++/array-shaping-12.C | 65 +++
.../testsuite/libgomp.c++/array-shaping-13.C | 89 ++++
.../testsuite/libgomp.c++/array-shaping-2.C | 38 ++
.../testsuite/libgomp.c++/array-shaping-3.C | 38 ++
.../testsuite/libgomp.c++/array-shaping-4.C | 38 ++
.../testsuite/libgomp.c++/array-shaping-5.C | 38 ++
.../testsuite/libgomp.c++/array-shaping-6.C | 54 ++
.../testsuite/libgomp.c++/array-shaping-7.C | 54 ++
.../testsuite/libgomp.c++/array-shaping-8.C | 65 +++
.../testsuite/libgomp.c++/array-shaping-9.C | 95 ++++
.../libgomp.c-c++-common/array-shaping-14.c | 34 ++
libgomp/testsuite/libgomp.c/array-shaping-1.c | 236 +++++++++
libgomp/testsuite/libgomp.c/array-shaping-2.c | 39 ++
libgomp/testsuite/libgomp.c/array-shaping-3.c | 42 ++
libgomp/testsuite/libgomp.c/array-shaping-4.c | 36 ++
libgomp/testsuite/libgomp.c/array-shaping-5.c | 38 ++
libgomp/testsuite/libgomp.c/array-shaping-6.c | 45 ++
.../libgomp.fortran/noncontig-updates-1.f90 | 54 ++
.../libgomp.fortran/noncontig-updates-10.f90 | 29 +
.../libgomp.fortran/noncontig-updates-11.f90 | 51 ++
.../libgomp.fortran/noncontig-updates-12.f90 | 59 +++
.../libgomp.fortran/noncontig-updates-13.f90 | 42 ++
.../libgomp.fortran/noncontig-updates-2.f90 | 101 ++++
.../libgomp.fortran/noncontig-updates-3.f90 | 47 ++
.../libgomp.fortran/noncontig-updates-4.f90 | 78 +++
.../libgomp.fortran/noncontig-updates-5.f90 | 55 ++
.../libgomp.fortran/noncontig-updates-6.f90 | 34 ++
.../libgomp.fortran/noncontig-updates-7.f90 | 36 ++
.../libgomp.fortran/noncontig-updates-8.f90 | 39 ++
.../libgomp.fortran/noncontig-updates-9.f90 | 34 ++
85 files changed, 5933 insertions(+), 315 deletions(-)
create mode 100644 gcc/testsuite/g++.dg/gomp/array-shaping-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/array-shaping-2.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-1.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-2.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-3.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-4.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-5.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-6.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-7.C
create mode 100644 gcc/testsuite/g++.dg/gomp/bad-array-shaping-8.C
create mode 100644 gcc/testsuite/gcc.dg/gomp/bad-array-shaping-c-1.c
create mode 100644 gcc/testsuite/gcc.dg/gomp/bad-array-shaping-c-2.c
create mode 100644 gcc/testsuite/gcc.dg/gomp/bad-array-shaping-c-3.c
create mode 100644 gcc/testsuite/gcc.dg/gomp/bad-array-shaping-c-4.c
create mode 100644 gcc/testsuite/gcc.dg/gomp/bad-array-shaping-c-5.c
create mode 100644 gcc/testsuite/gcc.dg/gomp/bad-array-shaping-c-6.c
create mode 100644 gcc/testsuite/gcc.dg/gomp/bad-array-shaping-c-7.c
create mode 100644 gcc/testsuite/gfortran.dg/gomp/noncontig-updates-1.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/noncontig-updates-2.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/noncontig-updates-3.f90
create mode 100644 gcc/testsuite/gfortran.dg/gomp/noncontig-updates-4.f90
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-1.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-10.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-11.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-12.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-13.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-2.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-3.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-4.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-5.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-6.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-7.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-8.C
create mode 100644 libgomp/testsuite/libgomp.c++/array-shaping-9.C
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/array-shaping-14.c
create mode 100644 libgomp/testsuite/libgomp.c/array-shaping-1.c
create mode 100644 libgomp/testsuite/libgomp.c/array-shaping-2.c
create mode 100644 libgomp/testsuite/libgomp.c/array-shaping-3.c
create mode 100644 libgomp/testsuite/libgomp.c/array-shaping-4.c
create mode 100644 libgomp/testsuite/libgomp.c/array-shaping-5.c
create mode 100644 libgomp/testsuite/libgomp.c/array-shaping-6.c
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-1.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-10.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-11.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-12.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-13.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-2.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-3.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-4.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-5.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-6.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-7.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-8.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/noncontig-updates-9.f90