From patchwork Mon Jan 9 22:40:07 2023 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: 41195 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp2418860wrt; Mon, 9 Jan 2023 14:40:48 -0800 (PST) X-Google-Smtp-Source: AMrXdXu3QAn0k2MInDKcArhoFoUVgIsYjE9exsh+RHCtGYCxQ3o5ka0dEydWAZ6jyzunPPZuKQhK X-Received: by 2002:a50:d616:0:b0:47c:6ed2:43d1 with SMTP id x22-20020a50d616000000b0047c6ed243d1mr59584651edi.30.1673304048184; Mon, 09 Jan 2023 14:40:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673304048; cv=none; d=google.com; s=arc-20160816; b=Jb91MUCt0ClzGPq5Tg/pjvaNsujY1VsSKQK9nKi51HoHaWcyhzaiSUmZv/3a7+Cbfb yUZ5k6cYzQ+4X9pe0nuRxDt09nxL8SuncQaSDmIHRuCvvsFdVJoX4vVV1e0L8xUhAB28 ZWW7KK9FXverHFVOEchZEuiJu/c8vKXLoLALVqcY43HMdu/iXW0ompUeqJ6ICSJ0qgze ImJLHQf/wPi8wJnSGgDLPP9M1iIE9sG8wmJByWt1Iz6XubDCWuW40miC0+lKwTOYw57J FljtTNyKOTUD6iz2dHdFdLmXdCZMde5tJaclFBx40BA6Mxt7o3T7u8pcox50Rmx8HU3T ljog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender: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:dmarc-filter:delivered-to; bh=3hReRHywPKoRylKXNk2tg2exEb8eqOA5iBi2UidEQuw=; b=dGHf9hwYNiBoNrGzVmbOJuCFmTTc9m22AYU+XELgZ8FtKRXzl/yOGrMylFyslYLdUA fdEALPdUPqnM9gLKtVURjmreSn1vM2kte7jMsmAl+5F5F1ZcS+RsKkizlvcpdUlUtN0L 94K0WUgjRzYrOSp7+vTgPznxeA+yr6Ou1BHolQvShys4eh9FE7IHH2Wwtjbyum1+ERIu HQbDdMaIRW3fFBKdm8kBtxyA/O6+7ZKYvMkcVrdEQgKpBc5XJp57fSfamjYUSqpildRV j3eX96Ti4/TdjPF2w20lRiVoO1/4MDVdHvZ1R7GTtWGQjhG2/quLMZh9yDc10z5cYjat dy6A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id x2-20020a05640226c200b0046ac13261a1si12836216edd.459.2023.01.09.14.40.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jan 2023 14:40:48 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c 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 5717D38582B7 for ; Mon, 9 Jan 2023 22:40:39 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by sourceware.org (Postfix) with ESMTPS id 8B1B93858426 for ; Mon, 9 Jan 2023 22:40:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8B1B93858426 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp88t1673304010ta48h673 Received: from server1.localdomain ( [58.60.1.22]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 10 Jan 2023 06:40:09 +0800 (CST) X-QQ-SSF: 01400000002000E0L000B00A0000000 X-QQ-FEAT: +974YfKaBdAQugOpobkgq3yno+qn8qgEiJe37laoy4KUZOjxKPk4fK1zzv4BW HyQEuB4OlbwxPUXs/OhWncQPxUCvv7mTe8gwvnNn65QQpfAxYO92UgyGWdZ7OGFQlCN5OYJ U6DsBeAG3OVWDBtqdVqdhZ7Cph9ciN8Oohn3Or6UIp5HrhVHkXH43J8SNz4Mq9gaKACxhEy UD+NErlw2CQpzEhCQp76CQLBPXP7+/8d7EKh3t7nGYTD1hR68zw1rV9kyKZAiVn+qaMkRbS WSMyFL6TC95KTIXoSsit89BpvDAdZ2nlmmKr3XcCVR3Y3GQFaq7GffQE7j46d6m5C3uYXCT nY6V1gMcyAqnapnqqKO757+DRYAq/sNkJ7Pg8P99SMMBvwan5snDFGUmhTya93pqu2CgU64 X-QQ-GoodBg: 2 From: juzhe.zhong@rivai.ai To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, palmer@dabbelt.com, Ju-Zhe Zhong Subject: [PATCH] RISC-V: Avoid redundant flow in forward fusion Date: Tue, 10 Jan 2023 06:40:07 +0800 Message-Id: <20230109224007.146325-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-10.6 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 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: , 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?1754586465792868431?= X-GMAIL-MSGID: =?utf-8?q?1754586465792868431?= From: Ju-Zhe Zhong gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion): Add pre-check for redundant flow. --- gcc/config/riscv/riscv-vsetvl.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc index 7800c2ee509..18c6f437db6 100644 --- a/gcc/config/riscv/riscv-vsetvl.cc +++ b/gcc/config/riscv/riscv-vsetvl.cc @@ -2140,6 +2140,9 @@ pass_vsetvl::forward_demand_fusion (void) if (!prop.valid_or_dirty_p ()) continue; + if (cfg_bb == ENTRY_BLOCK_PTR_FOR_FN (cfun)) + continue; + edge e; edge_iterator ei; /* Forward propagate to each successor. */ @@ -2153,6 +2156,11 @@ pass_vsetvl::forward_demand_fusion (void) /* It's quite obvious, we don't need to propagate itself. */ if (e->dest->index == cfg_bb->index) continue; + /* We don't propagate through critical edges. */ + if (e->flags & EDGE_COMPLEX) + continue; + if (e->dest->index == EXIT_BLOCK_PTR_FOR_FN (cfun)->index) + continue; /* If there is nothing to propagate, just skip it. */ if (!local_dem.valid_or_dirty_p ())