aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/expected
diff options
context:
space:
mode:
authorRobin Dapp <rdapp@ventanamicro.com>2023-07-31 17:54:35 +0200
committerRobin Dapp <rdapp@ventanamicro.com>2023-08-16 14:27:41 +0200
commit694242930906d9f7ad15977cac6dcbeae1f3d3f2 (patch)
treef909bc4be33644751025e5d01ca43bb2c0e55353 /libstdc++-v3/include/std/expected
parentc94e0f52f40310b6faeae11bae3366ccb1435199 (diff)
downloadgcc-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