From patchwork Thu Dec 8 03:08:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: HAO CHEN GUI X-Patchwork-Id: 31133 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp533340wrr; Wed, 7 Dec 2022 19:09:23 -0800 (PST) X-Google-Smtp-Source: AA0mqf697r6CVnGqOiTZQ6Mx+SWxDijY7783+u3yw+Drs/kuksBRUnSNN3OXpqeF27cQZhXYoNVU X-Received: by 2002:a17:907:9096:b0:7c0:e306:8930 with SMTP id ge22-20020a170907909600b007c0e3068930mr15398706ejb.386.1670468963022; Wed, 07 Dec 2022 19:09:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670468963; cv=none; d=google.com; s=arc-20160816; b=z9LBzhGy16h7zcZlCr+gTtF4YKjmoZDODk1pCVhhU0Gx0kHefses+APbhu8V5aYV2m bcSCx5uQZ97Gq2KtjBtVA50iQh2nCqVhrngCWUtvOPG+6qyF5MXGIXFv8M4seaU+qxBl Y/upSkGCVxMiYCZxqye74xtnq1cuRAE+qJsU8HkTXpxP7tpKDa1DDpZu4180ODkQmv+E BP0UnXXhWW1orUHu9wPU8ezUlED4HBWKtuHki1z89JfE/UCJ0GSRz9dI+V6AbNPajRUk YutqTqgtq02AFNjaGmteXCs2b8f0FzwKgejqrDpxR6pN/wyZAuRh4xrenI3RXCjADL8J rdcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:subject:cc:to:content-language:user-agent :mime-version:date:message-id:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=3lmX127CUVslvgTP7Wdrsy9aKx4lqI42HaUMRpi1AtM=; b=R6wij4c/olpFZWo0xEfl9zoqNEYRAHDodKEFMqlYvfLkI7dakxQj1sRHwItXUTA5mZ oHE19UzTLDuvE/7B83PnFKZX/cn7Fb0tGXRlT7+jC9dfQyVdgt4mIDYwJUCBogH5FMXA FnpBdEFy7ph6lqlZxboMf7pYzexzVZkJHRLLFGRzy/T28mxfMG0IwUQq/ztE758BZ+SD /bXs8z2K4EssXMYnOaWSgmuxIi++CvrT7PLsvgYiXlJR1/SrdQbEcDHhcy2V4897ieQ+ A4rLByALukcd3XQRXyCxN1uf6nWhPaLLF0yCb1Ur9z3g4yMKtNCgEu/LoarYk3WF4d8H qcyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=fcnfnOQw; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id x5-20020a05640226c500b004696af1a86fsi6843300edd.271.2022.12.07.19.09.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Dec 2022 19:09:23 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=fcnfnOQw; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 42CA7397311A for ; Thu, 8 Dec 2022 03:09:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 42CA7397311A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1670468959; bh=3lmX127CUVslvgTP7Wdrsy9aKx4lqI42HaUMRpi1AtM=; h=Date:To:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=fcnfnOQw681EQP/th9wl2QzYP639ycvpTm4YTKOXU5bX3ivrd/63j+qoHMwWDHWDB VF+ewsL3xunNQxwPEMss2h9ODy+O94TEFh46zlc3JzvXqZMtPZm8CxeRq7Pw4JawyH 0Btq19fcq24S39lk7h5os0srQUSEklzD1OHueYO0= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 69B0B395C05F for ; Thu, 8 Dec 2022 03:08:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 69B0B395C05F Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B82fkrH028323; Thu, 8 Dec 2022 03:08:32 GMT Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mb7c78mst-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 08 Dec 2022 03:08:31 +0000 Received: from m0098399.ppops.net (m0098399.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 2B82nWeW021613; Thu, 8 Dec 2022 03:08:31 GMT Received: from ppma06fra.de.ibm.com (48.49.7a9f.ip4.static.sl-reverse.com [159.122.73.72]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mb7c78ms4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 08 Dec 2022 03:08:31 +0000 Received: from pps.filterd (ppma06fra.de.ibm.com [127.0.0.1]) by ppma06fra.de.ibm.com (8.17.1.19/8.16.1.2) with ESMTP id 2B7HIEvO004304; Thu, 8 Dec 2022 03:08:28 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma06fra.de.ibm.com (PPS) with ESMTPS id 3m9m6y2rnb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 08 Dec 2022 03:08:28 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 2B838PM644040480 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 8 Dec 2022 03:08:25 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EE4A920043; Thu, 8 Dec 2022 03:08:24 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8133E20040; Thu, 8 Dec 2022 03:08:23 +0000 (GMT) Received: from [9.200.144.161] (unknown [9.200.144.161]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 8 Dec 2022 03:08:23 +0000 (GMT) Message-ID: <3c425be3-f987-5303-18f2-4300dd155c5c@linux.ibm.com> Date: Thu, 8 Dec 2022 11:08:22 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Content-Language: en-US To: gcc-patches Cc: Segher Boessenkool , David , "Kewen.Lin" , Peter Bergner Subject: [PATCH v4, rs6000] Enable have_cbranchcc4 on rs6000 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: uS3aGpw_ecHwSxmO0BHLD8cFqBDJfkdO X-Proofpoint-GUID: LG3XvZZ9-Vlkpy9Wgy4q0-xvsoME0RGn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-07_11,2022-12-07_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 suspectscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 spamscore=0 phishscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212080023 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, KAM_NUMSUBJECT, KAM_SHORT, 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: HAO CHEN GUI via Gcc-patches From: HAO CHEN GUI Reply-To: HAO CHEN GUI Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751613663161559924?= X-GMAIL-MSGID: =?utf-8?q?1751613663161559924?= Hi, This patch enables "have_cbranchcc4" on rs6000 by defining a "cbranchcc4" expander. "have_cbrnachcc4" is a flag in ifcvt.cc to indicate if branch by CC bits is invalid or not. With this flag enabled, some branches can be optimized to conditional moves. Compared to last version, the main changes are on the test cases. Test case is renamed and comments are modified. Bootstrapped and tested on powerpc64-linux BE and LE with no regressions. Is this okay for trunk? Any recommendations? Thanks a lot. BR Gui Haochen ChangeLog 2022-12-07 Haochen Gui gcc/ * config/rs6000/rs6000.md (cbranchcc4): New expander. gcc/testsuite * gcc.target/powerpc/cbranchcc4-1.c: New. * gcc.target/powerpc/cbranchcc4-2.c: New. patch.diff diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index e9e5cd1e54d..d7ddd96cc70 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -11932,6 +11932,16 @@ (define_expand "cbranch4" DONE; }) +(define_expand "cbranchcc4" + [(set (pc) + (if_then_else (match_operator 0 "branch_comparison_operator" + [(match_operand 1 "cc_reg_operand") + (match_operand 2 "zero_constant")]) + (label_ref (match_operand 3)) + (pc)))] + "" + "") + (define_expand "cstore4_signed" [(use (match_operator 1 "signed_comparison_operator" [(match_operand:P 2 "gpc_reg_operand") diff --git a/gcc/testsuite/gcc.target/powerpc/cbranchcc4-1.c b/gcc/testsuite/gcc.target/powerpc/cbranchcc4-1.c new file mode 100644 index 00000000000..6c2cd130b6d --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cbranchcc4-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +/* Verify there is no ICE with cbranchcc4 enabled. */ + +int foo (double d) +{ + if (d == 0.0) + return 0; + + d = ((d) >= 0 ? (d) : -(d)); + + if (d < 1.0) + return 1; +} diff --git a/gcc/testsuite/gcc.target/powerpc/cbranchcc4-2.c b/gcc/testsuite/gcc.target/powerpc/cbranchcc4-2.c new file mode 100644 index 00000000000..528ba1a878d --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/cbranchcc4-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-rtl-ce1" } */ +/* { dg-final { scan-rtl-dump "noce_try_store_flag_constants" "ce1" } } */ + +/* The inner branch should be detected by ifcvt then be converted to a setcc + with a plus by noce_try_store_flag_constants. */ + +int test (unsigned int a, unsigned int b) +{ + return (a < b ? 0 : (a > b ? 2 : 1)); +}