RISC-V: Scalar crypto instructions and operand set.
authorjiawei <jiawei@iscas.ac.cn>
Mon, 15 Nov 2021 03:03:42 +0000 (11:03 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Tue, 16 Nov 2021 03:47:55 +0000 (11:47 +0800)
commit3d1cafa0c60f859940262af7852b21a42dd78ba1
treeb80f2292a60b9442794b600dc6c635adf34236f0
parentdfdba097767e42f5163aeb5a97c4aa0084d44457
RISC-V: Scalar crypto instructions and operand set.

Add instructions in k-ext, some instruction in zbkb, zbkc is reuse from
zbb,zbc, we just change the class attribute to make them both support.
The 'aes64ks1i' and 'aes64ks2' instructions are present in both the Zknd
and Zkne extensions on rv64.  Add new operand letter 'y' to present 'bs'
symbol and 'Y' to present 'rnum' symbolc  for zkn instructions.  Also add
a new Entropy Source CSR define 'seed' located at address 0x015.

bfd/
* elfxx-riscv.c (riscv_multi_subset_supports): Added support for
crypto extension.
gas/
*config/tc-riscv.c (enum riscv_csr_class): Added CSR_CLASS_ZKR.
(riscv_csr_address): Checked for CSR_CLASS_ZKR.
(validate_riscv_insn): Added y and Y for bs and rnum operands.
(riscv_ip): Handle y and Y operands.
include/
* opcode/riscv-opc.h: Added encodings of crypto instructions.
Also defined new csr seed, which address is 0x15.
* opcode/riscv.h: Defined OP_* and INSN_CLASS_* for crypto.
opcodes/
* riscv-dis.c (print_insn_args): Recognized new y and Y operands.
* riscv-opc.c (riscv_opcodes): Added crypto instructions.
bfd/elfxx-riscv.c
gas/config/tc-riscv.c
include/opcode/riscv-opc.h
include/opcode/riscv.h
opcodes/riscv-dis.c
opcodes/riscv-opc.c