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;

Reply via email to