From patchwork Thu Mar 21 12:51:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: jeevitha X-Patchwork-Id: 1914403 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=LKDy06Jm; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V0ln24rHJz23r9 for ; Thu, 21 Mar 2024 23:55:33 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C8963385841C for ; Thu, 21 Mar 2024 12:55:30 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id CD03A3858D28 for ; Thu, 21 Mar 2024 12:55:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CD03A3858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CD03A3858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711025714; cv=none; b=DKLKZXKsP1+N3+Lx32JA70ZNbGOxIfxHf02870c90lrpdy3lmEDYirXafpbwZO1GO3gbiP1zYPAxTeopa9qBDW4UIVVfBCjUUfGYufICUEvFBTYty8gs1Tji4ZOkbAATmH87JS5vwC0gZCZZ1w9JuL/UMS41em9bYM8opDfzvfY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711025714; c=relaxed/simple; bh=xbO1gHo8r3PM16rOQrCerdwycc4f4JLD8U3H+vfT6/4=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=UXN9c4vrHL+tX0edAz5CHbXe4b3JYiUGirPpzInp8nsfRR9wa7kTJhGmOMCj/gsd0w/pUzJXb96ZkEqagg7lZeY0eZEOPEcegascYRlRrHBFkCA65TSZQTWTaddjiw3ibp6crqow1aOreC2tV5RRoXBqg4PZK/GZUUrOmSzVfHk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rnHwr-0007P6-2e for gcc-patches@gcc.gnu.org; Thu, 21 Mar 2024 08:55:12 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 42LBPlJX009478; Thu, 21 Mar 2024 12:55:04 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=zEQvv6lYJC6r+OW+azajGiskPoMI31IUFLzSluT7FnY=; b=LKDy06JmsefeMp9t6mtQTJpy0a32GIbSsVcgGmsWJ+SN5xpLJd7jVyWwKFERX7+r/WIk tn6fB+ME8A3nx6ugVewZiAvUlM+vzDtqHUPbVvuemGJPWkCq+qHrJYPjbqRrrm5s8cD6 wru96hiSOkwkpw5iS20CZayvy8YS2vvqNbxZYZ3Eb683bB/EgfGXt1uiY/3VV+UdcVuV qFtO30aDj/dg9W1mFnw+nm8TyvsBXiLEiRnWj6/kv3OXYdLDP5DaE+9w6DxdLchxbEvA eDKn2+OxpK5zCBdo6n3BIDtdxqPjKHiuhJkVS59GLvdvyOEgfMCkcwcnFbFb7qJah+gB XA== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3x0gc80rrx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 12:55:04 +0000 Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 42LBGpot002778; Thu, 21 Mar 2024 12:51:56 GMT Received: from smtprelay06.dal12v.mail.ibm.com ([172.16.1.8]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 3wwrf2vn0f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 12:51:56 +0000 Received: from smtpav01.wdc07v.mail.ibm.com (smtpav01.wdc07v.mail.ibm.com [10.39.53.228]) by smtprelay06.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 42LCpr9Z30868044 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 21 Mar 2024 12:51:55 GMT Received: from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 485A85804B; Thu, 21 Mar 2024 12:51:53 +0000 (GMT) Received: from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CD34C5805B; Thu, 21 Mar 2024 12:51:50 +0000 (GMT) Received: from [9.197.243.165] (unknown [9.197.243.165]) by smtpav01.wdc07v.mail.ibm.com (Postfix) with ESMTP; Thu, 21 Mar 2024 12:51:50 +0000 (GMT) Message-ID: Date: Thu, 21 Mar 2024 18:21:48 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2] rs6000: Fix issue in specifying PTImode as an attribute [PR106895] Content-Language: en-US To: GCC Patches , "Kewen.Lin" , Segher Boessenkool Cc: Peter Bergner References: <9ea38d87-180f-46b5-a723-45061680980f@linux.vnet.ibm.com> <92507c51-9ff0-4e67-8a6c-7ffb58bc8537@linux.vnet.ibm.com> <67c3e4d1-d507-4dd1-be2d-3469927d1482@linux.vnet.ibm.com> From: jeevitha In-Reply-To: <67c3e4d1-d507-4dd1-be2d-3469927d1482@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Ix1wFeuGLp94bbNIU8vYd5FohwbmKO_S X-Proofpoint-GUID: Ix1wFeuGLp94bbNIU8vYd5FohwbmKO_S X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-21_09,2024-03-18_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 impostorscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 phishscore=0 mlxscore=0 bulkscore=0 clxscore=1011 adultscore=0 suspectscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2403140000 definitions=main-2403210091 Received-SPF: pass client-ip=148.163.156.1; envelope-from=jeevitha@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, SPF_HELO_PASS, SPF_SOFTFAIL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Hi All, The following patch has been bootstrapped and regtested on powerpc64le-linux. PTImode 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. To address this, 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-03-21 Jeevitha Palanisamy gcc/ PR target/110411 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add RS6000_BTI_INTPTI. * 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 68bc45d65ba..b6078077b20 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -2302,6 +2302,7 @@ enum rs6000_builtin_type_index RS6000_BTI_ptr_vector_quad, RS6000_BTI_ptr_long_long, RS6000_BTI_ptr_long_long_unsigned, + RS6000_BTI_INTPTI, RS6000_BTI_MAX }; @@ -2346,6 +2347,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_INTPTI]) #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\]" } } */