]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[nvptx] Use '%' as register prefix
authorTom de Vries <tdevries@suse.de>
Sun, 20 Mar 2022 11:10:45 +0000 (12:10 +0100)
committerTom de Vries <tdevries@suse.de>
Tue, 22 Mar 2022 13:40:04 +0000 (14:40 +0100)
The percentage sign as first character of a ptx identifier can be used to
avoid name conflicts, e.g., between user-defined variable names and
compiler-generated names.

The insn nvptx_uniform_warp_check contains register names without '%' prefix,
which potentially could lead to name conflicts with user-defined variable
names.

Fix this by adding a '%' prefix, more specifically a '%r_' prefix to avoid a
name conflict with ptx special registers.

Tested on x86_64 with nvptx accelerator.

gcc/ChangeLog:

2022-03-20  Tom de Vries  <tdevries@suse.de>

PR target/104925
* config/nvptx/nvptx.md (define_insn "nvptx_uniform_warp_check"):
Use % as register prefix.

gcc/config/nvptx/nvptx.md

index 5550ce255135760d50420352801ea228a74ab642..8ed685027b5f9d579e5ca8d5269fd2bc4009c017 100644 (file)
   {
     const char *insns[] = {
       "{",
-      "\\t"          ".reg.b32"        "\\t" "act;",
-      "%.\\t"        "vote.ballot.b32" "\\t" "act,1;",
-      "\\t"          ".reg.pred"       "\\t" "do_abort;",
-      "\\t"          "mov.pred"        "\\t" "do_abort,0;",
-      "%.\\t"        "setp.ne.b32"     "\\t" "do_abort,act,0xffffffff;",
-      "@ do_abort\\t" "trap;",
-      "@ do_abort\\t" "exit;",
+      "\\t"              ".reg.b32"        "\\t" "%%r_act;",
+      "%.\\t"            "vote.ballot.b32" "\\t" "%%r_act,1;",
+      "\\t"              ".reg.pred"       "\\t" "%%r_do_abort;",
+      "\\t"              "mov.pred"        "\\t" "%%r_do_abort,0;",
+      "%.\\t"            "setp.ne.b32"     "\\t" "%%r_do_abort,%%r_act,"
+                                                 "0xffffffff;",
+      "@ %%r_do_abort\\t" "trap;",
+      "@ %%r_do_abort\\t" "exit;",
       "}",
       NULL
     };