From: jeevitha <jeevitha@linux.vnet.ibm.com>
To: GCC Patches <gcc-patches@gcc.gnu.org>,
"Kewen.Lin" <linkw@linux.ibm.com>,
Segher Boessenkool <segher@kernel.crashing.org>
Cc: Peter Bergner <bergner@linux.ibm.com>
Subject: [PATCH] rs6000: Fix issue in specifying PTImode as an attribute [PR106895]
Date: Fri, 23 Feb 2024 15:04:13 +0530 [thread overview]
Message-ID: <92507c51-9ff0-4e67-8a6c-7ffb58bc8537@linux.vnet.ibm.com> (raw)
In-Reply-To: <9ea38d87-180f-46b5-a723-45061680980f@linux.vnet.ibm.com>
Hi All,
The following patch has been bootstrapped and regtested on powerpc64le-linux.
PTImode attribute assists in generating even/odd register pairs on 128 bits.
When the user specifies PTImode as an attribute, it breaks because there is no
internal type to handle this mode . We have created a tree node with dummy type
to handle PTImode. We are not documenting this dummy type since users are not
allowed to use this type externally.
2024-02-23 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
gcc/
PR target/106895
* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add fields
to hold PTImode type.
* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Add node
for PTImode type.
gcc/testsuite/
PR target/106895
* gcc.target/powerpc/pr106895.c: New testcase.
diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc
index 6698274031b..f553c72779e 100644
--- a/gcc/config/rs6000/rs6000-builtin.cc
+++ b/gcc/config/rs6000/rs6000-builtin.cc
@@ -756,6 +756,15 @@ rs6000_init_builtins (void)
else
ieee128_float_type_node = NULL_TREE;
+ /* PTImode to get even/odd register pairs. */
+ intPTI_type_internal_node = make_node(INTEGER_TYPE);
+ TYPE_PRECISION (intPTI_type_internal_node) = GET_MODE_BITSIZE (PTImode);
+ layout_type (intPTI_type_internal_node);
+ SET_TYPE_MODE (intPTI_type_internal_node, PTImode);
+ t = build_qualified_type (intPTI_type_internal_node, TYPE_QUAL_CONST);
+ lang_hooks.types.register_builtin_type (intPTI_type_internal_node,
+ "__dummypti");
+
/* Vector pair and vector quad support. */
vector_pair_type_node = make_node (OPAQUE_TYPE);
SET_TYPE_MODE (vector_pair_type_node, OOmode);
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 2291fe8d3a3..77bb937a28b 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -2304,6 +2304,7 @@ enum rs6000_builtin_type_index
RS6000_BTI_ptr_vector_quad,
RS6000_BTI_ptr_long_long,
RS6000_BTI_ptr_long_long_unsigned,
+ RS6000_BTI_PTI,
RS6000_BTI_MAX
};
@@ -2348,6 +2349,7 @@ enum rs6000_builtin_type_index
#define uintDI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTDI])
#define intTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_INTTI])
#define uintTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTTI])
+#define intPTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_PTI])
#define float_type_internal_node (rs6000_builtin_types[RS6000_BTI_float])
#define double_type_internal_node (rs6000_builtin_types[RS6000_BTI_double])
#define long_double_type_internal_node (rs6000_builtin_types[RS6000_BTI_long_double])
diff --git a/gcc/testsuite/gcc.target/powerpc/pr106895.c b/gcc/testsuite/gcc.target/powerpc/pr106895.c
new file mode 100644
index 00000000000..56547b7fa9d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr106895.c
@@ -0,0 +1,15 @@
+/* PR target/106895 */
+/* { dg-require-effective-target int128 } */
+/* { dg-options "-O2" } */
+
+/* Verify the following generates even/odd register pairs. */
+
+typedef __int128 pti __attribute__((mode(PTI)));
+
+void
+set128 (pti val, pti *mem)
+{
+ asm("stq %1,%0" : "=m"(*mem) : "r"(val));
+}
+
+/* { dg-final { scan-assembler "stq \[123\]?\[02468\]" } } */
next parent reply other threads:[~2024-02-23 9:34 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <9ea38d87-180f-46b5-a723-45061680980f@linux.vnet.ibm.com>
2024-02-23 9:34 ` jeevitha [this message]
2024-03-07 15:27 ` [PING^1][PATCH] " jeevitha
2024-03-21 12:51 ` [PATCH v2] " jeevitha
2024-04-17 9:14 ` [PING^1][PATCH " jeevitha
2024-05-21 4:58 ` [PING^2][PATCH " jeevitha
2024-03-18 14:36 ` [PATCH] " Segher Boessenkool
2024-03-18 17:35 ` Peter Bergner
2023-07-20 4:35 jeevitha
2023-08-09 8:48 ` Kewen.Lin
2023-08-24 17:35 ` Michael Meissner
2023-08-25 2:19 ` Peter Bergner
2023-08-26 8:37 ` Michael Meissner
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=92507c51-9ff0-4e67-8a6c-7ffb58bc8537@linux.vnet.ibm.com \
--to=jeevitha@linux.vnet.ibm.com \
--cc=bergner@linux.ibm.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=linkw@linux.ibm.com \
--cc=segher@kernel.crashing.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).