]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Support version controling for ISA standard extensions
authorKito Cheng <kito.cheng@sifive.com>
Wed, 11 Nov 2020 08:33:57 +0000 (16:33 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Wed, 18 Nov 2020 07:02:27 +0000 (15:02 +0800)
commit4b81528241ca682025d92558ff6aeec91dafdca8
treeb7ec4b4b7a12b4aaef7f330867fd1e0298391cce
parentb03be74bad08c382da47e048007a78fa3fb4ef49
RISC-V: Support version controling for ISA standard extensions

 - New option -misa-spec support: -misa-spec=[2.2|20190608|20191213] and
   corresponding configuration option --with-isa-spec.

 - Current default ISA spec set to 2.2, but we intend to bump this to
   20191213 or later in next release.

gcc/ChangeLog:

* common/config/riscv/riscv-common.c (riscv_ext_version): New.
(riscv_ext_version_table): Ditto.
(get_default_version): Ditto.
(riscv_subset_t::implied_p): New field.
(riscv_subset_t::riscv_subset_t): Init implied_p.
(riscv_subset_list::add): New.
(riscv_subset_list::handle_implied_ext): Pass riscv_subset_t
instead of separated argument.
(riscv_subset_list::to_string): Handle zifencei and zicsr, and
omit version if version is unknown.
(riscv_subset_list::parsing_subset_version): New argument `ext`,
remove default_major_version and default_minor_version, get
default version info via get_default_version.
(riscv_subset_list::parse_std_ext): Update argument for
parsing_subset_version calls.
Handle 2.2 ISA spec, always enable zicsr and zifencei, they are
included in baseline ISA in that time.
(riscv_subset_list::parse_multiletter_ext): Update argument for
`parsing_subset_version` and `add` calls.
(riscv_subset_list::parse): Adjust argument for
riscv_subset_list::handle_implied_ext call.
* config.gcc (riscv*-*-*): Handle --with-isa-spec=.
* config.in (HAVE_AS_MISA_SPEC): New.
(HAVE_AS_MARCH_ZIFENCEI): Ditto.
* config/riscv/riscv-opts.h (riscv_isa_spec_class): New.
(riscv_isa_spec): Ditto.
* config/riscv/riscv.h (HAVE_AS_MISA_SPEC): New.
(ASM_SPEC): Pass -misa-spec if gas supported.
* config/riscv/riscv.opt (riscv_isa_spec_class) New.
* configure.ac (HAVE_AS_MARCH_ZIFENCEI): New test.
(HAVE_AS_MISA_SPEC): Ditto.
* configure: Regen.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/arch-9.c: New.
* gcc.target/riscv/arch-10.c: Ditto.
* gcc.target/riscv/arch-11.c: Ditto.
* gcc.target/riscv/attribute-6.c: Remove, we don't support G
with version anymore.
* gcc.target/riscv/attribute-8.c: Reorder arch string to fit canonical
ordering.
* gcc.target/riscv/attribute-9.c: We don't emit version for
unknown extensions now.
* gcc.target/riscv/attribute-11.c: Add -misa-spec=2.2 flags.
* gcc.target/riscv/attribute-12.c: Ditto.
* gcc.target/riscv/attribute-13.c: Ditto.
* gcc.target/riscv/attribute-14.c: Ditto.
* gcc.target/riscv/attribute-15.c: New.
* gcc.target/riscv/attribute-16.c: Ditto.
* gcc.target/riscv/attribute-17.c: Ditto.
21 files changed:
gcc/common/config/riscv/riscv-common.c
gcc/config.gcc
gcc/config.in
gcc/config/riscv/riscv-opts.h
gcc/config/riscv/riscv.h
gcc/config/riscv/riscv.opt
gcc/configure
gcc/configure.ac
gcc/testsuite/gcc.target/riscv/arch-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/arch-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/arch-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/attribute-11.c
gcc/testsuite/gcc.target/riscv/attribute-12.c
gcc/testsuite/gcc.target/riscv/attribute-13.c
gcc/testsuite/gcc.target/riscv/attribute-14.c
gcc/testsuite/gcc.target/riscv/attribute-15.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/attribute-16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/attribute-17.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/attribute-6.c [deleted file]
gcc/testsuite/gcc.target/riscv/attribute-8.c
gcc/testsuite/gcc.target/riscv/attribute-9.c