public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Xiao Zeng" <zengxiao@eswincomputing.com>
To: "juzhe.zhong@rivai.ai" <juzhe.zhong@rivai.ai>,
	 gcc-patches <gcc-patches@gcc.gnu.org>
Cc: jeffreyalaw <jeffreyalaw@gmail.com>,
	 research_trasio <research_trasio@irq.a4lg.com>,
	 pan2.li <pan2.li@intel.com>,  Kito.cheng <Kito.cheng@sifive.com>,
	 kito.cheng <kito.cheng@gmail.com>
Subject: Re: Re: [PING^1][PATCH] RISC-V: Add Zvfbfmin extension to the -march= option
Date: Fri, 15 Dec 2023 09:39:46 +0800	[thread overview]
Message-ID: <202312150939458439373@eswincomputing.com> (raw)
In-Reply-To: <2E9F9A34E49FC9D9+2023121509271169694657@rivai.ai>

2023-12-15 09:27  juzhe.zhong <juzhe.zhong@rivai.ai> wrote:
>
 
>CCing Kito.
>
>I am sorry I can't review ABI even though it is vector related, this patch needs kito's review. 
Thank you for a reminder
In fact, in <https://gcc.gnu.org/pipermail/gcc-patches/2023-December/640405.html>,
Palmer Dabbelt has already completed the review.

>
>But I will be available on reviewing the following real vector BF16 intrinsic and auto-vectorization support.
> 
Of course, in the upcoming patch support for BF16, we need to request your code review.

