@@ -49,5 +49,14 @@ nvptx_cpu_cpp_builtins (void)
#include "nvptx-sm.def"
#undef NVPTX_SM
cpp_define (parse_in, ptx_sm);
+
+ {
+ unsigned major
+ = ptx_version_to_number ((ptx_version)ptx_version_option, true);
+ unsigned minor
+ = ptx_version_to_number ((ptx_version)ptx_version_option, false);
+ cpp_define_formatted (parse_in, "__PTX_ISA_VERSION_MAJOR__=%u", major);
+ cpp_define_formatted (parse_in, "__PTX_ISA_VERSION_MINOR__=%u", minor);
+ }
}
@@ -44,6 +44,7 @@ extern void nvptx_cpu_cpp_builtins (void);
extern void nvptx_register_pragmas (void);
extern unsigned int nvptx_data_alignment (const_tree, unsigned int);
extern void nvptx_asm_output_def_from_decls (FILE *, tree, tree);
+extern unsigned int ptx_version_to_number (enum ptx_version, bool);
#ifdef RTX_CODE
extern void nvptx_expand_oacc_fork (unsigned);
@@ -272,6 +272,28 @@ ptx_version_to_string (enum ptx_version v)
}
}
+unsigned int
+ptx_version_to_number (enum ptx_version v, bool major_p)
+{
+ switch (v)
+ {
+ case PTX_VERSION_3_0:
+ return major_p ? 3 : 0;
+ case PTX_VERSION_3_1:
+ return major_p ? 3 : 1;
+ case PTX_VERSION_4_2:
+ return major_p ? 4 : 2;
+ case PTX_VERSION_6_0:
+ return major_p ? 6 : 0;
+ case PTX_VERSION_6_3:
+ return major_p ? 6 : 3;
+ case PTX_VERSION_7_0:
+ return major_p ? 7 : 0;
+ default:
+ gcc_unreachable ();
+ }
+}
+
static const char *
sm_version_to_string (enum ptx_isa sm)
{
new file mode 100644
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-march=sm_30 -mptx=3.1" } */
+
+#if __PTX_ISA_VERSION_MAJOR__ != 3
+#error wrong value for __PTX_ISA_VERSION_MAJOR__
+#endif
+
+#if __PTX_ISA_VERSION_MINOR__ != 1
+#error wrong value for __PTX_ISA_VERSION_MINOR__
+#endif
new file mode 100644
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-march=sm_30 -mptx=6.0" } */
+
+#if __PTX_ISA_VERSION_MAJOR__ != 6
+#error wrong value for __PTX_ISA_VERSION_MAJOR__
+#endif
+
+#if __PTX_ISA_VERSION_MINOR__ != 0
+#error wrong value for __PTX_ISA_VERSION_MINOR__
+#endif
new file mode 100644
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-march=sm_30 -mptx=6.3" } */
+
+#if __PTX_ISA_VERSION_MAJOR__ != 6
+#error wrong value for __PTX_ISA_VERSION_MAJOR__
+#endif
+
+#if __PTX_ISA_VERSION_MINOR__ != 3
+#error wrong value for __PTX_ISA_VERSION_MINOR__
+#endif
new file mode 100644
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-march=sm_30 -mptx=7.0" } */
+
+#if __PTX_ISA_VERSION_MAJOR__ != 7
+#error wrong value for __PTX_ISA_VERSION_MAJOR__
+#endif
+
+#if __PTX_ISA_VERSION_MINOR__ != 0
+#error wrong value for __PTX_ISA_VERSION_MINOR__
+#endif