diff options
author | Tobias Burnus <tburnus@baylibre.com> | 2024-02-21 11:31:43 +0100 |
---|---|---|
committer | Tobias Burnus <tburnus@baylibre.com> | 2024-02-21 11:31:43 +0100 |
commit | 703d14132e202ed2ab787cfdb37a726fa654455a (patch) | |
tree | d8712b058290abc7159b03969aa28bcf82090585 | |
parent | 51c0ff6f503323908d3326050274fc57899300bd (diff) | |
download | gcc-703d14132e202ed2ab787cfdb37a726fa654455a.zip gcc-703d14132e202ed2ab787cfdb37a726fa654455a.tar.gz gcc-703d14132e202ed2ab787cfdb37a726fa654455a.tar.bz2 |
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.
-rw-r--r-- | gcc/config/nvptx/gen-omp-device-properties.sh | 2 | ||||
-rw-r--r-- | gcc/config/nvptx/nvptx.cc | 3 | ||||
-rw-r--r-- | 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 95c754a..3666f97 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 9363d3e..2a8f713 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 f57190f..0aea737 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 |