From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ua1-x92b.google.com (mail-ua1-x92b.google.com [IPv6:2607:f8b0:4864:20::92b]) by sourceware.org (Postfix) with ESMTPS id 245193858D1E for ; Mon, 17 Jul 2023 07:00:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 245193858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ua1-x92b.google.com with SMTP id a1e0cc1a2514c-7948c329363so1472727241.0 for ; Mon, 17 Jul 2023 00:00:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689577255; x=1692169255; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qFmIDRzz+8mSlPYJ/wkiopAE4WUUmdLtdP7wnWAA2fU=; b=cAeQhvNUsI+Ouu9NO39TuPo+itfMxaAbrzT1kyuz0CBqxH8rX3I8WGOiObPIGmsHtg vgW8bES1XyVmxsPElgdV9uhfIOqzLizpxlssuwEaGY7P7GHupAiFRwzfd+xgO1IbumiM gLyK96beLJ9zCJcftE3FkM+TKQwDr7nIaTf1FDkhduX6D21W6AzpnFuI0r9peygQshi/ V6MJOKGPfRj0FyUfEisOTqnZKa7T0BrFTxFVZvTKmzyeV6EJj1T7bv2zGl35qQkX1NA7 On7X5uDmeYrikjv2WcD9aJLmLwhunByxIAyvYxYZGrpqZMtDO7RO43FZbqPYyl59nDz7 8mFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689577255; x=1692169255; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qFmIDRzz+8mSlPYJ/wkiopAE4WUUmdLtdP7wnWAA2fU=; b=VOGvTbo5ofZ6zLLF4Lhr71Ms9oNAF2bbh7XEDMqxmLaCQ0aGNfX3nsbX8rEsWAyWr0 RpLq9/p6Fv+11VlSbcQXez7Y7KaDV81KsQkbCyCUeTJoVabVvJ9kjyec9aKmuR9m8So+ 1Egd4eQOVv+Iv880uzVWHkgkTtg/TZyIYemtCbLxUH5T41dDRtkbS/VZYUC6SPC7zKRP TC5xYyDKl0rFFFUc6xcnabjtJnIyNZyXH+kfnIAusGR2Zxdjcwa6Do0WH36h5uFFQyDs kSR1+p/TZXLKCoq3QsLZP9pd4/LjDxuNEoqDEgHXfFzsw4cC46M2BdfqXglCaUI9fRXI ebrQ== X-Gm-Message-State: ABy/qLbz7/lcMWdFfTMAs4yWUzLz4oisB6P5nonTSCOg1l2VoF15Jls/ qk22AfeZNG05I+PmZPIg0YjHeemvhWKmKw46ZFA= X-Google-Smtp-Source: APBJJlFUs7nF3dQ+siK1Tfq8SJi8SLdx+6MCWmgdB31KUkuAPmoQv4Y173TaErKm3mrQcB8jUOHtDCImwu6qJryVNvE= X-Received: by 2002:a67:e2c1:0:b0:443:6e7b:ab8 with SMTP id i1-20020a67e2c1000000b004436e7b0ab8mr4270448vsm.5.1689577255401; Mon, 17 Jul 2023 00:00:55 -0700 (PDT) MIME-Version: 1.0 References: <20230714123038.1017670-1-juzhe.zhong@rivai.ai> In-Reply-To: <20230714123038.1017670-1-juzhe.zhong@rivai.ai> From: Kito Cheng Date: Mon, 17 Jul 2023 15:00:44 +0800 Message-ID: Subject: Re: [PATCH] RISC-V: Support non-SLP unordered reduction To: juzhe.zhong@rivai.ai Cc: gcc-patches@gcc.gnu.org, kito.cheng@sifive.com, palmer@rivosinc.com, rdapp.gcc@gmail.com, jeffreyalaw@gmail.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,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 List-Id: > @@ -247,6 +248,7 @@ void emit_vlmax_cmp_mu_insn (unsigned, rtx *); > void emit_vlmax_masked_mu_insn (unsigned, int, rtx *); > void emit_scalar_move_insn (unsigned, rtx *); > void emit_nonvlmax_integer_move_insn (unsigned, rtx *, rtx); > +//void emit_vlmax_reduction_insn (unsigned, rtx *); Plz drop this. > diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc > index 586dc8e5379..97a9dad8a77 100644 > --- a/gcc/config/riscv/riscv-vsetvl.cc > +++ b/gcc/config/riscv/riscv-vsetvl.cc > @@ -646,7 +646,8 @@ gen_vsetvl_pat (enum vsetvl_type insn_type, const vl_vtype_info &info, rtx vl) > } > > static rtx > -gen_vsetvl_pat (rtx_insn *rinsn, const vector_insn_info &info) > +gen_vsetvl_pat (rtx_insn *rinsn, const vector_insn_info &info, > + rtx vl = NULL_RTX) > { > rtx new_pat; > vl_vtype_info new_info = info; > @@ -657,7 +658,7 @@ gen_vsetvl_pat (rtx_insn *rinsn, const vector_insn_info &info) > if (vsetvl_insn_p (rinsn) || vlmax_avl_p (info.get_avl ())) > { > rtx dest = get_vl (rinsn); rtx dest = vl ? vl : get_vl (rinsn); > - new_pat = gen_vsetvl_pat (VSETVL_NORMAL, new_info, dest); > + new_pat = gen_vsetvl_pat (VSETVL_NORMAL, new_info, vl ? vl : dest); and keep dest here. > } > else if (INSN_CODE (rinsn) == CODE_FOR_vsetvl_vtype_change_only) > new_pat = gen_vsetvl_pat (VSETVL_VTYPE_CHANGE_ONLY, new_info, NULL_RTX); Should we handle vl is non-null case in else-if and else case? Add `assert (vl == NULL_RTX)` if not handle. > @@ -818,7 +819,8 @@ change_insn (rtx_insn *rinsn, rtx new_pat) > print_rtl_single (dump_file, PATTERN (rinsn)); > } > > - validate_change (rinsn, &PATTERN (rinsn), new_pat, false); > + bool change_p = validate_change (rinsn, &PATTERN (rinsn), new_pat, false); > + gcc_assert (change_p); I think we could create a wrapper for validate_change to make sure that return true, and also use that wrapper for all other call sites? e.g. validate_change_or_fail?