2023-12-15 09:27  juzhe.zhong <juzhe.zh...@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.zh...@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 via email to