From patchwork Fri Jan 26 08:33:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "juzhe.zhong@rivai.ai" X-Patchwork-Id: 192426 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:e09d:b0:103:945f:af90 with SMTP id gm29csp524415dyb; Fri, 26 Jan 2024 00:42:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IEzyPIpIT0seA9JikIaEc47RNvHN+S/DaUG1sDQznVsk4N18DS1U1s4+zPZlc+QvfMOhpE2 X-Received: by 2002:a05:620a:c52:b0:783:b9e5:b9e1 with SMTP id u18-20020a05620a0c5200b00783b9e5b9e1mr1404470qki.34.1706258547327; Fri, 26 Jan 2024 00:42:27 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706258547; cv=pass; d=google.com; s=arc-20160816; b=gM/3ocSCqCE6tNV/hTG7t6UwmToJzwHPclxVRwiM1y+9JJaXHB/FMv/yel3ITjO2Ip B+lwWj9i94IQRJRvu2nsTntUpAEzg34/rx1LNt+mBNInQ1x3rJb+LlFoNIulLBfOo4mf dDZjyiijyXznbMBmYyFygbimipz6gSdBNjz6kIoK/r/NEve/5EjqyxeaYSgc4ZZatLbV pvxR1GedOy83kgV9UrhPP+bbZTPyqmYNm4aY8wiZRDL2NmfVbU2GAJZVRfhaZyO/SITe t5NcezmwkX7lYi4Lfm/tDjCWxaVoMEnYL0Z5WjwyR585pYKYGaEYTIjHjaIPaMN5io/Z onWg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:feedback-id :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:arc-filter:dmarc-filter:delivered-to; bh=o3DPmT2xoRCz8aLReV+F7InhARibmYvqZLell1NlK4c=; fh=idvV5TQ1gmHAoU8u1GUGfjilVySOK+BR5TeZLoSouN8=; b=opTEElc/S0tZXLLRMIJgHtIMyDaSAKaG3j4nq078rOTnthD6RflkrfB1qhM45/9poU bdktEjouC/WVNNPzVTsRcrOkNRsh3RE/pKb7B4G6ngTq3R1nzJLM3fOTLTekLsS4RZqi 1Pm0okLgAt9tZ6IAOR8XnClCmSr9+ULxUKyehKcyKwNnLjxd4Es+QoDIRt+2NeCSbK3o yNW7QlZ1OvD2Li6Si1mMoOlj6o773VRyfJlJdzjBouqQNmTy9HDOjIrL2IWSLWG309Ag IrVCpiD1T42gcE02zx3p6u9Gx9780ZrQ/gG/1WnlzqzTpPKokOQaOq32eN4wWuLhZXUo JKEA== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); 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" Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id dt25-20020a05620a479900b007831b225795si858110qkb.187.2024.01.26.00.42.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 00:42:27 -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; arc=pass (i=1); 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" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 89806385803B for ; Fri, 26 Jan 2024 08:42:24 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by sourceware.org (Postfix) with ESMTPS id A06073858C2C for ; Fri, 26 Jan 2024 08:33:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A06073858C2C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A06073858C2C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.206.16.166 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706258002; cv=none; b=DQV2XIU4OncebXx4yzkkmBMVT5nuPryiY/NE3f84bytcbPdHdibRkkoJ7I/QvQg/5/cwYYa+AsvUJNXsm1q/GhUnuOttA2EIWog5Vzic5X7X52R3b6aDAQQ2ARL+LD1fmdgDgb4pJxZXw64H7UXG/NEGjghBm4OH2RJKYARq+O8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706258002; c=relaxed/simple; bh=VWWaPIaHhe4h0F/cNJ//3ogirunVkxqWId9TSR1kRwU=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=oCZVM6/KhBEaleJwQi7wOAyYIb+tHsIfmSjBs+PtX7JOJRZgGmHQp9BWzbpdwqcftREG65EK8lwu9GVeimmPZYkJxcquFTmgqjpZMScyhZQiFqAQQmcBbpVkueDND5UyZT6ZJw+/ZjVdUQyJUUFYRa4+xI6IEz3UOZA0zyPYKF8= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp71t1706257988trw75mmv X-QQ-Originating-IP: 7UU7pXwARCbg1qioyd9EZrgROvxv7370FArdA/ge/Sw= Received: from rios-cad122.hadoop.rioslab.org ( [58.60.1.26]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 26 Jan 2024 16:33:07 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: cvpDInk2tjUq8Z7sqaQ8oQaulNZ4e6rYmMqTlHZGrFSUgPOFJKXGuiXFSym6E n/fxK+tq6EVZtBfFpZ+KXzPy5YKq+w8Cxnh377lU5Mcoo6VvNIm1GWIUCwEkx9tLkdbiaSK LLja//SEQz4pP+eCiMQeiKdam+ZxpsvK8yQ7uViFxoTaG+oNcHY713NrAXPiC7x+qPxoTOe 0r6Ux85hIQAjLhAmVy/yu0Gu4iLwSgDOqnXVdnzeoS7V783OywK7Z1AMUt3h3MBnEgbqs/Q Us72HmJtl9caI8VllCvFmA4QthskhzRYOon8LgobYXoHgv4OstHSreTZdcu00dK0CALaf/R eAByJAUDhW+a6Q2YqU7do8xGZS66hDloJbV/Tdl5C7JFSpJ8LK3/CkYTGumzPQ4k4/Hh7g3 Sko9Df4uQ/0= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 14929878140070746525 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: Juzhe-Zhong Subject: [Committed] RISC-V: Refine some codes of VSETVL PASS [NFC] Date: Fri, 26 Jan 2024 16:33:06 +0800 Message-Id: <20240126083306.4138457-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, 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 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+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789141762838227898 X-GMAIL-MSGID: 1789141762838227898 gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (pre_vsetvl::earliest_fuse_vsetvl_info): Refine some codes. (pre_vsetvl::emit_vsetvl): Ditto. --- gcc/config/riscv/riscv-vsetvl.cc | 69 +++++++++++++------------------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc index 1a398f02596..d7b40a5c813 100644 --- a/gcc/config/riscv/riscv-vsetvl.cc +++ b/gcc/config/riscv/riscv-vsetvl.cc @@ -2930,28 +2930,19 @@ pre_vsetvl::earliest_fuse_vsetvl_info (int iter) EXECUTE_IF_SET_IN_BITMAP (e, 0, expr_index, sbi) { vsetvl_info &curr_info = *m_exprs[expr_index]; - if (!curr_info.valid_p ()) - continue; - edge eg = INDEX_EDGE (m_edges, ed); - if (eg->probability == profile_probability::never ()) - continue; - if (eg->src == ENTRY_BLOCK_PTR_FOR_FN (cfun) - || eg->dest == EXIT_BLOCK_PTR_FOR_FN (cfun)) - continue; - - /* When multiple set bits in earliest edge, such edge may - have infinite loop in preds or succs or multiple conflict - vsetvl expression which make such edge is unrelated. We - don't perform fusion for such situation. */ - if (bitmap_count_bits (e) != 1) - continue; - vsetvl_block_info &src_block_info = get_block_info (eg->src); vsetvl_block_info &dest_block_info = get_block_info (eg->dest); - if (src_block_info.probability - == profile_probability::uninitialized ()) + if (!curr_info.valid_p () + || eg->probability == profile_probability::never () + || src_block_info.probability + == profile_probability::uninitialized () + /* When multiple set bits in earliest edge, such edge may + have infinite loop in preds or succs or multiple conflict + vsetvl expression which make such edge is unrelated. We + don't perform fusion for such situation. */ + || bitmap_count_bits (e) != 1) continue; if (src_block_info.empty_p ()) @@ -3058,29 +3049,27 @@ pre_vsetvl::earliest_fuse_vsetvl_info (int iter) { vsetvl_info &prev_info = src_block_info.get_exit_info (); if (!prev_info.valid_p () - || m_dem.available_p (prev_info, curr_info)) + || m_dem.available_p (prev_info, curr_info) + || !m_dem.compatible_p (prev_info, curr_info)) continue; - if (m_dem.compatible_p (prev_info, curr_info)) + if (dump_file && (dump_flags & TDF_DETAILS)) { - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, " Fuse curr info since prev info " - "compatible with it:\n"); - fprintf (dump_file, " prev_info: "); - prev_info.dump (dump_file, " "); - fprintf (dump_file, " curr_info: "); - curr_info.dump (dump_file, " "); - } - m_dem.merge (prev_info, curr_info); - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, " prev_info after fused: "); - prev_info.dump (dump_file, " "); - fprintf (dump_file, "\n"); - } - changed = true; + fprintf (dump_file, " Fuse curr info since prev info " + "compatible with it:\n"); + fprintf (dump_file, " prev_info: "); + prev_info.dump (dump_file, " "); + fprintf (dump_file, " curr_info: "); + curr_info.dump (dump_file, " "); + } + m_dem.merge (prev_info, curr_info); + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, " prev_info after fused: "); + prev_info.dump (dump_file, " "); + fprintf (dump_file, "\n"); } + changed = true; } } } @@ -3344,15 +3333,11 @@ pre_vsetvl::emit_vsetvl () { edge eg = INDEX_EDGE (m_edges, ed); sbitmap i = m_insert[ed]; - if (bitmap_count_bits (i) < 1) - continue; - - if (bitmap_count_bits (i) > 1) + if (bitmap_count_bits (i) != 1) /* For code with infinite loop (e.g. pr61634.c), The data flow is completely wrong. */ continue; - gcc_assert (bitmap_count_bits (i) == 1); unsigned expr_index = bitmap_first_set_bit (i); const vsetvl_info &info = *m_exprs[expr_index]; gcc_assert (info.valid_p ());