From patchwork Thu Mar 23 10:38:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Agarwal X-Patchwork-Id: 66792 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A6FAD3870883 for ; Thu, 23 Mar 2023 10:39:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A6FAD3870883 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1679567953; bh=8JE8aYlVwgLG9IXLcohVA5SJgQsMGPy1DfvXEc+YxoY=; h=Date:To:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=ZP1gw/9usRGtwGPPmV/Z6Hrvnr+mloh0BLKK7U02pwlQf59a5Ht6K9pfknlI4qbvp du2Ltis4pnOBYuAzKFT3NECGNw1kosuknQq1/wNFfOb0JpldeDl1QkjRSdmzcsQEDP PCxjH0F1cWHezcOol4kKWzedhDCicZ6InuLVtRUA= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id A4B593858C20 for ; Thu, 23 Mar 2023 10:38:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A4B593858C20 Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32N9oKuc025615; Thu, 23 Mar 2023 10:38:43 GMT Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3pgmg6h4xf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Mar 2023 10:38:42 +0000 Received: from m0098417.ppops.net (m0098417.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 32NAKqNn020087; Thu, 23 Mar 2023 10:38:42 GMT Received: from ppma03wdc.us.ibm.com (ba.79.3fa9.ip4.static.sl-reverse.com [169.63.121.186]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3pgmg6h4x5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Mar 2023 10:38:42 +0000 Received: from pps.filterd (ppma03wdc.us.ibm.com [127.0.0.1]) by ppma03wdc.us.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 32N8ocbq001376; Thu, 23 Mar 2023 10:38:41 GMT Received: from smtprelay06.dal12v.mail.ibm.com ([9.208.130.100]) by ppma03wdc.us.ibm.com (PPS) with ESMTPS id 3pd4x75d2a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Mar 2023 10:38:41 +0000 Received: from smtpav03.wdc07v.mail.ibm.com (smtpav03.wdc07v.mail.ibm.com [10.39.53.230]) by smtprelay06.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 32NAceb02491010 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 23 Mar 2023 10:38:40 GMT Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7295D5805A; Thu, 23 Mar 2023 10:38:40 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 014C45805C; Thu, 23 Mar 2023 10:38:38 +0000 (GMT) Received: from [9.43.108.57] (unknown [9.43.108.57]) by smtpav03.wdc07v.mail.ibm.com (Postfix) with ESMTP; Thu, 23 Mar 2023 10:38:37 +0000 (GMT) Message-ID: <4c0b6b4f-bbc1-8dd0-a91c-ffed028b4873@linux.ibm.com> Date: Thu, 23 Mar 2023 16:08:32 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US To: gcc-patches Cc: Segher Boessenkool , bergner@linux.ibm.com, Jeff Law , Richard Biener Subject: [PATCH] rtl-optimization: ppc backend generates unnecessary signed extension. X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 398ABps6McFy8F31zJQbCZUo8JwZHdMp X-Proofpoint-ORIG-GUID: zaLeWpO3nAcWU5-vYahakcedgw48OiSj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-22_21,2023-03-22_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 mlxlogscore=999 adultscore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 mlxscore=0 spamscore=0 phishscore=0 bulkscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303150002 definitions=main-2303230080 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Ajit Agarwal via Gcc-patches From: Ajit Agarwal Reply-To: Ajit Agarwal Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hello All: This patch removed unnecessary signed extension elimination in ree pass. Bootstrapped and regtested on powerpc64-linux-gnu. Thanks & Regards Ajit rtl-optimization: ppc backend generates unnecessary signed extension. Eliminate unnecessary redundant signed extension. 2023-03-23 Ajit Kumar Agarwal gcc/ChangeLog: * ree.cc: Modification for AND opcode support to eliminate unnecessary signed extension. * testsuite/g++.target/powerpc/sext-elim.C: New tests. --- gcc/ree.cc | 24 +++++++++++++++++--- gcc/testsuite/g++.target/powerpc/sext-elim.C | 19 ++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/g++.target/powerpc/sext-elim.C diff --git a/gcc/ree.cc b/gcc/ree.cc index d09f55149b1..63d8cf9f237 100644 --- a/gcc/ree.cc +++ b/gcc/ree.cc @@ -364,6 +364,7 @@ combine_set_extension (ext_cand *cand, rtx_insn *curr_insn, rtx *orig_set) rtx simplified_temp_extension = simplify_rtx (temp_extension); if (simplified_temp_extension) temp_extension = simplified_temp_extension; + new_set = gen_rtx_SET (new_reg, temp_extension); } else if (GET_CODE (orig_src) == IF_THEN_ELSE) @@ -375,11 +376,21 @@ combine_set_extension (ext_cand *cand, rtx_insn *curr_insn, rtx *orig_set) else { /* This is the normal case. */ - rtx temp_extension - = gen_rtx_fmt_e (cand->code, cand->mode, orig_src); + rtx temp_extension = NULL_RTX; + + if (GET_CODE (SET_SRC (cand_pat)) == AND) + temp_extension + = gen_rtx_fmt_ee (cand->code, cand->mode,orig_src, + XEXP (SET_SRC (cand_pat), 1)); + else + temp_extension + = gen_rtx_fmt_e (cand->code, cand->mode,orig_src); + rtx simplified_temp_extension = simplify_rtx (temp_extension); + if (simplified_temp_extension) temp_extension = simplified_temp_extension; + new_set = gen_rtx_SET (new_reg, temp_extension); } @@ -1047,7 +1058,14 @@ combine_reaching_defs (ext_cand *cand, const_rtx set_pat, ext_state *state) cannot be merged, we entirely give up. In the future, we should allow extensions to be partially eliminated along those paths where the definitions could be merged. */ - if (apply_change_group ()) + int num_clobbers = 0; + int icode = recog (cand->insn, cand->insn, + (GET_CODE (cand->expr) == SET + && ! reload_completed + && ! reload_in_progress) + ? &num_clobbers : 0); + + if (apply_change_group () || (icode < 0)) { if (dump_file) fprintf (dump_file, "All merges were successful.\n"); diff --git a/gcc/testsuite/g++.target/powerpc/sext-elim.C b/gcc/testsuite/g++.target/powerpc/sext-elim.C new file mode 100644 index 00000000000..1180b9ce268 --- /dev/null +++ b/gcc/testsuite/g++.target/powerpc/sext-elim.C @@ -0,0 +1,19 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-require-effective-target powerpc_p9vector_ok } */ +/* { dg-options "-mcpu=power9 -O2 -free" } */ + +unsigned long c2l(unsigned char* p) +{ + unsigned long res = *p + *(p+1); + return res; +} + +long c2sl(signed char* p) +{ + long res = *p + *(p+1); + return res; +} + +/* { dg-final { scan-assembler-not "rldicl" } } */ +/* { dg-final { scan-assembler-not "extsw" } } */