Thanks, applied to master. --Philipp. On Mon, 3 Jul 2023 at 15:42, Kito Cheng <kito.ch...@gmail.com> wrote:
> Thanks, LGTM :) > > Christoph Muellner <christoph.muell...@vrull.eu>於 2023年7月3日 週一,19:08寫道: > >> From: Christoph Müllner <christoph.muell...@vrull.eu> >> >> This series adds basic support for the vector crypto extensions: >> * Zvbb >> * Zvbc >> * Zvkg >> * Zvkned >> * Zvkhn[a,b] >> * Zvksed >> * Zvksh >> * Zvkn >> * Zvknc >> * Zvkng >> * Zvks >> * Zvksc >> * Zvksg >> * Zvkt >> >> This patch is based on the v20230620 version of the Vector Cryptography >> specification. The specification is frozen and can be found here: >> https://github.com/riscv/riscv-crypto/releases/tag/v20230620 >> >> Binutils support has been merged upstream a few days ago. >> >> All extensions come with tests for the feature test macros. >> >> gcc/ChangeLog: >> >> * common/config/riscv/riscv-common.cc: Add support for zvbb, >> zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn, >> zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets. >> * config/riscv/arch-canonicalize: Add canonicalization info for >> zvkn, zvknc, zvkng, zvks, zvksc, zvksg. >> * config/riscv/riscv-opts.h (MASK_ZVBB): New macro. >> (MASK_ZVBC): Likewise. >> (TARGET_ZVBB): Likewise. >> (TARGET_ZVBC): Likewise. >> (MASK_ZVKG): Likewise. >> (MASK_ZVKNED): Likewise. >> (MASK_ZVKNHA): Likewise. >> (MASK_ZVKNHB): Likewise. >> (MASK_ZVKSED): Likewise. >> (MASK_ZVKSH): Likewise. >> (MASK_ZVKN): Likewise. >> (MASK_ZVKNC): Likewise. >> (MASK_ZVKNG): Likewise. >> (MASK_ZVKS): Likewise. >> (MASK_ZVKSC): Likewise. >> (MASK_ZVKSG): Likewise. >> (MASK_ZVKT): Likewise. >> (TARGET_ZVKG): Likewise. >> (TARGET_ZVKNED): Likewise. >> (TARGET_ZVKNHA): Likewise. >> (TARGET_ZVKNHB): Likewise. >> (TARGET_ZVKSED): Likewise. >> (TARGET_ZVKSH): Likewise. >> (TARGET_ZVKN): Likewise. >> (TARGET_ZVKNC): Likewise. >> (TARGET_ZVKNG): Likewise. >> (TARGET_ZVKS): Likewise. >> (TARGET_ZVKSC): Likewise. >> (TARGET_ZVKSG): Likewise. >> (TARGET_ZVKT): Likewise. >> * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext. >> >> gcc/testsuite/ChangeLog: >> >> * gcc.target/riscv/zvbb.c: New test. >> * gcc.target/riscv/zvbc.c: New test. >> * gcc.target/riscv/zvkg.c: New test. >> * gcc.target/riscv/zvkn-1.c: New test. >> * gcc.target/riscv/zvkn.c: New test. >> * gcc.target/riscv/zvknc-1.c: New test. >> * gcc.target/riscv/zvknc-2.c: New test. >> * gcc.target/riscv/zvknc.c: New test. >> * gcc.target/riscv/zvkned.c: New test. >> * gcc.target/riscv/zvkng-1.c: New test. >> * gcc.target/riscv/zvkng-2.c: New test. >> * gcc.target/riscv/zvkng.c: New test. >> * gcc.target/riscv/zvknha.c: New test. >> * gcc.target/riscv/zvknhb.c: New test. >> * gcc.target/riscv/zvks-1.c: New test. >> * gcc.target/riscv/zvks.c: New test. >> * gcc.target/riscv/zvksc-1.c: New test. >> * gcc.target/riscv/zvksc-2.c: New test. >> * gcc.target/riscv/zvksc.c: New test. >> * gcc.target/riscv/zvksed.c: New test. >> * gcc.target/riscv/zvksg-1.c: New test. >> * gcc.target/riscv/zvksg-2.c: New test. >> * gcc.target/riscv/zvksg.c: New test. >> * gcc.target/riscv/zvksh.c: New test. >> * gcc.target/riscv/zvkt.c: New test. >> >> Signed-off-by: Christoph Müllner <christoph.muell...@vrull.eu> >> --- >> Changes for v2: >> - Update patch for specification version v20230620 >> >> gcc/common/config/riscv/riscv-common.cc | 55 ++++++++++++++++++++++++ >> gcc/config/riscv/arch-canonicalize | 7 +++ >> gcc/config/riscv/riscv-opts.h | 34 +++++++++++++++ >> gcc/config/riscv/riscv.opt | 6 +++ >> gcc/testsuite/gcc.target/riscv/zvbb.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvbc.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvkg.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvkn-1.c | 29 +++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvkn.c | 29 +++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvknc-1.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvknc-2.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvknc.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvkned.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvkng-1.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvkng-2.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvkng.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvknha.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvknhb.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvks-1.c | 29 +++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvks.c | 29 +++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvksc-1.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvksc-2.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvksc.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvksed.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvksg-1.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvksg-2.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvksg.c | 37 ++++++++++++++++ >> gcc/testsuite/gcc.target/riscv/zvksh.c | 13 ++++++ >> gcc/testsuite/gcc.target/riscv/zvkt.c | 13 ++++++ >> 29 files changed, 779 insertions(+) >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvbb.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvbc.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkg.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkn-1.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkn.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvknc-1.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvknc-2.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvknc.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkned.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkng-1.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkng-2.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkng.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvknha.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvknhb.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvks-1.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvks.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksc-1.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksc-2.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksc.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksed.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksg-1.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksg-2.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksg.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvksh.c >> create mode 100644 gcc/testsuite/gcc.target/riscv/zvkt.c >> >> diff --git a/gcc/common/config/riscv/riscv-common.cc >> b/gcc/common/config/riscv/riscv-common.cc >> index 3247d526c0a..6091d8f281b 100644 >> --- a/gcc/common/config/riscv/riscv-common.cc >> +++ b/gcc/common/config/riscv/riscv-common.cc >> @@ -102,6 +102,23 @@ static const riscv_implied_info_t >> riscv_implied_info[] = >> {"zvl32768b", "zvl16384b"}, >> {"zvl65536b", "zvl32768b"}, >> >> + {"zvkn", "zvkned"}, >> + {"zvkn", "zvknhb"}, >> + {"zvkn", "zvbb"}, >> + {"zvkn", "zvkt"}, >> + {"zvknc", "zvkn"}, >> + {"zvknc", "zvbc"}, >> + {"zvkng", "zvkn"}, >> + {"zvkng", "zvkg"}, >> + {"zvks", "zvksed"}, >> + {"zvks", "zvksh"}, >> + {"zvks", "zvbb"}, >> + {"zvks", "zvkt"}, >> + {"zvksc", "zvks"}, >> + {"zvksc", "zvbc"}, >> + {"zvksg", "zvks"}, >> + {"zvksg", "zvkg"}, >> + >> {"zfh", "zfhmin"}, >> {"zfhmin", "f"}, >> {"zvfhmin", "zve32f"}, >> @@ -204,6 +221,22 @@ static const struct riscv_ext_version >> riscv_ext_version_table[] = >> {"zve64f", ISA_SPEC_CLASS_NONE, 1, 0}, >> {"zve64d", ISA_SPEC_CLASS_NONE, 1, 0}, >> >> + {"zvbb", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvbc", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvkg", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvkned", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvknha", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvknhb", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvksed", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvksh", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvkn", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvknc", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvkng", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvks", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvksc", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvksg", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvkt", ISA_SPEC_CLASS_NONE, 1, 0}, >> + >> {"zvl32b", ISA_SPEC_CLASS_NONE, 1, 0}, >> {"zvl64b", ISA_SPEC_CLASS_NONE, 1, 0}, >> {"zvl128b", ISA_SPEC_CLASS_NONE, 1, 0}, >> @@ -250,6 +283,12 @@ static const struct riscv_ext_version >> riscv_combine_info[] = >> {"zk", ISA_SPEC_CLASS_NONE, 1, 0}, >> {"zkn", ISA_SPEC_CLASS_NONE, 1, 0}, >> {"zks", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvkn", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvknc", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvkng", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvks", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvksc", ISA_SPEC_CLASS_NONE, 1, 0}, >> + {"zvksg", ISA_SPEC_CLASS_NONE, 1, 0}, >> /* Terminate the list. */ >> {NULL, ISA_SPEC_CLASS_NONE, 0, 0} >> }; >> @@ -1251,6 +1290,22 @@ static const riscv_ext_flag_table_t >> riscv_ext_flag_table[] = >> {"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}, >> >> + {"zvbb", &gcc_options::x_riscv_zvb_subext, MASK_ZVBB}, >> + {"zvbc", &gcc_options::x_riscv_zvb_subext, MASK_ZVBC}, >> + {"zvkg", &gcc_options::x_riscv_zvk_subext, MASK_ZVKG}, >> + {"zvkned", &gcc_options::x_riscv_zvk_subext, MASK_ZVKNED}, >> + {"zvknha", &gcc_options::x_riscv_zvk_subext, MASK_ZVKNHA}, >> + {"zvknhb", &gcc_options::x_riscv_zvk_subext, MASK_ZVKNHB}, >> + {"zvksed", &gcc_options::x_riscv_zvk_subext, MASK_ZVKSED}, >> + {"zvksh", &gcc_options::x_riscv_zvk_subext, MASK_ZVKSH}, >> + {"zvkn", &gcc_options::x_riscv_zvk_subext, MASK_ZVKN}, >> + {"zvknc", &gcc_options::x_riscv_zvk_subext, MASK_ZVKNC}, >> + {"zvkng", &gcc_options::x_riscv_zvk_subext, MASK_ZVKNG}, >> + {"zvks", &gcc_options::x_riscv_zvk_subext, MASK_ZVKS}, >> + {"zvksc", &gcc_options::x_riscv_zvk_subext, MASK_ZVKSC}, >> + {"zvksg", &gcc_options::x_riscv_zvk_subext, MASK_ZVKSG}, >> + {"zvkt", &gcc_options::x_riscv_zvk_subext, MASK_ZVKT}, >> + >> {"zvl32b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL32B}, >> {"zvl64b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL64B}, >> {"zvl128b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL128B}, >> diff --git a/gcc/config/riscv/arch-canonicalize >> b/gcc/config/riscv/arch-canonicalize >> index 490226beb0b..bbb9261bd87 100755 >> --- a/gcc/config/riscv/arch-canonicalize >> +++ b/gcc/config/riscv/arch-canonicalize >> @@ -68,6 +68,13 @@ IMPLIED_EXT = { >> "zvl16384b" : ["zvl8192b"], >> "zvl32768b" : ["zvl16384b"], >> "zvl65536b" : ["zvl32768b"], >> + >> + "zvkn" : ["zvkned", "zvknhb", "zvbb", "zvkt"], >> + "zvknc" : ["zvkn", "zvbc"], >> + "zvkng" : ["zvkn", "zvkg"], >> + "zvks" : ["zvksed", "zvksh", "zvbb", "zvkt"], >> + "zvksc" : ["zvks", "zvbc"], >> + "zvksg" : ["zvks", "zvkg"], >> } >> >> def arch_canonicalize(arch, isa_spec): >> diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h >> index 208a557b8ff..cfcf608ea62 100644 >> --- a/gcc/config/riscv/riscv-opts.h >> +++ b/gcc/config/riscv/riscv-opts.h >> @@ -168,6 +168,40 @@ enum riscv_entity >> #define TARGET_VECTOR_ELEN_FP_16 \ >> ((riscv_vector_elen_flags & MASK_VECTOR_ELEN_FP_16) != 0) >> >> +#define MASK_ZVBB (1 << 0) >> +#define MASK_ZVBC (1 << 1) >> + >> +#define TARGET_ZVBB ((riscv_zvb_subext & MASK_ZVBB) != 0) >> +#define TARGET_ZVBC ((riscv_zvb_subext & MASK_ZVBC) != 0) >> + >> +#define MASK_ZVKG (1 << 0) >> +#define MASK_ZVKNED (1 << 1) >> +#define MASK_ZVKNHA (1 << 2) >> +#define MASK_ZVKNHB (1 << 3) >> +#define MASK_ZVKSED (1 << 4) >> +#define MASK_ZVKSH (1 << 5) >> +#define MASK_ZVKN (1 << 6) >> +#define MASK_ZVKNC (1 << 7) >> +#define MASK_ZVKNG (1 << 8) >> +#define MASK_ZVKS (1 << 9) >> +#define MASK_ZVKSC (1 << 10) >> +#define MASK_ZVKSG (1 << 11) >> +#define MASK_ZVKT (1 << 12) >> + >> +#define TARGET_ZVKG ((riscv_zvk_subext & MASK_ZVKG) != 0) >> +#define TARGET_ZVKNED ((riscv_zvk_subext & MASK_ZVKNED) != 0) >> +#define TARGET_ZVKNHA ((riscv_zvk_subext & MASK_ZVKNHA) != 0) >> +#define TARGET_ZVKNHB ((riscv_zvk_subext & MASK_ZVKNHB) != 0) >> +#define TARGET_ZVKSED ((riscv_zvk_subext & MASK_ZVKSED) != 0) >> +#define TARGET_ZVKSH ((riscv_zvk_subext & MASK_ZVKSH) != 0) >> +#define TARGET_ZVKN ((riscv_zvk_subext & MASK_ZVKN) != 0) >> +#define TARGET_ZVKNC ((riscv_zvk_subext & MASK_ZVKNC) != 0) >> +#define TARGET_ZVKNG ((riscv_zvk_subext & MASK_ZVKNG) != 0) >> +#define TARGET_ZVKS ((riscv_zvk_subext & MASK_ZVKS) != 0) >> +#define TARGET_ZVKSC ((riscv_zvk_subext & MASK_ZVKSC) != 0) >> +#define TARGET_ZVKSG ((riscv_zvk_subext & MASK_ZVKSG) != 0) >> +#define TARGET_ZVKT ((riscv_zvk_subext & MASK_ZVKT) != 0) >> + >> #define MASK_ZVL32B (1 << 0) >> #define MASK_ZVL64B (1 << 1) >> #define MASK_ZVL128B (1 << 2) >> diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt >> index 63d4710cb15..dd062f1c8bd 100644 >> --- a/gcc/config/riscv/riscv.opt >> +++ b/gcc/config/riscv/riscv.opt >> @@ -223,6 +223,12 @@ int riscv_vector_elen_flags >> TargetVariable >> int riscv_zvl_flags >> >> +TargetVariable >> +int riscv_zvb_subext >> + >> +TargetVariable >> +int riscv_zvk_subext >> + >> TargetVariable >> int riscv_zicmo_subext >> >> diff --git a/gcc/testsuite/gcc.target/riscv/zvbb.c >> b/gcc/testsuite/gcc.target/riscv/zvbb.c >> new file mode 100644 >> index 00000000000..b592f56f6cf >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvbb.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvbb" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvbb" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvbc.c >> b/gcc/testsuite/gcc.target/riscv/zvbc.c >> new file mode 100644 >> index 00000000000..37239fa91b3 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvbc.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvbc" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvbc" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvbc >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkg.c >> b/gcc/testsuite/gcc.target/riscv/zvkg.c >> new file mode 100644 >> index 00000000000..1e2a05aa1d8 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkg.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkg" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkg" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvkg >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkn-1.c >> b/gcc/testsuite/gcc.target/riscv/zvkn-1.c >> new file mode 100644 >> index 00000000000..83935b06832 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkn-1.c >> @@ -0,0 +1,29 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkned_zvknhb_zvbb_zvkt" { target { rv64 >> } } } */ >> +/* { dg-options "-march=rv32gc_zvkned_zvknhb_zvbb_zvkt" { target { rv32 >> } } } */ >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkn.c >> b/gcc/testsuite/gcc.target/riscv/zvkn.c >> new file mode 100644 >> index 00000000000..af3db40c8f6 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkn.c >> @@ -0,0 +1,29 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkn" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkn" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvknc-1.c >> b/gcc/testsuite/gcc.target/riscv/zvknc-1.c >> new file mode 100644 >> index 00000000000..eca27670895 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvknc-1.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkned_zvknhb_zvbb_zvkt_zvbc" { target { >> rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkned_zvknhb_zvbb_zvkt_zvbc" { target { >> rv32 } } } */ >> + >> +#ifndef __riscv_zvknc >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbc >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvknc-2.c >> b/gcc/testsuite/gcc.target/riscv/zvknc-2.c >> new file mode 100644 >> index 00000000000..e77343a27f3 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvknc-2.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkn_zvbc" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkn_zvbc" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvknc >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbc >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvknc.c >> b/gcc/testsuite/gcc.target/riscv/zvknc.c >> new file mode 100644 >> index 00000000000..10bd471da45 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvknc.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvknc" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvknc" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvknc >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbc >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkned.c >> b/gcc/testsuite/gcc.target/riscv/zvkned.c >> new file mode 100644 >> index 00000000000..fcdc4b45761 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkned.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkned" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkned" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkng-1.c >> b/gcc/testsuite/gcc.target/riscv/zvkng-1.c >> new file mode 100644 >> index 00000000000..f4f3cc8e417 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkng-1.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkned_zvknhb_zvbb_zvkt_zvkg" { target { >> rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkned_zvknhb_zvbb_zvkt_zvkg" { target { >> rv32 } } } */ >> + >> +#ifndef __riscv_zvkng >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkg >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkng-2.c >> b/gcc/testsuite/gcc.target/riscv/zvkng-2.c >> new file mode 100644 >> index 00000000000..2631c1a1c25 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkng-2.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkn_zvkg" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkn_zvkg" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvkng >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkg >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkng.c >> b/gcc/testsuite/gcc.target/riscv/zvkng.c >> new file mode 100644 >> index 00000000000..e6c950e9323 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkng.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkng" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkng" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvkng >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkn >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkned >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkg >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvknha.c >> b/gcc/testsuite/gcc.target/riscv/zvknha.c >> new file mode 100644 >> index 00000000000..1275f9d11c1 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvknha.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvknha" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvknha" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvknha >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvknhb.c >> b/gcc/testsuite/gcc.target/riscv/zvknhb.c >> new file mode 100644 >> index 00000000000..669ff019149 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvknhb.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvknhb" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvknhb" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvknhb >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvks-1.c >> b/gcc/testsuite/gcc.target/riscv/zvks-1.c >> new file mode 100644 >> index 00000000000..28ad26af1c1 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvks-1.c >> @@ -0,0 +1,29 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvksed_zvksh_zvbb_zvkt" { target { rv64 } >> } } */ >> +/* { dg-options "-march=rv32gc_zvksed_zvksh_zvbb_zvkt" { target { rv32 } >> } } */ >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvks.c >> b/gcc/testsuite/gcc.target/riscv/zvks.c >> new file mode 100644 >> index 00000000000..a48c9186d5e >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvks.c >> @@ -0,0 +1,29 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvks" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvks" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksc-1.c >> b/gcc/testsuite/gcc.target/riscv/zvksc-1.c >> new file mode 100644 >> index 00000000000..72d9676e68c >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksc-1.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvksed_zvksh_zvbb_zvkt_zvbc" { target { >> rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvksed_zvksh_zvbb_zvkt_zvbc" { target { >> rv32 } } } */ >> + >> +#ifndef __riscv_zvksc >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbc >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksc-2.c >> b/gcc/testsuite/gcc.target/riscv/zvksc-2.c >> new file mode 100644 >> index 00000000000..c78b4fe9077 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksc-2.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvks_zvbc" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvks_zvbc" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvksc >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbc >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksc.c >> b/gcc/testsuite/gcc.target/riscv/zvksc.c >> new file mode 100644 >> index 00000000000..fb61561a2af >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksc.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvksc" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvksc" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvksc >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbc >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksed.c >> b/gcc/testsuite/gcc.target/riscv/zvksed.c >> new file mode 100644 >> index 00000000000..439b546bb8a >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksed.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvksed" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvksed" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksg-1.c >> b/gcc/testsuite/gcc.target/riscv/zvksg-1.c >> new file mode 100644 >> index 00000000000..8cbd0331168 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksg-1.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvksed_zvksh_zvbb_zvkt_zvkg" { target { >> rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvksed_zvksh_zvbb_zvkt_zvkg" { target { >> rv32 } } } */ >> + >> +#ifndef __riscv_zvksg >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkg >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksg-2.c >> b/gcc/testsuite/gcc.target/riscv/zvksg-2.c >> new file mode 100644 >> index 00000000000..d56c47e897c >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksg-2.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvks_zvkg" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvks_zvkg" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvksg >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkg >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksg.c >> b/gcc/testsuite/gcc.target/riscv/zvksg.c >> new file mode 100644 >> index 00000000000..44dffb41395 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksg.c >> @@ -0,0 +1,37 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvksg" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvksg" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvksg >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvks >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksed >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvbb >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +#ifndef __riscv_zvkg >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvksh.c >> b/gcc/testsuite/gcc.target/riscv/zvksh.c >> new file mode 100644 >> index 00000000000..5359ca50281 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvksh.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvksh" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvksh" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvksh >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> diff --git a/gcc/testsuite/gcc.target/riscv/zvkt.c >> b/gcc/testsuite/gcc.target/riscv/zvkt.c >> new file mode 100644 >> index 00000000000..49822b75738 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/riscv/zvkt.c >> @@ -0,0 +1,13 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-march=rv64gc_zvkt" { target { rv64 } } } */ >> +/* { dg-options "-march=rv32gc_zvkt" { target { rv32 } } } */ >> + >> +#ifndef __riscv_zvkt >> +#error Feature macro not defined >> +#endif >> + >> +int >> +foo (int a) >> +{ >> + return a; >> +} >> -- >> 2.41.0 >> >>