RISC-V: Implement ZKND and ZKNE extensions
commit072c558a0f181bec139d68b451e7aa4907dbc5ef
authorLiao Shihua <shihua@iscas.ac.cn>
Mon, 20 Feb 2023 07:01:23 +0000 (20 15:01 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Sun, 5 Mar 2023 17:05:00 +0000 (6 01:05 +0800)
treee39baa37aa3f6eb95c6b7e4ba9abf1ddb9a07d2b
parent2c8095109b8756bebc5d0ac2cc0ded34fd6a46df
RISC-V: Implement ZKND and ZKNE extensions

This patch supports Zkne and Zknd extension.
It includes instruction's machine description and built-in funtions.

gcc/ChangeLog:

* config/riscv/constraints.md (D03): Add constants of bs and rnum.
(DsA): New.
* config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
(riscv_aes32dsmi): New.
(riscv_aes64ds): New.
(riscv_aes64dsm): New.
(riscv_aes64im): New.
(riscv_aes64ks1i): New.
(riscv_aes64ks2): New.
(riscv_aes32esi): New.
(riscv_aes32esmi): New.
(riscv_aes64es): New.
(riscv_aes64esm): New.
* config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
* config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
ZKNE's built-in functions.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/zknd32.c: New test.
* gcc.target/riscv/zknd64.c: New test.
* gcc.target/riscv/zkne32.c: New test.
* gcc.target/riscv/zkne64.c: New test.

Co-Authored-By: SiYu Wu <siyu@isrc.iscas.ac.cn>
gcc/config/riscv/constraints.md
gcc/config/riscv/crypto.md
gcc/config/riscv/riscv-builtins.cc
gcc/config/riscv/riscv-scalar-crypto.def
gcc/testsuite/gcc.target/riscv/zknd32.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zknd64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zkne32.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/zkne64.c [new file with mode: 0644]