From patchwork Sat Nov 2 15:09:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Pinski X-Patchwork-Id: 100115 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 48DBE385700A for ; Sat, 2 Nov 2024 15:10:25 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by sourceware.org (Postfix) with ESMTPS id 1ABB53858CDA for ; Sat, 2 Nov 2024 15:09:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1ABB53858CDA Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=quicinc.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1ABB53858CDA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1730560181; cv=none; b=kMHxOvRsHKChu67DgEckaU4IZUy4juz9OAxM3YrdCl+c8Ut46MjnkKyXcmqAaBbIqUxR6KHoTHjY0/RSLA8tRN1GdK7aK2R/XQRzKmhZ7PXuBAZwk5tV4BHepsiwDta+ntzD9bTF7/DiT5Z4ktPbCjY4gpiwb+SsRxCldtxlz4c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1730560181; c=relaxed/simple; bh=ZbWyaR7uSmndOhs6RrUFoEr5xRhbZvhtG4CdVQ7tx4k=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=IgSeM76jquhg40BXf4xg2ImQ89I+A0nhorj0hia4euvcVTfment3+p65KfN1QRE70X1gttEabscEvdHs7RpGelM/GctPT8aTD7sde6Fx+I3SyQc80PFKEej1cCe1JbgzCVFakB3yAlBbqrW8JKVYUWzPxiohb4h36Q/glP40fL8= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4A2Almgl006291 for ; Sat, 2 Nov 2024 15:09:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=a5WLI1tH3/Rj2p1JbML36C NGHxb69BPm9RO8G/hg8Ps=; b=lED8xj/E7eXhbUAgXVdqbN37goe9aMTnjJqwBF 9ENoG5uCNWkeHWPne+Vz5ZcsnMKXzRl4U2M2ZPJE0V/qQNYUEOfL0lsu6PGVuCKN t2k/8/ODCIVKwwgHdgFk96vi3UDSHo+aDT4DBGGZWOoLgJRLqrjva+7jxLTln7QM jEFTw53rbnz8iKctAcM/7xA9+dOCi/Bf9YTgWVEkoubnp7aK/t0sq00rA7gwhaSp CBroklOoUGR72FzRd5SPkJXLe2AS+EH8AOMYrveIc4u/kT4oeyRQdLHYcrIeosf1 ASLuo0UqVWwWna3US6Ofuvv83xv/gl8A8qREjQAuG6M8Sv3A== Received: from nasanppmta01.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 42nd2r0udd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sat, 02 Nov 2024 15:09:36 +0000 (GMT) Received: from nasanex01c.na.qualcomm.com (nasanex01c.na.qualcomm.com [10.45.79.139]) by NASANPPMTA01.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 4A2F9al2021939 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sat, 2 Nov 2024 15:09:36 GMT Received: from hu-apinski-lv.qualcomm.com (10.49.16.6) by nasanex01c.na.qualcomm.com (10.45.79.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Sat, 2 Nov 2024 08:09:35 -0700 From: Andrew Pinski To: CC: Andrew Pinski Subject: [PATCH 1/4] VN: Factor out inserting predicates for conditional Date: Sat, 2 Nov 2024 08:09:18 -0700 Message-ID: <20241102150921.3319089-1-quic_apinski@quicinc.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01a.na.qualcomm.com (10.47.209.196) To nasanex01c.na.qualcomm.com (10.45.79.139) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: sb3eMPmrKFlH2BbDKf6nHnyTfVUCzIUA X-Proofpoint-GUID: sb3eMPmrKFlH2BbDKf6nHnyTfVUCzIUA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 mlxlogscore=730 priorityscore=1501 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 phishscore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2409260000 definitions=main-2411020134 X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, 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~patchwork=sourceware.org@gcc.gnu.org To make it easier to add more predicates in some cases, factor out the code. Plus it makes the code slightly more readable since it is not indented as much. Bootstrapped and tested on x86_64. gcc/ChangeLog: * tree-ssa-sccvn.cc (insert_predicates_for_cond): New function, factored out from ... (process_bb): Here. Signed-off-by: Andrew Pinski --- gcc/tree-ssa-sccvn.cc | 70 +++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index 1c8bc884f1f..a11bf968670 100644 --- a/gcc/tree-ssa-sccvn.cc +++ b/gcc/tree-ssa-sccvn.cc @@ -7895,6 +7895,42 @@ insert_related_predicates_on_edge (enum tree_code code, tree *ops, edge pred_e) } } +/* Insert on the TRUE_E true and FALSE_E false predicates + derived from LHS CODE RHS. */ +static void +insert_predicates_for_cond (tree_code code, tree lhs, tree rhs, + edge true_e, edge false_e) +{ + tree_code icode = invert_tree_comparison (code, HONOR_NANS (lhs)); + tree ops[2]; + ops[0] = lhs; + ops[1] = rhs; + if (true_e) + vn_nary_op_insert_pieces_predicated (2, code, boolean_type_node, ops, + boolean_true_node, 0, true_e); + if (false_e) + vn_nary_op_insert_pieces_predicated (2, code, boolean_type_node, ops, + boolean_false_node, 0, false_e); + if (icode != ERROR_MARK) + { + if (true_e) + vn_nary_op_insert_pieces_predicated (2, icode, boolean_type_node, ops, + boolean_false_node, 0, true_e); + if (false_e) + vn_nary_op_insert_pieces_predicated (2, icode, boolean_type_node, ops, + boolean_true_node, 0, false_e); + } + /* Relax for non-integers, inverted condition handled + above. */ + if (INTEGRAL_TYPE_P (TREE_TYPE (lhs))) + { + if (true_e) + insert_related_predicates_on_edge (code, ops, true_e); + if (false_e) + insert_related_predicates_on_edge (icode, ops, false_e); + } +} + /* Main stmt worker for RPO VN, process BB. */ static unsigned @@ -8098,45 +8134,13 @@ process_bb (rpo_elim &avail, basic_block bb, edge true_e, false_e; extract_true_false_edges_from_block (bb, &true_e, &false_e); enum tree_code code = gimple_cond_code (last); - enum tree_code icode - = invert_tree_comparison (code, HONOR_NANS (lhs)); - tree ops[2]; - ops[0] = lhs; - ops[1] = rhs; if ((do_region && bitmap_bit_p (exit_bbs, true_e->dest->index)) || !can_track_predicate_on_edge (true_e)) true_e = NULL; if ((do_region && bitmap_bit_p (exit_bbs, false_e->dest->index)) || !can_track_predicate_on_edge (false_e)) false_e = NULL; - if (true_e) - vn_nary_op_insert_pieces_predicated - (2, code, boolean_type_node, ops, - boolean_true_node, 0, true_e); - if (false_e) - vn_nary_op_insert_pieces_predicated - (2, code, boolean_type_node, ops, - boolean_false_node, 0, false_e); - if (icode != ERROR_MARK) - { - if (true_e) - vn_nary_op_insert_pieces_predicated - (2, icode, boolean_type_node, ops, - boolean_false_node, 0, true_e); - if (false_e) - vn_nary_op_insert_pieces_predicated - (2, icode, boolean_type_node, ops, - boolean_true_node, 0, false_e); - } - /* Relax for non-integers, inverted condition handled - above. */ - if (INTEGRAL_TYPE_P (TREE_TYPE (lhs))) - { - if (true_e) - insert_related_predicates_on_edge (code, ops, true_e); - if (false_e) - insert_related_predicates_on_edge (icode, ops, false_e); - } + insert_predicates_for_cond (code, lhs, rhs, true_e, false_e); } break; }