From 703d14132e202ed2ab787cfdb37a726fa654455a Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Wed, 21 Feb 2024 11:31:43 +0100 Subject: [PATCH] OpenMP/nvptx: support 'arch(nvptx64)' as context selector The main 'arch' context selector for nvptx is, well, 'nvptx'; however, as 'nvptx64' is used as by LLVM, it makes sense to support it as well. Note that LLVM has: "The triple architecture can be one of ``nvptx`` (32-bit PTX) or ``nvptx64`` (64-bit PTX)." GCC effectively only supports the 64bit variant (at least for offloading). Thus, GCC's 'nvptx' is not quite the same as LLVM's. The device-compiler part (nvptx_omp_device_kind_arch_isa) uses TARGET_ABI64 such that nvptx64 is only defined with -m64. gcc/ChangeLog: * config/nvptx/gen-omp-device-properties.sh: Add 'nvptx64' to arch. * config/nvptx/nvptx.cc (nvptx_omp_device_kind_arch_isa): Likewise. libgomp/ChangeLog: * libgomp.texi (OpenMP Context Selectors): Add 'nvptx64' as additional 'arch' value for nvptx. --- gcc/config/nvptx/gen-omp-device-properties.sh | 2 +- gcc/config/nvptx/nvptx.cc | 3 ++- libgomp/libgomp.texi | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc/config/nvptx/gen-omp-device-properties.sh b/gcc/config/nvptx/gen-omp-device-properties.sh index 95c754a164f..3666f9746d1 100644 --- a/gcc/config/nvptx/gen-omp-device-properties.sh +++ b/gcc/config/nvptx/gen-omp-device-properties.sh @@ -23,7 +23,7 @@ nvptx_sm_def="$1/nvptx-sm.def" sms=$(grep ^NVPTX_SM $nvptx_sm_def | sed 's/.*(//;s/,.*//') echo kind: gpu -echo arch: nvptx +echo arch: nvptx nvptx64 isa="" for sm in $sms; do diff --git a/gcc/config/nvptx/nvptx.cc b/gcc/config/nvptx/nvptx.cc index 9363d3ecc6a..2a8f713c680 100644 --- a/gcc/config/nvptx/nvptx.cc +++ b/gcc/config/nvptx/nvptx.cc @@ -6403,7 +6403,8 @@ nvptx_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait, case omp_device_kind: return strcmp (name, "gpu") == 0; case omp_device_arch: - return strcmp (name, "nvptx") == 0; + return (strcmp (name, "nvptx") == 0 + || (TARGET_ABI64 && strcmp (name, "nvptx64") == 0)); case omp_device_isa: #define NVPTX_SM(XX, SEP) \ { \ diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index f57190f203c..0aea737350a 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -6098,7 +6098,7 @@ on more architectures, GCC currently does not match any @code{arch} or @item @code{amdgcn}, @code{gcn} @tab See @code{-march=} in ``AMD GCN Options''@footnote{Additionally, @code{gfx803} is supported as an alias for @code{fiji}.} -@item @code{nvptx} +@item @code{nvptx}, @code{nvptx64} @tab See @code{-march=} in ``Nvidia PTX Options'' @end multitable