From: Tom de Vries <tdevries@suse.de>
To: gcc-patches@gcc.gnu.org
Subject: [committed][nvptx] Add -mptx-comment
Date: Tue, 22 Feb 2022 14:53:39 +0100 [thread overview]
Message-ID: <20220222135337.GA1196@delia.home> (raw)
Hi,
Add functionality that indicates which insns are added by -minit-regs, such
that for instance we have for pr53465.s:
...
// #APP
// 9 "gcc/testsuite/gcc.c-torture/execute/pr53465.c" 1
// Start: Added by -minit-regs=3:
// #NO_APP
mov.u32 %r26, 0;
// #APP
// 9 "gcc/testsuite/gcc.c-torture/execute/pr53465.c" 1
// End: Added by -minit-regs=3:
// #NO_APP
...
Can be switched off using -mno-ptx-comment.
Tested on nvptx.
Committed to trunk.
Thanks,
- Tom
[nvptx] Add -mptx-comment
gcc/ChangeLog:
2022-02-21 Tom de Vries <tdevries@suse.de>
* config/nvptx/nvptx.cc (gen_comment): New function.
(workaround_uninit_method_1, workaround_uninit_method_2)
(workaround_uninit_method_3): : Use gen_comment.
* config/nvptx/nvptx.opt (mptx-comment): New option.
---
gcc/config/nvptx/nvptx.cc | 42 ++++++++++++++++++++++++++++++++++++++++++
gcc/config/nvptx/nvptx.opt | 3 +++
2 files changed, 45 insertions(+)
diff --git a/gcc/config/nvptx/nvptx.cc b/gcc/config/nvptx/nvptx.cc
index a37a6c78b41..981b91f7095 100644
--- a/gcc/config/nvptx/nvptx.cc
+++ b/gcc/config/nvptx/nvptx.cc
@@ -5372,6 +5372,17 @@ workaround_barsyncs (void)
}
#endif
+static rtx
+gen_comment (const char *s)
+{
+ const char *sep = " ";
+ size_t len = strlen (ASM_COMMENT_START) + strlen (sep) + strlen (s) + 1;
+ char *comment = (char *) alloca (len);
+ snprintf (comment, len, "%s%s%s", ASM_COMMENT_START, sep, s);
+ return gen_rtx_ASM_INPUT_loc (VOIDmode, ggc_strdup (comment),
+ cfun->function_start_locus);
+}
+
/* Initialize all declared regs at function entry.
Advantage : Fool-proof.
Disadvantage: Potentially creates a lot of long live ranges and adds a lot
@@ -5394,6 +5405,8 @@ workaround_uninit_method_1 (void)
gcc_assert (CONST0_RTX (GET_MODE (reg)));
start_sequence ();
+ if (nvptx_comment && first != NULL)
+ emit_insn (gen_comment ("Start: Added by -minit-regs=1"));
emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
rtx_insn *inits = get_insns ();
end_sequence ();
@@ -5411,6 +5424,9 @@ workaround_uninit_method_1 (void)
else
insert_here = emit_insn_after (inits, insert_here);
}
+
+ if (nvptx_comment && insert_here != NULL)
+ emit_insn_after (gen_comment ("End: Added by -minit-regs=1"), insert_here);
}
/* Find uses of regs that are not defined on all incoming paths, and insert a
@@ -5446,6 +5462,8 @@ workaround_uninit_method_2 (void)
gcc_assert (CONST0_RTX (GET_MODE (reg)));
start_sequence ();
+ if (nvptx_comment && first != NULL)
+ emit_insn (gen_comment ("Start: Added by -minit-regs=2:"));
emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
rtx_insn *inits = get_insns ();
end_sequence ();
@@ -5463,6 +5481,9 @@ workaround_uninit_method_2 (void)
else
insert_here = emit_insn_after (inits, insert_here);
}
+
+ if (nvptx_comment && insert_here != NULL)
+ emit_insn_after (gen_comment ("End: Added by -minit-regs=2"), insert_here);
}
/* Find uses of regs that are not defined on all incoming paths, and insert a
@@ -5531,6 +5552,27 @@ workaround_uninit_method_3 (void)
}
}
+ if (nvptx_comment)
+ FOR_EACH_BB_FN (bb, cfun)
+ {
+ if (single_pred_p (bb))
+ continue;
+
+ edge e;
+ edge_iterator ei;
+ FOR_EACH_EDGE (e, ei, bb->preds)
+ {
+ if (e->insns.r == NULL_RTX)
+ continue;
+ start_sequence ();
+ emit_insn (gen_comment ("Start: Added by -minit-regs=3:"));
+ emit_insn (e->insns.r);
+ emit_insn (gen_comment ("End: Added by -minit-regs=3:"));
+ e->insns.r = get_insns ();
+ end_sequence ();
+ }
+ }
+
commit_edge_insertions ();
}
diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt
index 08580071731..e56ec9288da 100644
--- a/gcc/config/nvptx/nvptx.opt
+++ b/gcc/config/nvptx/nvptx.opt
@@ -95,3 +95,6 @@ Specify the version of the ptx version to use.
minit-regs=
Target Var(nvptx_init_regs) IntegerRange(0, 3) Joined UInteger Init(3)
Initialize ptx registers.
+
+mptx-comment
+Target Var(nvptx_comment) Init(1) Undocumented
next reply other threads:[~2022-02-22 13:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-22 13:53 Tom de Vries [this message]
2022-02-23 11:14 ` [PATCH][nvptx] Fix dummy location in gen_comment Tom de Vries
2022-02-23 11:58 ` Thomas Schwinge
2022-02-24 8:23 ` [committed][nvptx] " Tom de Vries
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220222135337.GA1196@delia.home \
--to=tdevries@suse.de \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).