diff options
author | Robin Dapp <rdapp@ventanamicro.com> | 2023-07-31 17:54:35 +0200 |
---|---|---|
committer | Robin Dapp <rdapp@ventanamicro.com> | 2023-08-16 14:27:41 +0200 |
commit | 694242930906d9f7ad15977cac6dcbeae1f3d3f2 (patch) | |
tree | f909bc4be33644751025e5d01ca43bb2c0e55353 /libstdc++-v3/include/std/expected | |
parent | c94e0f52f40310b6faeae11bae3366ccb1435199 (diff) | |
download | gcc-694242930906d9f7ad15977cac6dcbeae1f3d3f2.zip gcc-694242930906d9f7ad15977cac6dcbeae1f3d3f2.tar.gz gcc-694242930906d9f7ad15977cac6dcbeae1f3d3f2.tar.bz2 |
RISC-V: Implement vector "average" autovec pattern.
This patch adds vector average patterns
op[0] = (narrow) ((wide) op[1] + (wide) op[2]) >> 1;
op[0] = (narrow) ((wide) op[1] + (wide) op[2] + 1) >> 1;
If there is no direct support, the vectorizer can synthesize the pattern
but, presumably, due to lack of narrowing operation support, won't try a
narrowing shift. Therefore, this patch implements the expanders
instead.
gcc/ChangeLog:
* config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor):
Implement expander.
(<u>avg<v_double_trunc>3_ceil): Ditto.
* config/riscv/vector-iterators.md (ashiftrt): New iterator.
(ASHIFTRT): Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/autovec/widen/vec-avg-run.c: New test.
* gcc.target/riscv/rvv/autovec/widen/vec-avg-rv32gcv.c: New test.
* gcc.target/riscv/rvv/autovec/widen/vec-avg-rv64gcv.c: New test.
* gcc.target/riscv/rvv/autovec/widen/vec-avg-template.h: New test.
Diffstat (limited to 'libstdc++-v3/include/std/expected')
0 files changed, 0 insertions, 0 deletions