aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.cc
diff options
context:
space:
mode:
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>2023-09-20 06:49:56 +0800
committerLehua Ding <lehua.ding@rivai.ai>2023-09-20 10:32:27 +0800
commitbea89f78f2f02a0dabe4993ccf1c7cdb48be040b (patch)
treef1e6daa3a8104817fa77be2a0060cc62c925bd5b /gcc/expr.cc
parent677249a23243b5b51832611767366d6eb199bdc7 (diff)
downloadgcc-bea89f78f2f02a0dabe4993ccf1c7cdb48be040b.zip
gcc-bea89f78f2f02a0dabe4993ccf1c7cdb48be040b.tar.gz
gcc-bea89f78f2f02a0dabe4993ccf1c7cdb48be040b.tar.bz2
RISC-V: Extend VLS modes in 'VWEXTI' iterator
This patch extends 'VWEXT' iterator so that we will support integer extension/integer truncate/integer average VLS patterns. This patch reduce these following FAILs: FAIL: gcc.dg/pr92301.c execution test XPASS: gcc.dg/vect/bb-slp-subgroups-3.c -flto -ffat-lto-objects scan-tree-dump-times slp2 "optimized: basic block" 2 XPASS: gcc.dg/vect/bb-slp-subgroups-3.c scan-tree-dump-times slp2 "optimized: basic block" 2 The pr92301.c is the latent bug in middle-end GIMPLE FOLD. We are just lucky that this test passes with this patch which makes us not trigger the GIMPLE FOLD bug again. gcc/ChangeLog: * config/riscv/riscv-v.cc (can_find_related_mode_p): New function. (vectorize_related_mode): Add VLS related modes. * config/riscv/vector-iterators.md: Extend VLS modes. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/binop/narrow-1.c: Adapt testcase. * gcc.target/riscv/rvv/autovec/binop/narrow-2.c: Ditto. * gcc.target/riscv/rvv/autovec/binop/narrow-3.c: Ditto. * gcc.target/riscv/rvv/autovec/cmp/vcond-1.c: Ditto. * gcc.target/riscv/rvv/autovec/cmp/vcond-2.c: Ditto. * gcc.target/riscv/rvv/autovec/cmp/vcond-3.c: Ditto. * gcc.target/riscv/rvv/autovec/cmp/vcond-4.c: Ditto. * gcc.target/riscv/rvv/autovec/partial/slp-18.c: Ditto. * gcc.target/riscv/rvv/autovec/partial/slp-19.c: Ditto. * gcc.target/riscv/rvv/autovec/pr110950.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-1.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-10.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-11.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-12.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-2.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-3.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-4.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-5.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-6.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-7.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-8.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop-9.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-1.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-10.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-11.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-12.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-2.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-3.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-4.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-5.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-6.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-7.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-8.c: Ditto. * gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-9.c: Ditto. * gcc.target/riscv/rvv/autovec/vls/def.h: Ditto. * gcc.target/riscv/rvv/autovec/vls/div-1.c: Ditto. * gcc.target/riscv/rvv/autovec/vls/shift-3.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-1.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-2.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-3.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-4.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-5.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-6.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-7.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-8.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-9.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-1.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-2.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-3.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-4.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-5.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-6.c: Ditto. * gcc.target/riscv/rvv/autovec/zve32f-1.c: Ditto. * gcc.target/riscv/rvv/autovec/vls/avg-1.c: New test. * gcc.target/riscv/rvv/autovec/vls/avg-2.c: New test. * gcc.target/riscv/rvv/autovec/vls/avg-3.c: New test. * gcc.target/riscv/rvv/autovec/vls/avg-4.c: New test. * gcc.target/riscv/rvv/autovec/vls/avg-5.c: New test. * gcc.target/riscv/rvv/autovec/vls/avg-6.c: New test. * gcc.target/riscv/rvv/autovec/vls/ext-1.c: New test. * gcc.target/riscv/rvv/autovec/vls/ext-2.c: New test. * gcc.target/riscv/rvv/autovec/vls/ext-3.c: New test. * gcc.target/riscv/rvv/autovec/vls/trunc-1.c: New test. * gcc.target/riscv/rvv/autovec/vls/trunc-2.c: New test. * gcc.target/riscv/rvv/autovec/vls/trunc-3.c: New test.
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions