From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2093) id F058B3858D28; Thu, 26 Jan 2023 19:12:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F058B3858D28 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1674760335; bh=owd7c4a/ySCoyJqzAb7SjHIadGc+aVu+EQuRSG0EX3Y=; h=From:To:Subject:Date:From; b=RcLJoxi+XP6Y75bU6LVCaIHXusLDaokcQmXrbX6ZLntynfW9OPbULYZ9lFaTqf/Py 3WsTbogfCBBTry3Q+y8/T9ZK8gikxzsxJqOBpLvVTPja2xD0CDB1l/Rm0FPHGQKL2Q DL5QCMtkvEcR6g0TB0HwyclYtvlv1a5EZqqrHAJk= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Kito Cheng To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-5407] RISC-V: Simplify codes of changing vsetvl instruction X-Act-Checkin: gcc X-Git-Author: Ju-Zhe Zhong X-Git-Refname: refs/heads/master X-Git-Oldrev: 8d8cc482ea49fd6fed81b47c948263fd82a1936b X-Git-Newrev: aef20243b842284587023306e922e483b2401f34 Message-Id: <20230126191215.F058B3858D28@sourceware.org> Date: Thu, 26 Jan 2023 19:12:15 +0000 (GMT) List-Id: https://gcc.gnu.org/g:aef20243b842284587023306e922e483b2401f34 commit r13-5407-gaef20243b842284587023306e922e483b2401f34 Author: Ju-Zhe Zhong Date: Tue Jan 3 15:24:36 2023 +0800 RISC-V: Simplify codes of changing vsetvl instruction This patch is NFC patch. I move these code as a function since we will reuse it in the following patch (Refine phase 3 of VSETVL PASS) gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function. (pass_vsetvl::compute_global_backward_infos): Simplify codes. Diff: --- gcc/config/riscv/riscv-vsetvl.cc | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc index 4d0e97d7ed7..f6f24f73813 100644 --- a/gcc/config/riscv/riscv-vsetvl.cc +++ b/gcc/config/riscv/riscv-vsetvl.cc @@ -880,6 +880,25 @@ change_insn (function_info *ssa, insn_change change, insn_info *insn, return true; } +static void +change_vsetvl_insn (const insn_info *insn, const vector_insn_info &info) +{ + rtx_insn *rinsn; + if (vector_config_insn_p (insn->rtl ())) + { + rinsn = insn->rtl (); + gcc_assert (vsetvl_insn_p (rinsn) && "Can't handle X0, rs1 vsetvli yet"); + } + else + { + gcc_assert (has_vtype_op (insn->rtl ())); + rinsn = PREV_INSN (insn->rtl ()); + gcc_assert (vector_config_insn_p (rinsn)); + } + rtx new_pat = gen_vsetvl_pat (rinsn, info); + change_insn (rinsn, new_pat); +} + avl_info::avl_info (const avl_info &other) { m_value = other.get_value (); @@ -1941,7 +1960,6 @@ pass_vsetvl::compute_global_backward_infos (void) /* Backward propagate to each predecessor. */ FOR_EACH_EDGE (e, ei, cfg_bb->preds) { - rtx new_pat; auto &block_info = m_vector_manager->vector_block_infos[e->src->index]; @@ -2011,21 +2029,7 @@ pass_vsetvl::compute_global_backward_infos (void) be_merged = block_info.local_dem; vector_insn_info new_info = be_merged.merge (prop, true); - rtx_insn *rinsn; - if (vector_config_insn_p (new_info.get_insn ()->rtl ())) - { - rinsn = new_info.get_insn ()->rtl (); - gcc_assert (vsetvl_insn_p (rinsn) - && "Can't handle X0, rs1 vsetvli yet"); - } - else - { - gcc_assert (has_vtype_op (new_info.get_insn ()->rtl ())); - rinsn = PREV_INSN (new_info.get_insn ()->rtl ()); - gcc_assert (vector_config_insn_p (rinsn)); - } - new_pat = gen_vsetvl_pat (rinsn, new_info); - change_insn (rinsn, new_pat); + change_vsetvl_insn (new_info.get_insn (), new_info); if (block_info.local_dem == block_info.reaching_out) block_info.local_dem = new_info; block_info.reaching_out = new_info;