>Thanks.
>
>
>
>juzhe.zhong@rivai.ai
>
>From: Xiao Zeng
>Date: 2023-12-15 09:22
>To: gcc-patches
>CC: jeffreyalaw; research_trasio; juzhe.zhong; pan2.li; Xiao Zeng
>Subject: [PING^1][PATCH] RISC-V: Add Zvfbfmin extension to the -march= option
>This patch would like to add new sub extension (aka Zvfbfmin) to the
>-march= option. It introduces a new data type BF16.
>
>Depending on different usage scenarios, the Zvfbfmin extension may
>depend on 'V' or 'Zve32f'. This patch only implements dependencies
>in scenario of Embedded Processor. In scenario of Application
>Processor, it is necessary to explicitly indicate the dependent
>'V' extension.
>
>You can locate more information about Zvfbfmin from below spec doc.
>
>https://github.com/riscv/riscv-bfloat16/releases/download/20231027/riscv-bfloat16.pdf
>
>gcc/ChangeLog:
>
>* common/config/riscv/riscv-common.cc:
>(riscv_implied_info): Add zvfbfmin item.
>        (riscv_ext_version_table): Ditto.
>        (riscv_ext_flag_table): Ditto.
>* config/riscv/riscv.opt:
>(MASK_ZVFBFMIN): New macro.
>(MASK_VECTOR_ELEN_BF_16): Ditto.
>(TARGET_ZVFBFMIN): Ditto.
>
>gcc/testsuite/ChangeLog:
>
>* gcc.target/riscv/arch-31.c: New test.
>* gcc.target/riscv/arch-32.c: New test.
>* gcc.target/riscv/predef-32.c: New test.
>* gcc.target/riscv/predef-33.c: New test.
>---
>gcc/common/config/riscv/riscv-common.cc    |  4 ++
>gcc/config/riscv/riscv.opt                 |  4 ++
>gcc/testsuite/gcc.target/riscv/arch-31.c   |  5 +++
>gcc/testsuite/gcc.target/riscv/arch-32.c   |  5 +++
>gcc/testsuite/gcc.target/riscv/predef-32.c | 43 ++++++++++++++++++++++
>gcc/testsuite/gcc.target/riscv/predef-33.c | 43 ++++++++++++++++++++++
>6 files changed, 104 insertions(+)
>create mode 100644 gcc/testsuite/gcc.target/riscv/arch-31.c
>create mode 100644 gcc/testsuite/gcc.target/riscv/arch-32.c
>create mode 100644 gcc/testsuite/gcc.target/riscv/predef-32.c
>create mode 100644 gcc/testsuite/gcc.target/riscv/predef-33.c
>
>diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc
>index 4d5a2f874a2..370d00b8f7a 100644
>--- a/gcc/common/config/riscv/riscv-common.cc
>+++ b/gcc/common/config/riscv/riscv-common.cc
>@@ -151,6 +151,7 @@ static const riscv_implied_info_t riscv_implied_info[] =
>   {"zfa", "f"},
>+  {"zvfbfmin", "zve32f"},
>   {"zvfhmin", "zve32f"},
>   {"zvfh", "zve32f"},
>   {"zvfh", "zfhmin"},
>@@ -313,6 +314,7 @@ static const struct riscv_ext_version riscv_ext_version_table[] =
>   {"zfh",       ISA_SPEC_CLASS_NONE, 1, 0},
>   {"zfhmin",    ISA_SPEC_CLASS_NONE, 1, 0},
>+  {"zvfbfmin",  ISA_SPEC_CLASS_NONE, 1, 0},
>   {"zvfhmin",   ISA_SPEC_CLASS_NONE, 1, 0},
>   {"zvfh",      ISA_SPEC_CLASS_NONE, 1, 0},
>@@ -1657,6 +1659,7 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] =
>   {"zve64x",   &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_64},
>   {"zve64f",   &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_32},
>   {"zve64d",   &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_64},
>+  {"zvfbfmin", &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_BF_16},
>   {"zvfhmin",  &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16},
>   {"zvfh",     &gcc_options::x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16},
>@@ -1692,6 +1695,7 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] =
>   {"zfhmin",    &gcc_options::x_riscv_zf_subext, MASK_ZFHMIN},
>   {"zfh",       &gcc_options::x_riscv_zf_subext, MASK_ZFH},
>+  {"zvfbfmin",  &gcc_options::x_riscv_zf_subext, MASK_ZVFBFMIN},
>   {"zvfhmin",   &gcc_options::x_riscv_zf_subext, MASK_ZVFHMIN},
>   {"zvfh",      &gcc_options::x_riscv_zf_subext, MASK_ZVFH},
>diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt
>index 59ce7106ecf..b7c0b72265e 100644
>--- a/gcc/config/riscv/riscv.opt
>+++ b/gcc/config/riscv/riscv.opt
>@@ -285,6 +285,8 @@ Mask(VECTOR_ELEN_FP_64) Var(riscv_vector_elen_flags)
>Mask(VECTOR_ELEN_FP_16) Var(riscv_vector_elen_flags)
>+Mask(VECTOR_ELEN_BF_16) Var(riscv_vector_elen_flags)
>+
>TargetVariable
>int riscv_zvl_flags
>@@ -366,6 +368,8 @@ Mask(ZFHMIN)  Var(riscv_zf_subext)
>Mask(ZFH)     Var(riscv_zf_subext)
>+Mask(ZVFBFMIN) Var(riscv_zf_subext)
>+
>Mask(ZVFHMIN) Var(riscv_zf_subext)
>Mask(ZVFH)    Var(riscv_zf_subext)
>diff --git a/gcc/testsuite/gcc.target/riscv/arch-31.c b/gcc/testsuite/gcc.target/riscv/arch-31.c
>new file mode 100644
>index 00000000000..5180753b905
>--- /dev/null
>+++ b/gcc/testsuite/gcc.target/riscv/arch-31.c
>@@ -0,0 +1,5 @@
>+/* { dg-do compile } */
>+/* { dg-options "-march=rv32i_zvfbfmin -mabi=ilp32f" } */
>+int foo()
>+{
>+}
>diff --git a/gcc/testsuite/gcc.target/riscv/arch-32.c b/gcc/testsuite/gcc.target/riscv/arch-32.c
>new file mode 100644
>index 00000000000..49616832512
>--- /dev/null
>+++ b/gcc/testsuite/gcc.target/riscv/arch-32.c
>@@ -0,0 +1,5 @@
>+/* { dg-do compile } */
>+/* { dg-options "-march=rv64iv_zvfbfmin -mabi=lp64d" } */
>+int foo()
>+{
>+}
>diff --git a/gcc/testsuite/gcc.target/riscv/predef-32.c b/gcc/testsuite/gcc.target/riscv/predef-32.c
>new file mode 100644
>index 00000000000..7417e0d996f
>--- /dev/null
>+++ b/gcc/testsuite/gcc.target/riscv/predef-32.c
>@@ -0,0 +1,43 @@
>+/* { dg-do compile } */
>+/* { dg-options "-O2 -march=rv32i_zvfbfmin -mabi=ilp32f -mcmodel=medlow -misa-spec=20191213" } */
>+
>+int main () {
>+
>+#ifndef __riscv_arch_test
>+#error "__riscv_arch_test"
>+#endif
>+
>+#if __riscv_xlen != 32
>+#error "__riscv_xlen"
>+#endif
>+
>+#if !defined(__riscv_i)
>+#error "__riscv_i"
>+#endif
>+
>+#if !defined(__riscv_f)
>+#error "__riscv_f"
>+#endif
>+
>+#if !defined(__riscv_zvfbfmin)
>+#error "__riscv_zvfbfmin"
>+#endif
>+
>+#if defined(__riscv_v)
>+#error "__riscv_v"
>+#endif
>+
>+#if defined(__riscv_d)
>+#error "__riscv_d"
>+#endif
>+
>+#if defined(__riscv_c)
>+#error "__riscv_c"
>+#endif
>+
>+#if defined(__riscv_a)
>+#error "__riscv_a"
>+#endif
>+
>+  return 0;
>+}
>diff --git a/gcc/testsuite/gcc.target/riscv/predef-33.c b/gcc/testsuite/gcc.target/riscv/predef-33.c
>new file mode 100644
>index 00000000000..74d05bc9719
>--- /dev/null
>+++ b/gcc/testsuite/gcc.target/riscv/predef-33.c
>@@ -0,0 +1,43 @@
>+/* { dg-do compile } */
>+/* { dg-options "-O2 -march=rv64iv_zvfbfmin -mabi=lp64d -mcmodel=medlow -misa-spec=20191213" } */
>+
>+int main () {
>+
>+#ifndef __riscv_arch_test
>+#error "__riscv_arch_test"
>+#endif
>+
>+#if __riscv_xlen != 64
>+#error "__riscv_xlen"
>+#endif
>+
>+#if !defined(__riscv_i)
>+#error "__riscv_i"
>+#endif
>+
>+#if !defined(__riscv_f)
>+#error "__riscv_f"
>+#endif
>+
>+#if !defined(__riscv_d)
>+#error "__riscv_d"
>+#endif
>+
>+#if !defined(__riscv_v)
>+#error "__riscv_v"
>+#endif
>+
>+#if !defined(__riscv_zvfbfmin)
>+#error "__riscv_zvfbfmin"
>+#endif
>+
>+#if defined(__riscv_c)
>+#error "__riscv_c"
>+#endif
>+
>+#if defined(__riscv_a)
>+#error "__riscv_a"
>+#endif
>+
>+  return 0;
>+}
>--
>2.17.1
>
>
 
Thanks
Xiao Zeng


      reply	other threads:[~2023-12-15  1:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-15  1:22 Xiao Zeng
2023-12-15  1:27 ` juzhe.zhong
2023-12-15  1:39   ` Xiao Zeng [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202312150939458439373@eswincomputing.com \
    --to=zengxiao@eswincomputing.com \
    --cc=Kito.cheng@sifive.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jeffreyalaw@gmail.com \
    --cc=juzhe.zhong@rivai.ai \
    --cc=kito.cheng@gmail.com \
    --cc=pan2.li@intel.com \
    --cc=research_trasio@irq.a4lg.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).