https://gcc.gnu.org/g:4539a38902a03b4e7b07b7703e48f55af78f75e4
commit 4539a38902a03b4e7b07b7703e48f55af78f75e4 Author: Thomas Schwinge <tschwi...@baylibre.com> Date: Tue Nov 12 17:37:44 2024 +0100 nvptx: Support '-mptx=7.8' gcc/ * config/nvptx/nvptx-opts.h (enum ptx_version): Add 'PTX_VERSION_7_8'. * config/nvptx/nvptx.cc (ptx_version_to_string) (ptx_version_to_number): Adjust. * config/nvptx/nvptx.h (TARGET_PTX_7_8): New. * config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue' '7.8' for 'PTX_VERSION_7_8'. * doc/invoke.texi (Nvidia PTX Options): Document '-mptx=7.8'. gcc/testsuite/ * gcc.target/nvptx/mptx=7.8.c: New. (cherry picked from commit 2fdc8cc97ee716b822dfed9e4bb287b7c3832543) Diff: --- gcc/ChangeLog.omp | 12 ++++++++++++ gcc/config/nvptx/nvptx-opts.h | 3 ++- gcc/config/nvptx/nvptx.cc | 4 ++++ gcc/config/nvptx/nvptx.h | 1 + gcc/config/nvptx/nvptx.opt | 3 +++ gcc/doc/invoke.texi | 2 +- gcc/testsuite/ChangeLog.omp | 5 +++++ gcc/testsuite/gcc.target/nvptx/mptx=7.8.c | 19 +++++++++++++++++++ 8 files changed, 47 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 618299f48cae..c0dcd307d853 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -3,6 +3,18 @@ Backported from trunk: 2024-12-06 Thomas Schwinge <tschwi...@baylibre.com> + * config/nvptx/nvptx-opts.h (enum ptx_version): Add + 'PTX_VERSION_7_8'. + * config/nvptx/nvptx.cc (ptx_version_to_string) + (ptx_version_to_number): Adjust. + * config/nvptx/nvptx.h (TARGET_PTX_7_8): New. + * config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue' + '7.8' for 'PTX_VERSION_7_8'. + * doc/invoke.texi (Nvidia PTX Options): Document '-mptx=7.8'. + + Backported from trunk: + 2024-12-06 Thomas Schwinge <tschwi...@baylibre.com> + * config/nvptx/nvptx-sm.def: Add '52'. * config/nvptx/nvptx-gen.h: Regenerate. * config/nvptx/nvptx-gen.opt: Likewise. diff --git a/gcc/config/nvptx/nvptx-opts.h b/gcc/config/nvptx/nvptx-opts.h index 1277f2130896..7b55086081ab 100644 --- a/gcc/config/nvptx/nvptx-opts.h +++ b/gcc/config/nvptx/nvptx-opts.h @@ -42,7 +42,8 @@ enum ptx_version PTX_VERSION_4_2, PTX_VERSION_6_0, PTX_VERSION_6_3, - PTX_VERSION_7_0 + PTX_VERSION_7_0, + PTX_VERSION_7_8 }; #endif diff --git a/gcc/config/nvptx/nvptx.cc b/gcc/config/nvptx/nvptx.cc index ff578bfa6efa..da3e771f12ca 100644 --- a/gcc/config/nvptx/nvptx.cc +++ b/gcc/config/nvptx/nvptx.cc @@ -271,6 +271,8 @@ ptx_version_to_string (enum ptx_version v) return "6.3"; case PTX_VERSION_7_0: return "7.0"; + case PTX_VERSION_7_8: + return "7.8"; default: gcc_unreachable (); } @@ -293,6 +295,8 @@ ptx_version_to_number (enum ptx_version v, bool major_p) return major_p ? 6 : 3; case PTX_VERSION_7_0: return major_p ? 7 : 0; + case PTX_VERSION_7_8: + return major_p ? 7 : 8; default: gcc_unreachable (); } diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h index d58c83ae8795..c8c402475a8e 100644 --- a/gcc/config/nvptx/nvptx.h +++ b/gcc/config/nvptx/nvptx.h @@ -98,6 +98,7 @@ #define TARGET_PTX_6_0 (ptx_version_option >= PTX_VERSION_6_0) #define TARGET_PTX_6_3 (ptx_version_option >= PTX_VERSION_6_3) #define TARGET_PTX_7_0 (ptx_version_option >= PTX_VERSION_7_0) +#define TARGET_PTX_7_8 (ptx_version_option >= PTX_VERSION_7_8) /* Registers. Since ptx is a virtual target, we just define a few hard registers for special purposes and leave pseudos unallocated. diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt index 4d14eda76991..842cbbbedeee 100644 --- a/gcc/config/nvptx/nvptx.opt +++ b/gcc/config/nvptx/nvptx.opt @@ -142,6 +142,9 @@ Enum(ptx_version) String(6.3) Value(PTX_VERSION_6_3) EnumValue Enum(ptx_version) String(7.0) Value(PTX_VERSION_7_0) +EnumValue +Enum(ptx_version) String(7.8) Value(PTX_VERSION_7_8) + EnumValue Enum(ptx_version) String(_) Value(PTX_VERSION_default) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index f5086bd46b3a..ffa4b6b1deb6 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -30055,7 +30055,7 @@ Valid version strings are @samp{3.1}, @samp{4.1}, @samp{4.2}, @samp{6.0}, @samp{6.3}, -and @samp{7.0}. +@samp{7.0}, and @samp{7.8}. The default PTX ISA version is 6.0, unless a higher version is required for specified PTX ISA target architecture via option @option{-march=}. diff --git a/gcc/testsuite/ChangeLog.omp b/gcc/testsuite/ChangeLog.omp index 7204615c0888..af098a074a36 100644 --- a/gcc/testsuite/ChangeLog.omp +++ b/gcc/testsuite/ChangeLog.omp @@ -3,6 +3,11 @@ Backported from trunk: 2024-12-06 Thomas Schwinge <tschwi...@baylibre.com> + * gcc.target/nvptx/mptx=7.8.c: New. + + Backported from trunk: + 2024-12-06 Thomas Schwinge <tschwi...@baylibre.com> + * gcc.target/nvptx/march-map=sm_52.c: Adjust. * gcc.target/nvptx/march=sm_52.c: New. diff --git a/gcc/testsuite/gcc.target/nvptx/mptx=7.8.c b/gcc/testsuite/gcc.target/nvptx/mptx=7.8.c new file mode 100644 index 000000000000..d80bdbaa83a8 --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/mptx=7.8.c @@ -0,0 +1,19 @@ +/* { dg-do assemble } */ +/* { dg-options {-march=sm_30 -mptx=7.8} } */ +/* { dg-additional-options -save-temps } */ +/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.8$} 1 } } */ +/* { dg-final { scan-assembler-times {(?n)^ \.target sm_30$} 1 } } */ + +#if __PTX_ISA_VERSION_MAJOR__ != 7 +#error wrong value for __PTX_ISA_VERSION_MAJOR__ +#endif + +#if __PTX_ISA_VERSION_MINOR__ != 8 +#error wrong value for __PTX_ISA_VERSION_MINOR__ +#endif + +#if __PTX_SM__ != 300 +#error wrong value for __PTX_SM__ +#endif + +int dummy;