This patch is somewhat corrupt...but anyway, fixed and pushed to trunk

On Thu, May 8, 2025 at 12:43 PM Dongyan Chen
<chendong...@isrc.iscas.ac.cn> wrote:
>
> This patch support zilsd and zclsd[1] extensions.
> To enable GCC to recognize and process zilsd and zclsd extension
> correctly at compile time.
>
> [1] https://github.com/riscv/riscv-zilsd
>
> Changes for v3:
> - Fix the error of testcases and merge the fail testcases into one file
> and rename the file.
> Changes for v2:
> - Remove the addition of zilsd and zclsd extension in
> gcc/common/config/riscv/riscv-ext-bitmask.def
> - Fix a bug with zilsd and zclsd extension dependency in
> gcc/common/config/riscv/riscv-common.cc
>
> gcc/ChangeLog:
>
>      * common/config/riscv/riscv-common.cc
> (riscv_subset_list::check_conflict_ext): New extension.
>      * config/riscv/riscv.opt: Ditto.
>
> gcc/testsuite/ChangeLog:
>
>      * gcc.target/riscv/arch-49.c: New test.
>      * gcc.target/riscv/arch-50.c: New test.
>
> ---
>   gcc/common/config/riscv/riscv-common.cc  | 16 ++++++++++++++++
>   gcc/config/riscv/riscv.opt               |  4 ++++
>   gcc/testsuite/gcc.target/riscv/arch-49.c |  5 +++++
>   gcc/testsuite/gcc.target/riscv/arch-50.c |  9 +++++++++
>   4 files changed, 34 insertions(+)
>   create mode 100644 gcc/testsuite/gcc.target/riscv/arch-49.c
>   create mode 100644 gcc/testsuite/gcc.target/riscv/arch-50.c
>
> diff --git a/gcc/common/config/riscv/riscv-common.cc
> b/gcc/common/config/riscv/riscv-common.cc
> index ca14eb96b253..8c477fa227be 100644
> --- a/gcc/common/config/riscv/riscv-common.cc
> +++ b/gcc/common/config/riscv/riscv-common.cc
> @@ -115,6 +115,9 @@ static const riscv_implied_info_t riscv_implied_info[] =
>     {"zicfiss", "zimop"},
>     {"zicfilp", "zicsr"},
>
> +  {"zclsd", "zilsd"},
> +  {"zclsd", "zca"},
> +
>     {"zk", "zkn"},
>     {"zk", "zkr"},
>     {"zk", "zkt"},
> @@ -371,6 +374,9 @@ static const struct riscv_ext_version
> riscv_ext_version_table[] =
>     {"zicntr", ISA_SPEC_CLASS_NONE, 2, 0},
>     {"zihpm",  ISA_SPEC_CLASS_NONE, 2, 0},
>
> +  {"zilsd",  ISA_SPEC_CLASS_NONE, 1, 0},
> +  {"zclsd",  ISA_SPEC_CLASS_NONE, 1, 0},
> +
>     {"zk",    ISA_SPEC_CLASS_NONE, 1, 0},
>     {"zkn",   ISA_SPEC_CLASS_NONE, 1, 0},
>     {"zks",   ISA_SPEC_CLASS_NONE, 1, 0},
> @@ -1347,6 +1353,14 @@ riscv_subset_list::check_conflict_ext ()
>       error_at (m_loc, "%<-march=%s%>: zcf extension supports in rv32 only",
>             m_arch);
>
> +  if (lookup ("zilsd") && m_xlen == 64)
> +    error_at (m_loc, "%<-march=%s%>: zilsd extension supports in rv32
> only",
> +          m_arch);
> +
> +  if (lookup ("zclsd") && m_xlen == 64)
> +    error_at (m_loc, "%<-march=%s%>: zclsd extension supports in rv32
> only",
> +          m_arch);
> +
>     if (lookup ("zfinx") && lookup ("f"))
>       error_at (m_loc,
>             "%<-march=%s%>: z*inx conflicts with floating-point "
> @@ -1687,6 +1701,7 @@ static const riscv_ext_flag_table_t
> riscv_ext_flag_table[] =
>     RISCV_EXT_FLAG_ENTRY ("ziccif",      x_riscv_zi_subext, MASK_ZICCIF),
>     RISCV_EXT_FLAG_ENTRY ("zicclsm",     x_riscv_zi_subext, MASK_ZICCLSM),
>     RISCV_EXT_FLAG_ENTRY ("ziccrse",     x_riscv_zi_subext, MASK_ZICCRSE),
> +  RISCV_EXT_FLAG_ENTRY ("zilsd",       x_riscv_zi_subext, MASK_ZILSD),
>
>     RISCV_EXT_FLAG_ENTRY ("zicboz", x_riscv_zicmo_subext, MASK_ZICBOZ),
>     RISCV_EXT_FLAG_ENTRY ("zicbom", x_riscv_zicmo_subext, MASK_ZICBOM),
> @@ -1770,6 +1785,7 @@ static const riscv_ext_flag_table_t
> riscv_ext_flag_table[] =
>     RISCV_EXT_FLAG_ENTRY ("zcd",  x_riscv_zc_subext, MASK_ZCD),
>     RISCV_EXT_FLAG_ENTRY ("zcmp", x_riscv_zc_subext, MASK_ZCMP),
>     RISCV_EXT_FLAG_ENTRY ("zcmt", x_riscv_zc_subext, MASK_ZCMT),
> +  RISCV_EXT_FLAG_ENTRY ("zclsd", x_riscv_zc_subext, MASK_ZCLSD),
>
>     RISCV_EXT_FLAG_ENTRY ("svade",       x_riscv_sv_subext, MASK_SVADE),
>     RISCV_EXT_FLAG_ENTRY ("svadu",       x_riscv_sv_subext, MASK_SVADU),
> diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt
> index 80593ee139c1..ba5805e95452 100644
> --- a/gcc/config/riscv/riscv.opt
> +++ b/gcc/config/riscv/riscv.opt
> @@ -257,6 +257,8 @@ Mask(ZICFISS)     Var(riscv_zi_subext)
>
>   Mask(ZICFILP)     Var(riscv_zi_subext)
>
> +Mask(ZILSD)       Var(riscv_zi_subext)
> +
>   TargetVariable
>   int riscv_za_subext
>
> @@ -463,6 +465,8 @@ Mask(ZCMP) Var(riscv_zc_subext)
>
>   Mask(ZCMT) Var(riscv_zc_subext)
>
> +Mask(ZCLSD) Var(riscv_zc_subext)
> +
>   Mask(XCVBI) Var(riscv_xcv_subext)
>
>   TargetVariable
> diff --git a/gcc/testsuite/gcc.target/riscv/arch-49.c
> b/gcc/testsuite/gcc.target/riscv/arch-49.c
> new file mode 100644
> index 000000000000..452c04e42f6d
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/riscv/arch-49.c
> @@ -0,0 +1,5 @@
> +/* { dg-do compile } */
> +/* { dg-options "-march=rv32gc_zilsd_zclsd -mabi=ilp32d" } */
> +int foo()
> +{
> +}
> diff --git a/gcc/testsuite/gcc.target/riscv/arch-50.c
> b/gcc/testsuite/gcc.target/riscv/arch-50.c
> new file mode 100644
> index 000000000000..4fc8608366b8
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/riscv/arch-50.c
> @@ -0,0 +1,9 @@
> +/* { dg-do compile } */
> +/* { dg-options "-march=rv64gc_zilsd_zclsd -mabi=ilp32d" } */
> +int foo()
> +{
> +}
> +/* { dg-error "'-march=rv64gc_zilsd_zclsd': zilsd extension supports in
> rv32 only" "" { target *-*-* } 0 } */
> +/* { dg-error "'-march=rv64gc_zilsd_zclsd': zclsd extension supports in
> rv32 only" "" { target *-*-* } 0 } */
> +/* { dg-error
> "'-march=rv64imafdc_zicsr_zifencei_zilsd_zmmul_zaamo_zalrsc_zca_zcd_zclsd':
> zilsd extension supports in rv32 only" "" { target *-*-* } 0 } */
> +/* { dg-error
> "'-march=rv64imafdc_zicsr_zifencei_zilsd_zmmul_zaamo_zalrsc_zca_zcd_zclsd':
> zclsd extension supports in rv32 only" "" { target *-*-* } 0 } */
> --
> 2.43.0
>
>
> 在 2025/5/6 21:57, Jeff Law 写道:
> >
> >
> > On 3/17/25 8:26 AM, Dongyan Chen wrote:
> >> This patch support zilsd and zclsd[1] extensions.
> >> To enable GCC to recognize and process zilsd and zclsd extension
> >> correctly at compile time.
> >>
> >> [1] https://github.com/riscv/riscv-zilsd
> >>
> >> Changes for v2:
> >> - Remove the addition of zilsd and zclsd extension in
> >> gcc/common/config/riscv/riscv-ext-bitmask.def
> >> - Fix a bug with zilsd and zclsd extension dependency in
> >> gcc/common/config/riscv/riscv-common.cc
> >>
> >> gcc/ChangeLog:
> >>
> >>     * common/config/riscv/riscv-common.cc
> >> (riscv_subset_list::check_conflict_ext): New extension.
> >>     * config/riscv/riscv.opt: Ditto.
> >>
> >> gcc/testsuite/ChangeLog:
> >>
> >>     * gcc.target/riscv/arch-45.c: New test.
> >>     * gcc.target/riscv/arch-46.c: New test.
> >>     * gcc.target/riscv/arch-47.c: New test.
> > Note this patch failed pre-commit CI testing.  That needs to be fixed
> > before the patch can move forward:
> >
> >> https://github.com/ewlu/gcc-precommit-ci/issues/3169#issuecomment-2729810165
> >>
> >
> >
> > Jeff
>

Reply via email to