]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Add support for vector crypto extensions
authorChristoph Müllner <christoph.muellner@vrull.eu>
Wed, 21 Dec 2022 17:57:14 +0000 (18:57 +0100)
committerPhilipp Tomsich <philipp.tomsich@vrull.eu>
Mon, 3 Jul 2023 22:05:14 +0000 (00:05 +0200)
commit7c521f6751e47d9dfaca2c8288c65f94e2f54d3d
tree08fa954db22ef34a54c610a8cfcf3748984cbba5
parentd0a333612bfb7faf8d61210c831165388e758768
RISC-V: Add support for vector crypto extensions

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 is merged as 9fdc1b157b6e72f7dd98851a240c5fdb386a558e.
All extensions come with (passing) 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.muellner@vrull.eu>
29 files changed:
gcc/common/config/riscv/riscv-common.cc
gcc/config/riscv/arch-canonicalize
gcc/config/riscv/riscv-opts.h
gcc/config/riscv/riscv.opt
gcc/testsuite/gcc.target/riscv/zvbb.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvbc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkg.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkn-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkn.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvknc-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvknc-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvknc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkned.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkng-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkng-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkng.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvknha.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvknhb.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvks-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvks.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksc-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksc-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksed.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksg-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksg-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksg.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvksh.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zvkt.c [new file with mode: 0644]