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 -- 2.20.1