]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Add vector popcount, clz, ctz.
authorRobin Dapp <rdapp@ventanamicro.com>
Wed, 15 May 2024 15:41:07 +0000 (17:41 +0200)
committerRobin Dapp <rdapp@ventanamicro.com>
Fri, 31 May 2024 19:54:49 +0000 (21:54 +0200)
commit6fa4b0135439d64c0ea1816594d7dc830e836376
tree51a15dff134952b576f50c4f496df5773ff860bc
parentf48448276f29a3823827292c72b7fc8e9cd39e1e
RISC-V: Add vector popcount, clz, ctz.

This patch adds the zvbb vcpop, vclz and vctz to the autovec machinery
as well as tests for them.

gcc/ChangeLog:

* config/riscv/autovec.md (ctz<mode>2): New expander.
(clz<mode>2): Ditto.
* config/riscv/generic-vector-ooo.md: Add bitmanip ops to insn
reservation.
* config/riscv/vector-crypto.md: Add VLS modes to insns.
* config/riscv/vector.md: Add bitmanip ops to mode_idx and other
attributes.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/unop/popcount-1.c: Adjust check
for zvbb.
* gcc.target/riscv/rvv/autovec/unop/popcount-run-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/unop/popcount-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/unop/popcount-3.c: New test.
* gcc.target/riscv/rvv/autovec/unop/popcount-template.h: New test.
* gcc.target/riscv/rvv/autovec/unop/clz-1.c: New test.
* gcc.target/riscv/rvv/autovec/unop/clz-run.c: New test.
* gcc.target/riscv/rvv/autovec/unop/clz-template.h: New test.
* gcc.target/riscv/rvv/autovec/unop/ctz-1.c: New test.
* gcc.target/riscv/rvv/autovec/unop/ctz-run.c: New test.
* gcc.target/riscv/rvv/autovec/unop/ctz-template.h: New test.
15 files changed:
gcc/config/riscv/autovec.md
gcc/config/riscv/generic-vector-ooo.md
gcc/config/riscv/vector-crypto.md
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/clz-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/clz-run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/clz-template.h [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/ctz-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/ctz-run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/ctz-template.h [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/popcount-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/popcount-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/popcount-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/popcount-run-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/popcount-template.h [new file with mode: 0644]