On Mon, Jul 29, 2024 at 5:26 AM Jiawei <jia...@iscas.ac.cn> wrote:
>
> This patch adds support for RISC-V RVA23 and RVB23 Profiles[1],
> which depend on the base RISC-V Profiles support[2].
>
> [1] 
> https://github.com/riscv/riscv-profiles/releases/tag/rva23-v0.4-rvb23-v0.1-internal-review
> [2] https://gcc.gnu.org/pipermail/gcc-patches/2024-July/658082.html
>
>
> gcc/ChangeLog:
>
>         * common/config/riscv/riscv-common.cc: New Profiles.
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.target/riscv/attribute-22.c: New test.
>         * gcc.target/riscv/attribute-23.c: New test.
>
> ---
>  gcc/common/config/riscv/riscv-common.cc       | 20 +++++++++++++++++++
>  gcc/testsuite/gcc.target/riscv/attribute-22.c | 11 ++++++++++
>  gcc/testsuite/gcc.target/riscv/attribute-23.c | 10 ++++++++++
>  3 files changed, 41 insertions(+)
>  create mode 100644 gcc/testsuite/gcc.target/riscv/attribute-22.c
>  create mode 100644 gcc/testsuite/gcc.target/riscv/attribute-23.c
>
> diff --git a/gcc/common/config/riscv/riscv-common.cc 
> b/gcc/common/config/riscv/riscv-common.cc
> index 23ae07fe2f3..e6e8adf5e1b 100644
> --- a/gcc/common/config/riscv/riscv-common.cc
> +++ b/gcc/common/config/riscv/riscv-common.cc
> @@ -323,6 +323,9 @@ static const struct riscv_ext_version 
> riscv_ext_version_table[] =
>    {"zicclsm",  ISA_SPEC_CLASS_NONE, 1, 0},
>    {"ziccrse",  ISA_SPEC_CLASS_NONE, 1, 0},
>
> +  {"zimop",  ISA_SPEC_CLASS_NONE, 1, 0},
> +  {"zcmop",  ISA_SPEC_CLASS_NONE, 1, 0},
> +

Independent of the fact that this will be delayed until ratification:
I would prefer to have this in a separate patch as Zimop and Zcmop are
dependencies.
Since Zimop and Zcmop are already ratified, this does not have a
dependency for the profiles ratification.


>    {"zicntr", ISA_SPEC_CLASS_NONE, 2, 0},
>    {"zihpm",  ISA_SPEC_CLASS_NONE, 2, 0},
>
> @@ -467,6 +470,23 @@ static const riscv_profiles riscv_profiles_table[] =
>     "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
>     "_zicboz_zfhmin_zkt"},
>
> +  /* RVA23 contains all mandatory base ISA for RVA22U64 and the new extension
> +     'v,zihintntl,zvfhmin,zvbb,zvkt,zicond,zimop,zcmop,zfa,zawrs' as 
> mandatory
> +     extensions.  */
> +  {"RVA23U64", "rv64imafdcv_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa"
> +   "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
> +   "_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl_zicond_zimop_zcmop_zcb"
> +   "_zfa_zawrs"},
> +
> +
> +  /* RVB23 contains all mandatory base ISA for RVA22U64 and the new extension
> +     'zihintntl,zicond,zimop,zcmop,zfa,zawrs' as mandatory
> +     extensions.  */
> +  {"RVB23U64", "rv64imafdc_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa"
> +   "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
> +   "_zicboz_zfhmin_zkt_zihintntl_zicond_zimop_zcmop_zcb"
> +   "_zfa_zawrs"},
> +
>    /* Currently we do not define S/M mode Profiles in gcc part.  */
>
>    /* Terminate the list.  */
> diff --git a/gcc/testsuite/gcc.target/riscv/attribute-22.c 
> b/gcc/testsuite/gcc.target/riscv/attribute-22.c
> new file mode 100644
> index 00000000000..0bbb3242ddd
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/riscv/attribute-22.c
> @@ -0,0 +1,11 @@
> +/* { dg-do compile } */
> +/* { dg-options "-march=RVA23U64 -mabi=lp64" } */
> +
> +void foo(){}
> +
> +/* { dg-final { scan-assembler ".attribute arch, 
> \"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0"
> +"_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0"
> +_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0"
> +_za64rs1p0_zaamo1p0_zalrsc1p0_zawrs1p0_zfa1p0_zfhmin1p0_zca1p0_zcb1p0_zcd1p0_zcmop1p0"
> +_zba1p0_zbb1p0_zbs1p0_zkt1p0_zvbb1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0"
> +_zvfhmin1p0_zvkb1p0_zvkt1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0\"" } } */
> diff --git a/gcc/testsuite/gcc.target/riscv/attribute-23.c 
> b/gcc/testsuite/gcc.target/riscv/attribute-23.c
> new file mode 100644
> index 00000000000..459b5641ca3
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/riscv/attribute-23.c
> @@ -0,0 +1,10 @@
> +/* { dg-do compile } */
> +/* { dg-options "-march=RVB23U64 -mabi=lp64" } */
> +
> +void foo(){}
> +
> +/* { dg-final { scan-assembler ".attribute arch, 
> \"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0"
> +"_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0"
> +"_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0"
> +"_zaamo1p0_zalrsc1p0_zawrs1p0_zfa1p0_zfhmin1p0_zca1p0_zcb1p0_zcd1p0_zcmop1p0_zba1p0"
> +"_zbb1p0_zbs1p0_zkt1p0\"" } } */
> --
> 2.25.1
>

Reply via email to