From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe33.google.com (mail-vs1-xe33.google.com [IPv6:2607:f8b0:4864:20::e33]) by sourceware.org (Postfix) with ESMTPS id D5AD23858C2D for ; Fri, 12 May 2023 16:17:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D5AD23858C2D 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-vs1-xe33.google.com with SMTP id ada2fe7eead31-43627012261so1073321137.2 for ; Fri, 12 May 2023 09:17:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683908225; x=1686500225; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5XpOnFAdxWvknt+E9BTyNOXuFibeN2VUDCPbfdB/Sh4=; b=elG4vmIS4uGOqext0xVDXZbunj7FnKwv3r7jrgd83P9CTEhHzi7g7SRnALJ7olbRCI QJN9pVgtuqb0nqljiOHU5Umd3SWs1ATqF0ySCa+h3zUzrRJ8SH6+/3rJQ/6p2xIe8RPp 562FBcaJsm4bwx6qZbooKnYe12/GHnnTwwOiD8D0HzMHbSvs15otqT++vqwM5YAFWzTl LJBkIvvDMLX+aarXpZzG2Q+V7W0+SHMbHcM30WqdbPrp64CqWskAXBeSzx1K548D1A6O rv7Sjfy4KjVNCD0GoiOfQTxiE4GXem+KTqRCq9r/59ru/y+I1qjjoUBAoMErOZ3tYl65 4Rsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683908225; x=1686500225; 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=5XpOnFAdxWvknt+E9BTyNOXuFibeN2VUDCPbfdB/Sh4=; b=Hfe0AaJUdIkOi9h1ungvcdMfVT2t8s1OuPyLhbI13bwFS1gbLISWB0ZNX2LaGBUaa2 DIR/2Q3Y7uJXN8fom2pTNzyJo7+2VcpSIsr1Vdol2vqxmVQWQRHFlFMfPdGO8yzxGNp2 399BeWQTh7vyOuqj7ihVR8Pg5Nt6CotD4u70teTHtPXL1ZLzZ+BTY3QySolvlxOYYFjO 2N7C3pynoCZKLWPXuD7eTaH5tddbvA6JABGbzO4yLXurdQqmummhpW0sj4aiW7zRgKZj JnLwOKAkEcqZUwc0Zx5QeeKzKHRBHfq+8YyFswGd4qOiJsLV/Aaak7x7S3W/4xe3xzdI j0uQ== X-Gm-Message-State: AC+VfDwVdrIrndl+U8+apvakZRSigd/tKttfyrUOTOPIdcTlCmQ70zgk 7r86gpalyO56pIMdYie5t4ei2IjopgNSK2A2KjE= X-Google-Smtp-Source: ACHHUZ7mnuWK64xF5QgxwLf1OP0LdUWbQDTgVYmGial2aH9LJGhzbZALgDBgk5aGHqkYBh+AIOwIVp25sbB2uuT+M6U= X-Received: by 2002:a05:6102:418:b0:434:750e:de3c with SMTP id d24-20020a056102041800b00434750ede3cmr10608604vsq.19.1683908224702; Fri, 12 May 2023 09:17:04 -0700 (PDT) MIME-Version: 1.0 References: <20230512154655.613780-1-juzhe.zhong@rivai.ai> In-Reply-To: <20230512154655.613780-1-juzhe.zhong@rivai.ai> From: Kito Cheng Date: Sat, 13 May 2023 00:16:53 +0800 Message-ID: Subject: Re: [PATCH V4] RISC-V: Using merge approach to optimize repeating sequence in vec_init To: juzhe.zhong@rivai.ai Cc: gcc-patches@gcc.gnu.org, palmer@dabbelt.com, jeffreyalaw@gmail.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,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: > +/* Get the mask for merge approach. > + > + Consider such following case: > + {a, b, a, b, a, b, a, b, a, b, a, b, a, b, a, b} > + To merge "a", the mask should be 1010.... > + To merge "b", the mask should be 0101.... > +*/ > +rtx > +rvv_builder::get_merge_mask_bitfield (unsigned int index) const > +{ > + uint64_t base_mask = (1ULL << index); > + uint64_t mask = 0; > + for (unsigned int i = 0; i < (64 / npatterns ()); i++) What the magic 64 means? ... > +static void > +expand_vector_init_merge_repeating_sequence (rtx target, > + const rvv_builder &builder) > +{ > + machine_mode mask_mode; > + gcc_assert (get_mask_mode (builder.mode ()).exists (&mask_mode)); > + > + machine_mode dup_mode = builder.mode (); > + if (known_gt (GET_MODE_SIZE (dup_mode), BYTES_PER_RISCV_VECTOR)) > + { > + poly_uint64 nunits > + = exact_div (BYTES_PER_RISCV_VECTOR, builder.inner_units ()); > + gcc_assert ( > + get_vector_mode (builder.inner_int_mode (), nunits).exists (&dup_mode)); gcc_assert will removed at release mode, so it's not you want I guess? > + } > + else > + { > + if (FLOAT_MODE_P (dup_mode)) > + gcc_assert (get_vector_mode (builder.inner_int_mode (), > + GET_MODE_NUNITS (dup_mode)) > + .exists (&dup_mode)); Same issue > + } > + > + machine_mode dup_mask_mode; > + gcc_assert (get_mask_mode (dup_mode).exists (&dup_mask_mode)); Same issue