aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@baylibre.com>2024-11-10 17:34:08 +0100
committerThomas Schwinge <tschwinge@baylibre.com>2024-12-06 12:26:45 +0100
commit18d80e5ecfa610a8a8f4b8e6381b695595c78192 (patch)
tree146a207e4c71141fc691348afa95cda4380d3365 /gcc
parent1af83aa09979e5f2ca36f844d56ccd629268057d (diff)
downloadgcc-18d80e5ecfa610a8a8f4b8e6381b695595c78192.zip
gcc-18d80e5ecfa610a8a8f4b8e6381b695595c78192.tar.gz
gcc-18d80e5ecfa610a8a8f4b8e6381b695595c78192.tar.bz2
nvptx: Support '-mptx=4.1'
gcc/ * config/nvptx/nvptx-opts.h (enum ptx_version): Add 'PTX_VERSION_4_1'. * config/nvptx/nvptx.cc (ptx_version_to_string) (ptx_version_to_number): Adjust. * config/nvptx/nvptx.h (TARGET_PTX_4_1): New. * config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue' '4.1' for 'PTX_VERSION_4_1'. * doc/invoke.texi (Nvidia PTX Options): Document '-mptx=4.1'. gcc/testsuite/ * gcc.target/nvptx/mptx=4.1.c: New.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/nvptx/nvptx-opts.h1
-rw-r--r--gcc/config/nvptx/nvptx.cc4
-rw-r--r--gcc/config/nvptx/nvptx.h1
-rw-r--r--gcc/config/nvptx/nvptx.opt3
-rw-r--r--gcc/doc/invoke.texi2
-rw-r--r--gcc/testsuite/gcc.target/nvptx/mptx=4.1.c19
6 files changed, 29 insertions, 1 deletions
diff --git a/gcc/config/nvptx/nvptx-opts.h b/gcc/config/nvptx/nvptx-opts.h
index d0b47f0..1277f21 100644
--- a/gcc/config/nvptx/nvptx-opts.h
+++ b/gcc/config/nvptx/nvptx-opts.h
@@ -38,6 +38,7 @@ enum ptx_version
PTX_VERSION_unset,
PTX_VERSION_default = PTX_VERSION_unset,
PTX_VERSION_3_1,
+ PTX_VERSION_4_1,
PTX_VERSION_4_2,
PTX_VERSION_6_0,
PTX_VERSION_6_3,
diff --git a/gcc/config/nvptx/nvptx.cc b/gcc/config/nvptx/nvptx.cc
index fb5a45a..85c6f5d 100644
--- a/gcc/config/nvptx/nvptx.cc
+++ b/gcc/config/nvptx/nvptx.cc
@@ -252,6 +252,8 @@ ptx_version_to_string (enum ptx_version v)
{
case PTX_VERSION_3_1:
return "3.1";
+ case PTX_VERSION_4_1:
+ return "4.1";
case PTX_VERSION_4_2:
return "4.2";
case PTX_VERSION_6_0:
@@ -272,6 +274,8 @@ ptx_version_to_number (enum ptx_version v, bool major_p)
{
case PTX_VERSION_3_1:
return major_p ? 3 : 1;
+ case PTX_VERSION_4_1:
+ return major_p ? 4 : 1;
case PTX_VERSION_4_2:
return major_p ? 4 : 2;
case PTX_VERSION_6_0:
diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h
index d9a5e54..7b7e172 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_1 (ptx_version_option >= PTX_VERSION_4_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)
diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt
index 408c883..12f96d0 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.1) Value(PTX_VERSION_4_1)
+
+EnumValue
Enum(ptx_version) String(4.2) Value(PTX_VERSION_4_2)
EnumValue
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a223472..6ec6834 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -30073,7 +30073,7 @@ capable. For instance, for @option{-march-map=sm_50} select
Generate code for the specified PTX ISA version.
Valid version strings are
@samp{3.1},
-@samp{4.2},
+@samp{4.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
diff --git a/gcc/testsuite/gcc.target/nvptx/mptx=4.1.c b/gcc/testsuite/gcc.target/nvptx/mptx=4.1.c
new file mode 100644
index 0000000..57d050c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/nvptx/mptx=4.1.c
@@ -0,0 +1,19 @@
+/* { dg-do assemble } */
+/* { dg-options {-march=sm_30 -mptx=4.1} } */
+/* { dg-additional-options -save-temps } */
+/* { dg-final { scan-assembler-times {(?n)^ \.version 4\.1$} 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__ != 1
+#error wrong value for __PTX_ISA_VERSION_MINOR__
+#endif
+
+#if __PTX_SM__ != 300
+#error wrong value for __PTX_SM__
+#endif
+
+int dummy;