public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/omp/gcc-11] [nvptx] Add -mptx=3.1/6.3
@ 2021-05-14 8:51 Tobias Burnus
0 siblings, 0 replies; only message in thread
From: Tobias Burnus @ 2021-05-14 8:51 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:5f654d3d12446c50cd6db54b75ea8966b57651bf
commit 5f654d3d12446c50cd6db54b75ea8966b57651bf
Author: Tom de Vries <tdevries@suse.de>
Date: Fri May 14 10:11:50 2021 +0200
[nvptx] Add -mptx=3.1/6.3
Add nvptx option -mptx that sets the ptx ISA version. This is currently
hardcoded to 3.1.
Tested libgomp on x86_64-linux with nvptx accelerator, both with default set to
3.1 and 6.3.
gcc/ChangeLog:
2021-05-12 Tom de Vries <tdevries@suse.de>
PR target/96005
* config/nvptx/nvptx-opts.h (enum ptx_version): New enum.
* config/nvptx/nvptx.c (nvptx_file_start): Print .version according
to ptx_version_option.
* config/nvptx/nvptx.h (TARGET_PTX_6_3): Define.
* config/nvptx/nvptx.md (define_insn "nvptx_shuffle<mode>")
(define_insn "nvptx_vote_ballot"): Use sync variant for
TARGET_PTX_6_3.
* config/nvptx/nvptx.opt (ptx_version): Add enum.
(mptx): Add option.
* doc/invoke.texi (Nvidia PTX Options): Add mptx item.
(cherry picked from commit 2a1586401a21dcd43e0f904bb6eec26c8b2f366b)
Diff:
---
gcc/config/nvptx/nvptx-opts.h | 6 ++++++
gcc/config/nvptx/nvptx.c | 5 ++++-
gcc/config/nvptx/nvptx.h | 2 ++
gcc/config/nvptx/nvptx.md | 14 ++++++++++++--
gcc/config/nvptx/nvptx.opt | 14 ++++++++++++++
gcc/doc/invoke.texi | 6 ++++++
6 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/gcc/config/nvptx/nvptx-opts.h b/gcc/config/nvptx/nvptx-opts.h
index ce88245955b..bfa926ef0f7 100644
--- a/gcc/config/nvptx/nvptx-opts.h
+++ b/gcc/config/nvptx/nvptx-opts.h
@@ -26,5 +26,11 @@ enum ptx_isa
PTX_ISA_SM35
};
+enum ptx_version
+{
+ PTX_VERSION_3_1,
+ PTX_VERSION_6_3
+};
+
#endif
diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index 1bf37f2ed82..837e55503a0 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -4756,7 +4756,10 @@ static void
nvptx_file_start (void)
{
fputs ("// BEGIN PREAMBLE\n", asm_out_file);
- fputs ("\t.version\t3.1\n", asm_out_file);
+ if (TARGET_PTX_6_3)
+ fputs ("\t.version\t6.3\n", asm_out_file);
+ else
+ fputs ("\t.version\t3.1\n", asm_out_file);
if (TARGET_SM35)
fputs ("\t.target\tsm_35\n", asm_out_file);
else
diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h
index 2451703e77f..fdaacdd72d8 100644
--- a/gcc/config/nvptx/nvptx.h
+++ b/gcc/config/nvptx/nvptx.h
@@ -98,6 +98,8 @@
#define TARGET_SM35 (ptx_isa_option >= PTX_ISA_SM35)
+#define TARGET_PTX_6_3 (ptx_version_option >= PTX_VERSION_6_3)
+
/* Registers. Since ptx is a virtual target, we just define a few
hard registers for special purposes and leave pseudos unallocated.
We have to have some available hard registers, to keep gcc setup
diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md
index d63977efba3..bb203d8c80c 100644
--- a/gcc/config/nvptx/nvptx.md
+++ b/gcc/config/nvptx/nvptx.md
@@ -1459,14 +1459,24 @@
(match_operand:SI 3 "const_int_operand" "n")]
UNSPEC_SHUFFLE))]
""
- "%.\\tshfl%S3.b32\\t%0, %1, %2, 31;")
+ {
+ if (TARGET_PTX_6_3)
+ return "%.\\tshfl.sync%S3.b32\\t%0, %1, %2, 31, 0xffffffff;";
+ else
+ return "%.\\tshfl%S3.b32\\t%0, %1, %2, 31;";
+ })
(define_insn "nvptx_vote_ballot"
[(set (match_operand:SI 0 "nvptx_register_operand" "=R")
(unspec:SI [(match_operand:BI 1 "nvptx_register_operand" "R")]
UNSPEC_VOTE_BALLOT))]
""
- "%.\\tvote.ballot.b32\\t%0, %1;")
+ {
+ if (TARGET_PTX_6_3)
+ return "%.\\tvote.sync.ballot.b32\\t%0, %1, 0xffffffff;";
+ else
+ return "%.\\tvote.ballot.b32\\t%0, %1;";
+ })
;; Patterns for OpenMP SIMD-via-SIMT lowering
diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt
index 51363e4e276..468c6cafd57 100644
--- a/gcc/config/nvptx/nvptx.opt
+++ b/gcc/config/nvptx/nvptx.opt
@@ -65,3 +65,17 @@ Enum(ptx_isa) String(sm_35) Value(PTX_ISA_SM35)
misa=
Target RejectNegative ToLower Joined Enum(ptx_isa) Var(ptx_isa_option) Init(PTX_ISA_SM35)
Specify the version of the ptx ISA to use.
+
+Enum
+Name(ptx_version) Type(int)
+Known PTX versions (for use with the -mptx= option):
+
+EnumValue
+Enum(ptx_version) String(3.1) Value(PTX_VERSION_3_1)
+
+EnumValue
+Enum(ptx_version) String(6.3) Value(PTX_VERSION_6_3)
+
+mptx=
+Target RejectNegative ToLower Joined Enum(ptx_version) Var(ptx_version_option) Init(PTX_VERSION_3_1)
+Specify the version of the ptx version to use.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 0a1462bc4e0..982738855b8 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -26322,6 +26322,12 @@ Generate code for given the specified PTX ISA (e.g.@: @samp{sm_35}). ISA
strings must be lower-case. Valid ISA strings include @samp{sm_30} and
@samp{sm_35}. The default ISA is sm_35.
+@item -mptx=@var{version-string}
+@opindex mptx
+Generate code for given the specified PTX version (e.g.@: @samp{6.3}).
+Valid version strings include @samp{3.1} and @samp{6.3}. The default PTX
+version is 3.1.
+
@item -mmainkernel
@opindex mmainkernel
Link in code for a __main kernel. This is for stand-alone instead of
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-05-14 8:51 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-14 8:51 [gcc/devel/omp/gcc-11] [nvptx] Add -mptx=3.1/6.3 Tobias Burnus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).