Pushed to r14-4730.
在 2023/10/16 上午10:00, Jiahao Xu 写道:
The following three patches further enhance loongarch’s vectorization
capabilities.
Patch one add LoongArch support for AVG_CEIL/FLOOR.
Patch 2 add LoongArch support for vec_widen_mult/add/sub_lo/hi patterns.
patch 3 make loongarch use the new vector hooks and implements the costing
function determine_suggested_unroll_factor, to make it be able to suggest the
unroll factor for a given loop being vectorized base vec_ops analysis during
vector costing and the available issue information.The patch also adjusts cost
model through performance analysis.
Jiahao Xu (3):
LoongArch:Implement avg and sad standard names.
LoongArch:Implement vec_widen standard names.
LoongArch:Implement the new vector cost model framework.
gcc/config/loongarch/genopts/loongarch.opt.in | 15 +-
gcc/config/loongarch/lasx.md | 156 ++++++++-
gcc/config/loongarch/loongarch-protos.h | 1 +
gcc/config/loongarch/loongarch.cc | 309 +++++++++++++++++-
gcc/config/loongarch/loongarch.md | 2 +
gcc/config/loongarch/loongarch.opt | 15 +-
gcc/config/loongarch/lsx.md | 74 +++++
gcc/doc/invoke.texi | 7 +
.../gcc.target/loongarch/avg-ceil-lasx.c | 22 ++
.../gcc.target/loongarch/avg-ceil-lsx.c | 22 ++
.../gcc.target/loongarch/avg-floor-lasx.c | 22 ++
.../gcc.target/loongarch/avg-floor-lsx.c | 22 ++
gcc/testsuite/gcc.target/loongarch/sad-lasx.c | 20 ++
gcc/testsuite/gcc.target/loongarch/sad-lsx.c | 20 ++
.../gcc.target/loongarch/vect-widen-add.c | 26 ++
.../gcc.target/loongarch/vect-widen-mul.c | 26 ++
.../gcc.target/loongarch/vect-widen-sub.c | 26 ++
17 files changed, 746 insertions(+), 39 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/loongarch/avg-ceil-lasx.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/avg-ceil-lsx.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/avg-floor-lasx.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/avg-floor-lsx.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/sad-lasx.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/sad-lsx.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/vect-widen-add.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/vect-widen-mul.c
create mode 100644 gcc/testsuite/gcc.target/loongarch/vect-widen-sub.c