riscv: Add basic XThead* vendor extension support
authorChristoph Müllner <christoph.muellner@vrull.eu>
Thu, 6 Oct 2022 11:18:25 +0000 (13:18 +0200)
committerPhilipp Tomsich <philipp.tomsich@vrull.eu>
Wed, 15 Mar 2023 08:56:21 +0000 (09:56 +0100)
commit8351535f20b52cf332791f60d2bf22a025833516
tree2f58c55d553123798af116ad96e5d4c234de1edc
parenta9ae16db8cbb2c0ec8e8384ac38ce618f9af1e3a
riscv: Add basic XThead* vendor extension support

This patch add basic support for the following XThead* ISA extensions:

* XTheadBa
* XTheadBb
* XTheadBs
* XTheadCmo
* XTheadCondMov
* XTheadFMemIdx
* XTheadFmv
* XTheadInt
* XTheadMac
* XTheadMemIdx
* XTheadMemPair
* XTheadSync

The extensions are just recognized by the compiler and feature test
macros are generated (which this patch also brings tests for).

gcc/ChangeLog:

* common/config/riscv/riscv-common.cc: Add xthead* extensions.
* config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
(MASK_XTHEADBB): New.
(MASK_XTHEADBS): New.
(MASK_XTHEADCMO): New.
(MASK_XTHEADCONDMOV): New.
(MASK_XTHEADFMEMIDX): New.
(MASK_XTHEADFMV): New.
(MASK_XTHEADINT): New.
(MASK_XTHEADMAC): New.
(MASK_XTHEADMEMIDX): New.
(MASK_XTHEADMEMPAIR): New.
(MASK_XTHEADSYNC): New.
(TARGET_XTHEADBA): New.
(TARGET_XTHEADBB): New.
(TARGET_XTHEADBS): New.
(TARGET_XTHEADCMO): New.
(TARGET_XTHEADCONDMOV): New.
(TARGET_XTHEADFMEMIDX): New.
(TARGET_XTHEADFMV): New.
(TARGET_XTHEADINT): New.
(TARGET_XTHEADMAC): New.
(TARGET_XTHEADMEMIDX): New.
(TARGET_XTHEADMEMPAIR): new.
(TARGET_XTHEADSYNC): New.
* config/riscv/riscv.opt: Add riscv_xthead_subext.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/xtheadba.c: New test.
* gcc.target/riscv/xtheadbb.c: New test.
* gcc.target/riscv/xtheadbs.c: New test.
* gcc.target/riscv/xtheadcmo.c: New test.
* gcc.target/riscv/xtheadcondmov.c: New test.
* gcc.target/riscv/xtheadfmemidx.c: New test.
* gcc.target/riscv/xtheadfmv.c: New test.
* gcc.target/riscv/xtheadint.c: New test.
* gcc.target/riscv/xtheadmac.c: New test.
* gcc.target/riscv/xtheadmemidx.c: New test.
* gcc.target/riscv/xtheadmempair.c: New test.
* gcc.target/riscv/xtheadsync.c: New test.

Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
15 files changed:
gcc/common/config/riscv/riscv-common.cc
gcc/config/riscv/riscv-opts.h
gcc/config/riscv/riscv.opt
gcc/testsuite/gcc.target/riscv/xtheadba.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadbb.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadbs.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadcmo.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadcondmov.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadfmemidx.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadfmv.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadint.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadmac.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadmemidx.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadmempair.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/xtheadsync.c [new file with mode: 0644]