[PATCH 0/3] Optimize loongarch vector implementation.

Jiahao Xu xujiahao@loongson.cn
Mon Oct 16 02:00:11 GMT 2023


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



More information about the Gcc-patches mailing list