aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@baylibre.com>2024-11-10 17:35:07 +0100
committerThomas Schwinge <tschwinge@baylibre.com>2024-12-06 12:11:44 +0100
commit1af83aa09979e5f2ca36f844d56ccd629268057d (patch)
treef30dd3bc8726b06b2795014dc257c39aa68391b6 /gcc
parent380ceb23b130a2b9ec541607a3eb1ffd0387c576 (diff)
downloadgcc-1af83aa09979e5f2ca36f844d56ccd629268057d.zip
gcc-1af83aa09979e5f2ca36f844d56ccd629268057d.tar.gz
gcc-1af83aa09979e5f2ca36f844d56ccd629268057d.tar.bz2
nvptx: Expose '-mptx=4.2'
'PTX_VERSION_4_2' was added in commit decde11183bdccc46587d6614b75f3d56a2f2e4a "[nvptx] Choose -mptx default based on -misa" for use for '-march=sm_52' ('first_ptx_version_supporting_sm', 'PTX_ISA_SM53'), as documented by Nvidia. However, '-mptx=4.2' wasn't exposed to the user, but there's no reason not to. gcc/ * config/nvptx/nvptx.h (TARGET_PTX_4_2): New. * config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue' '4.2' for 'PTX_VERSION_4_2'. * doc/invoke.texi (Nvidia PTX Options): Document '-mptx=4.2'. gcc/testsuite/ * gcc.target/nvptx/mptx=4.2.c: New.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/nvptx/nvptx.h1
-rw-r--r--gcc/config/nvptx/nvptx.opt3
-rw-r--r--gcc/doc/invoke.texi10
-rw-r--r--gcc/testsuite/gcc.target/nvptx/mptx=4.2.c19
4 files changed, 30 insertions, 3 deletions
diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h
index 792da49..d9a5e54 100644
--- a/gcc/config/nvptx/nvptx.h
+++ b/gcc/config/nvptx/nvptx.h
@@ -90,6 +90,7 @@
/* There are no 'TARGET_PTX_3_1' and smaller conditionals: our baseline is
PTX ISA Version 3.1. */
+#define TARGET_PTX_4_2 (ptx_version_option >= PTX_VERSION_4_2)
#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)
diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt
index 53ddf45..408c883 100644
--- a/gcc/config/nvptx/nvptx.opt
+++ b/gcc/config/nvptx/nvptx.opt
@@ -128,6 +128,9 @@ EnumValue
Enum(ptx_version) String(3.1) Value(PTX_VERSION_3_1)
EnumValue
+Enum(ptx_version) String(4.2) Value(PTX_VERSION_4_2)
+
+EnumValue
Enum(ptx_version) String(6.0) Value(PTX_VERSION_6_0)
EnumValue
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 33a1b6b..a223472 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -30070,9 +30070,13 @@ capable. For instance, for @option{-march-map=sm_50} select
@opindex mptx
@item -mptx=@var{version-string}
-Generate code for the specified PTX ISA version (e.g.@: @samp{7.0}).
-Valid version strings include @samp{3.1}, @samp{6.0}, @samp{6.3}, and
-@samp{7.0}. The default PTX ISA version is 6.0, unless a higher
+Generate code for the specified PTX ISA version.
+Valid version strings are
+@samp{3.1},
+@samp{4.2},
+@samp{6.0}, @samp{6.3},
+and @samp{7.0}.
+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/gcc.target/nvptx/mptx=4.2.c b/gcc/testsuite/gcc.target/nvptx/mptx=4.2.c
new file mode 100644
index 0000000..e17ee1b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/nvptx/mptx=4.2.c
@@ -0,0 +1,19 @@
+/* { dg-do assemble } */
+/* { dg-options {-march=sm_30 -mptx=4.2} } */
+/* { dg-additional-options -save-temps } */
+/* { dg-final { scan-assembler-times {(?n)^ \.version 4\.2$} 1 } } */
+/* { dg-final { scan-assembler-times {(?n)^ \.target sm_30$} 1 } } */
+
+#if __PTX_ISA_VERSION_MAJOR__ != 4
+#error wrong value for __PTX_ISA_VERSION_MAJOR__
+#endif
+
+#if __PTX_ISA_VERSION_MINOR__ != 2
+#error wrong value for __PTX_ISA_VERSION_MINOR__
+#endif
+
+#if __PTX_SM__ != 300
+#error wrong value for __PTX_SM__
+#endif
+
+int dummy;