]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Add C intrinsic for Scalar Bitmanip Extension
authorLiao Shihua <shihua@iscas.ac.cn>
Mon, 15 Jan 2024 08:31:35 +0000 (16:31 +0800)
committerChristoph Müllner <christoph.muellner@vrull.eu>
Mon, 15 Jan 2024 15:40:32 +0000 (16:40 +0100)
commit04f22670d32f6a0b765969997269107b6b7e8c21
tree0670746b4cf8545962e8a909d1ff6c97a16fbbc3
parentc7ad6bf5b9e478d87294230318db675d7c8f3ce4
RISC-V: Add C intrinsic for Scalar Bitmanip Extension

This patch adds C intrinsics for Bitmanip Extension.
RISCV_BUILTIN_NO_PREFIX is a new riscv_builtin_description like RISCV_BUILTIN.
But it uses CODE_FOR_##INSN rather than CODE_FOR_riscv_##INSN.
Changed orcb, clmul, brev8 pattern's mode form X to GPR because orcbsi, clmul_si,
brev8_si are both included in rv32 and rv64. Test them in scalar_bitmanip_intrinsic-64-emulated.c.

gcc/ChangeLog:

* config.gcc: Include riscv_bitmanip.h.
* config/riscv/bitmanip.md: Changed mode form X to GPR in orcb and clmul pattern.
* config/riscv/crypto.md: Changed mode form X to GPR in brev8 pattern.
* config/riscv/riscv-builtins.cc (AVAIL): Adding new bitmanip builtins.
(RISCV_BUILTIN_NO_PREFIX): New helper macro.
* config/riscv/riscv-cmo.def (RISCV_BUILTIN): Add '_32'/'_64' postfix to builtins.
* config/riscv/riscv-ftypes.def (2): New ftypes.
* config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): New builtins.
(RISCV_BUILTIN_NO_PREFIX): Likewise.
* config/riscv/riscv_bitmanip.h: New file.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/scalar_bitmanip_intrinsic-32.c: New test.
* gcc.target/riscv/scalar_bitmanip_intrinsic-64-emulated.c: New test.
* gcc.target/riscv/scalar_bitmanip_intrinsic-64.c: New test.
gcc/config.gcc
gcc/config/riscv/bitmanip.md
gcc/config/riscv/crypto.md
gcc/config/riscv/riscv-builtins.cc
gcc/config/riscv/riscv-cmo.def
gcc/config/riscv/riscv-ftypes.def
gcc/config/riscv/riscv-scalar-crypto.def
gcc/config/riscv/riscv_bitmanip.h [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/scalar_bitmanip_intrinsic-32.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/scalar_bitmanip_intrinsic-64-emulated.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/scalar_bitmanip_intrinsic-64.c [new file with mode: 0644]