From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id 6E5723858438 for ; Thu, 7 Dec 2023 12:38:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6E5723858438 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6E5723858438 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::532 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701952682; cv=none; b=PgdPPSc+Y2/84EnWg3l6g2FXIQGTdT6ompL3g5P3qZ4OiNy5sVTn43Y7LACSgA0R0+9dOtsFF2WK0+8AO/lKP3SZ+KveRS07ymHdfyBXAmTnU0c6dnM+wpee0152Z8xIwxYg4KGHEVDmSV71bUf9qSWKSygQPHjZtKL+270bHpA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701952682; c=relaxed/simple; bh=Bi6Otc7XGiNAiyMX+EzNRDzU8ed2DuGSL/r3AvNokjM=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=THpwrLqrhcCiwcFCocTKm447Gz5+/q34YFL70wU3iwyVb8S/NUA9sHqn9v1kI4nF/6a1J1akvB2u8+eCcZGydyktt6Et6ZKuyBQPSJX5FiRhXO2OMezd0pnTrhk7Cv0BdmqgP9UnuR+R/+tA0BkFGvpXW2Ky3ggXc4jVEwV6Y3A= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-54c5ed26cf6so1163053a12.3 for ; Thu, 07 Dec 2023 04:38:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701952679; x=1702557479; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=l4Wo/j/j91/lkVWWPvndR1MD05TvUmV9NzkxXGtgtWU=; b=G5RQxC9zaKyETe+g+eD0PngwGHnO2OvxnKMWNlOIWE8C4dWsUvHZQoIfm13CfYF35A pH/Ds9KRB8s0i1pKYxO2H8Z3N84OamCZqr5cYSWkMKRkiahDNwktMfNB3pLrPqeL94bg 4vuI1RHwV1ql73AKgNqLxkti8+z3SvAhMA5KVF9RM+IscgIuVGrgRtkVL1EUZPSaEcSN Uc77JTm9hKyyU1gYkDIhBVM2WknuWQoCU8x2cj8sq8DMa6d3yAxRODTLJ564eQ3UquY3 VXk/Q7U+vbzhgnTATtjXWeY9B4MBKK9j1Bo+Ww1eRYWhsUK4biiwZdKHynzRWUY3ZW/H CdjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701952679; x=1702557479; 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=l4Wo/j/j91/lkVWWPvndR1MD05TvUmV9NzkxXGtgtWU=; b=B+RqiuyP5JtU646fyoscmSe99q5JVD6fodbWfz0jRkqUqh3v07VP7d79oA0m1VYxP+ NYn6PxpbKD9llO8N5GnK9ra7Uo+RYoxfg7XUNaB3PDe3I2UHahZtgMDlKoD8KhqvbYKU Mz9da3DAYoj+yQhRBpW2XNj34NEz53GwjQ2NZtI8O5jqAb9LPh/vb26aZeNgg+pve4tv q1olGL0GjwdXVnulUE+3fPPGmmOnsPbs/XdH2p2MvGQFndZMno765SHriIepcLx4Bgq+ txwBSvQOZO/fP2eklywIItEPIwvoOZpPHTD1GnoM9Wm0QWe3RCCl2F8fbgmZOiiumu/L RYqg== X-Gm-Message-State: AOJu0YwYQd7ctmqe5FwNetqBhM+amcfLyqnSuMXoQDED+FABN5AWPFC5 x78DvQhNd0QjlEPlgpCh3eULcx/wWRCcfleM7eY= X-Google-Smtp-Source: AGHT+IFdcNvTugXz17PVrXWnstJjSQsUcyA/mzPoGNGqIiPmy/rtDV0EdkoifQWfwSWx7vKPVYrG6QyvJFGEYssH9i0= X-Received: by 2002:a17:906:c2ce:b0:a19:a19b:55e1 with SMTP id ch14-20020a170906c2ce00b00a19a19b55e1mr1592691ejb.113.1701952678928; Thu, 07 Dec 2023 04:37:58 -0800 (PST) MIME-Version: 1.0 References: <20231207121727.1940-1-wangfeng@eswincomputing.com> In-Reply-To: <20231207121727.1940-1-wangfeng@eswincomputing.com> From: Kito Cheng Date: Thu, 7 Dec 2023 20:37:45 +0800 Message-ID: Subject: Re: [PATCH] RISC-V: Add avail interface into function_group_info To: Feng Wang Cc: gcc-patches@gcc.gnu.org, jeffreyalaw@gmail.com, juzhe.zhong@rivai.ai Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.9 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: > #ifndef DEF_RVV_FUNCTION > -#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) > +#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL) #define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, ...) And add a comment to mention 5th argument is optional for AVAIL. > #endif > > /* Internal helper functions for gimple fold use. */ > -DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops) > -DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops) > +DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, always) > +DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, always) Then you don't need to add `always` if it's `always`. > diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc > index 6330a3a41c3..dac638b6bcc 100644 > --- a/gcc/config/riscv/riscv-vector-builtins.cc > +++ b/gcc/config/riscv/riscv-vector-builtins.cc > @@ -51,6 +51,7 @@ > #include "riscv-vector-builtins.h" > #include "riscv-vector-builtins-shapes.h" > #include "riscv-vector-builtins-bases.h" > +#include "riscv-vector-builtins-avail.h" > > using namespace riscv_vector; > > @@ -2684,8 +2685,9 @@ static CONSTEXPR const function_type_info function_types[] = { > > /* A list of all RVV intrinsic functions. */ > static function_group_info function_groups[] = { > -#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \ > - {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO}, > +#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL) \ #define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, ...) __VA_ARGS__ {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\ __VA_ARGS__}, > + {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\ > + riscv_vector_avail_ ## AVAIL}, > #include "riscv-vector-builtins-functions.def" > }; > > diff --git a/gcc/config/riscv/riscv-vector-builtins.h b/gcc/config/riscv/riscv-vector-builtins.h > index cd8ccab1724..74d50c2f849 100644 > --- a/gcc/config/riscv/riscv-vector-builtins.h > +++ b/gcc/config/riscv/riscv-vector-builtins.h > @@ -232,6 +232,8 @@ struct function_group_info > on the index value. */ > const predication_type_index *preds; > const rvv_op_info ops_infos; > + /* Whether the function is available. */ > + unsigned int (*avail) (void); Then write a constexpr constructor like this commit: https://github.com/gcc-mirror/gcc/commit/9e12010b5e724277ea44c300630802f464407d8d#diff-d6f7db0db31bfb339b01bec450f1b905381eb4730cc5ab2b2794971e34647d64R46-R49 > }; > > class GTY ((user)) function_instance > -- > 2.17.1 >