From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 9A2023858D33 for ; Wed, 9 Aug 2023 08:48:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9A2023858D33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com Received: from pps.filterd (m0353727.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3798VZhi029600; Wed, 9 Aug 2023 08:48:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=pp1; bh=hZGu+jsj4vrAQQS10O1V1K3DXiPLaL//sDOlmW8sck4=; b=E4NUerLOuQPOOMEzKP5sp3aePiTfG+mw6byrUq0fuj8uVWxdu0p/fZ2tVT1udN6kKg0d VAcrWs9Qj8vGZLL+YOzh12dpEgwgLIP0cSgs0XlV66o/XQwX8eFZd9p0r0g5VOCjTsuP ucRPixrQRIao9EP5j2z5U85uIDEfne2VAQeOnw19W9al4qAUZ20Yu3Ceb1tDNa2+d4e/ 8b7uwN4gj01rFqGjs/2ILziA9ZhO6c0QdQJl8hJs54AYM9qh5wZEapM7//v/VqT8ZTw5 5iXwp/gV81LhzPyCwHcQFRhpsNKPS+XGieElWKzKNUiFhUTkdYWmO3A1dfxHxq9NeHM8 kA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3sc7c8rsxp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Aug 2023 08:48:43 +0000 Received: from m0353727.ppops.net (m0353727.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3798jBZS006763; Wed, 9 Aug 2023 08:48:42 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3sc7c8rsxc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Aug 2023 08:48:42 +0000 Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3797qa7u015377; Wed, 9 Aug 2023 08:48:41 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 3sb3f3071y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Aug 2023 08:48:41 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 3798md9243254250 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 9 Aug 2023 08:48:39 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0DD1C20040; Wed, 9 Aug 2023 08:48:39 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E115420049; Wed, 9 Aug 2023 08:48:36 +0000 (GMT) Received: from [9.197.227.215] (unknown [9.197.227.215]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 9 Aug 2023 08:48:36 +0000 (GMT) Message-ID: Date: Wed, 9 Aug 2023 16:48:35 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH] rs6000: Fix issue in specifying PTImode as an attribute [PR106895] Content-Language: en-US To: jeevitha Cc: Peter Bergner , gcc-patches@gcc.gnu.org, segher@kernel.crashing.org, meissner@linux.ibm.com, David Edelsohn References: <460cd2bd-7c82-95d8-c58e-f32da70ab2a9@linux.vnet.ibm.com> From: "Kewen.Lin" In-Reply-To: <460cd2bd-7c82-95d8-c58e-f32da70ab2a9@linux.vnet.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: rPghMqqWcIuBr5aAUDEExbBPmvRF2j3n X-Proofpoint-GUID: jk5MCOrpMQZU8zpD9_gSZcC9Mw15dH4d X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-08-09_06,2023-08-08_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 clxscore=1015 adultscore=0 spamscore=0 suspectscore=0 mlxscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2308090075 X-Spam-Status: No, score=-14.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi, on 2023/7/20 12:35, jeevitha via Gcc-patches wrote: > Hi All, > > The following patch has been bootstrapped and regtested on powerpc64le-linux. > > When the user specifies PTImode as an attribute, it breaks. Created > a tree node to handle PTImode types. PTImode attribute helps in generating > even/odd register pairs on 128 bits. > > 2023-07-20 Jeevitha Palanisamy > > gcc/ > PR target/110411 > * 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 a8f291c6a72..ca00c3b0d4c 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, > + "__int128pti"); IIUC, this builtin type registering makes this type expose to users, so I wonder if we want to actually expose this type for users' uses. If yes, we need to update the documentation (and not sure if the current name is good enough); otherwise, I wonder if there is some existing practice to declare a builtin type with a name which users can't actually use and is just for shadowing a mode. BR, Kewen > + > /* 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 3503614efbd..0456bf56d17 100644 > --- a/gcc/config/rs6000/rs6000.h > +++ b/gcc/config/rs6000/rs6000.h > @@ -2303,6 +2303,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 > }; > > @@ -2347,6 +2348,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..04630fe1df5 > --- /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 10,0\\(5\\)" } } */ > >