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 673423857C76; Wed, 22 Nov 2023 09:18:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 673423857C76 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 ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 673423857C76 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700644738; cv=none; b=vSIasN0mHtiPTY7YgguUQmNTVxVtm72mKgYoqR6tza/wAuxftEp17rS3tFwmnS6Xq1tlZ+fw4rpy9EqqT/uatTb45PajQae6gt+QKXcselInXC3wwh6Ewbg3UUYnCpOGZljP/hOBHnYYsGV9jfhai1h6YNI0S57LPlORQ8ZHkhA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700644738; c=relaxed/simple; bh=B6XjL3H24JBKf4yzBusNYjKqwH2+WTz5r1JYkBk1OZo=; h=DKIM-Signature:Message-ID:Date:Subject:To:From:MIME-Version; b=J2eiHyGdjoRMwV4enzntCDfIugc/8UYJbdGdJSkYEMlaTjYADZCIcF5wYfXd27I4zflvnoCYCrcauqgXue1WU/6VFcIkq7828+mZUYWBcMTYyx9ClTdx4xtY0JTAHq/lR2VuDMI9IaCSATUWmGUZlC6DtPeS25zQ4LOLpXNO+Gg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3AM9FYmq012469; Wed, 22 Nov 2023 09:18:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pp1; bh=DRoNOxIqwVbPBcCwReuV2BPor1InbamF0eRSoiPPOd8=; b=stfQg6lTl5MZ1nNer7PQjMDMANq0/X4p3In0uDJdDcOUAKj0DBnDRNOvspkSXWex3Ebu qXsy1PNZWRQ3SE6btddEWIxtQkIW8He9MIEZsSd2GywajjXCu6k+l5QYjpvUnzjNL1QS YF/2COAu7O8cimEiQV7q2PijA2GKdtN1vHvpqUn+pcGh7jHxvDvOlYVqVmTodBl+Dfyc 0ZL1E6Jjxqk4EioECF9cNRHciie3TlMSUx/oEtPsf+C6sIjUe7zgX2un3LypQ14oosct BaWqSHjPW6oltjiukUkX9SmuulU8JwzPBsI/SnIS0L+CqkZezrZaNytpCjA0oThsRuz2 ZQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3uheqxg4ss-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Nov 2023 09:18:55 +0000 Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3AM9FfeY013687; Wed, 22 Nov 2023 09:18:54 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3uheqxg4sa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Nov 2023 09:18:54 +0000 Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3AM79Jar013271; Wed, 22 Nov 2023 09:18:53 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3uf7kt74sg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Nov 2023 09:18:53 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 3AM9Io3S13566506 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 22 Nov 2023 09:18:50 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BE28B2004D; Wed, 22 Nov 2023 09:18:50 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4D75620040; Wed, 22 Nov 2023 09:18:48 +0000 (GMT) Received: from [9.177.4.225] (unknown [9.177.4.225]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 22 Nov 2023 09:18:47 +0000 (GMT) Message-ID: <9771ca52-70db-b675-9de2-3d452234f068@linux.ibm.com> Date: Wed, 22 Nov 2023 17:18:46 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH V2 2/3] Using pli to split 34bits constant Content-Language: en-US To: Jiufu Guo Cc: segher@kernel.crashing.org, dje.gcc@gmail.com, linkw@gcc.gnu.org, bergner@linux.ibm.com, gcc-patches@gcc.gnu.org References: <20231115030237.1188073-1-guojiufu@linux.ibm.com> <20231115030237.1188073-2-guojiufu@linux.ibm.com> From: "Kewen.Lin" In-Reply-To: <20231115030237.1188073-2-guojiufu@linux.ibm.com> Content-Type: text/plain; charset=UTF-8 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: nNd4-Pxt1qSu2UxRA84zBDHyREMFuG20 X-Proofpoint-GUID: FOpcP5v4s8LeYPcauoD3J_DcVUs7enOo Content-Transfer-Encoding: 7bit X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-11-22_06,2023-11-21_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 adultscore=0 clxscore=1015 bulkscore=0 mlxlogscore=999 priorityscore=1501 spamscore=0 mlxscore=0 suspectscore=0 impostorscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2311220064 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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/11/15 11:02, Jiufu Guo wrote: > Hi, > > For constants with 16bit values, 'li or lis' can be used to generate > the value. For 34bit constant, 'pli' is ok to generate the value. > For example: 0x6666666666666666ULL, "pli 3,1717986918; rldimi 3,3,32,0" > can be used. Since now if emit_move_insn with a 34bit constant, it's already adopting pli. So it's not obvious to the readers why we want this change, I think you should probably state the reason here explicitly, like in function rs6000_emit_set_long_const it's possible to recursively call itself without invoking emit_move_insn, then it can result in sub-optimal constant build ... And for the testing I prefer to have a dedicated test case for it, like extracting function msk66 from pr93012.c and checking its generated assembly has pli but not lis and ori on Power10 and up. The others look good to me. Thanks! BR, Kewen > > Compare with previous: > https://gcc.gnu.org/pipermail/gcc-patches/2023-October/634196.html > This verion updates a testcase to cover this functionality. > > Bootstrap®test pass on ppc64{,le}. > Is this ok for trunk? > > BR, > Jeff (Jiufu Guo) > > gcc/ChangeLog: > > * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Add code to use > pli for 34bit constant. > > gcc/testsuite/ChangeLog: > > * gcc.target/powerpc/pr93012.c: Update to check pli. > > --- > gcc/config/rs6000/rs6000.cc | 9 +++++++++ > gcc/testsuite/gcc.target/powerpc/pr93012.c | 1 + > 2 files changed, 10 insertions(+) > > diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc > index ba40dd6eee4..b277c52687b 100644 > --- a/gcc/config/rs6000/rs6000.cc > +++ b/gcc/config/rs6000/rs6000.cc > @@ -10504,6 +10504,15 @@ rs6000_emit_set_long_const (rtx dest, HOST_WIDE_INT c, int *num_insns) > return; \ > } > > + if (TARGET_PREFIXED && SIGNED_INTEGER_34BIT_P (c)) > + { > + /* li/lis/pli */ > + ADJUST_INSN_NUM_AND_RET (1); > + > + emit_move_insn (dest, GEN_INT (c)); > + return; > + } > + > if ((ud4 == 0xffff && ud3 == 0xffff && ud2 == 0xffff && (ud1 & 0x8000)) > || (ud4 == 0 && ud3 == 0 && ud2 == 0 && !(ud1 & 0x8000))) > { > diff --git a/gcc/testsuite/gcc.target/powerpc/pr93012.c b/gcc/testsuite/gcc.target/powerpc/pr93012.c > index 4f764d0576f..a07ff764bbf 100644 > --- a/gcc/testsuite/gcc.target/powerpc/pr93012.c > +++ b/gcc/testsuite/gcc.target/powerpc/pr93012.c > @@ -10,4 +10,5 @@ unsigned long long mskh1() { return 0xffff9234ffff9234ULL; } > unsigned long long mskl1() { return 0x2bcdffff2bcdffffULL; } > unsigned long long mskse() { return 0xffff1234ffff1234ULL; } > > +/* { dg-final { scan-assembler-times {\mpli\M} 4 { target has_arch_pwr10 }} } */ > /* { dg-final { scan-assembler-times {\mrldimi\M} 7 } } */