This series is intended to fix some test failures on
vect-reduc-chain-*.c by adding the [su]dot_prod* expand for LSX and LASX
vector modes.  But the code base of the related instructions was not
readable, so clean it up first (using the approach learnt from AArch64)
before adding the expands.

Bootstrapped and regtested on loongarch64-linux-gnu.  Ok for trunk?

Xi Ruoyao (8):
  LoongArch: Try harder using vrepli instructions to materialize const
    vectors
  LoongArch: Allow moving TImode vectors
  LoongArch: Simplify {lsx_,lasx_x}v{add,sub,mul}l{ev,od} description
  LoongArch: Simplify {lsx_,lasx_x}hv{add,sub}w description
  LoongArch: Simplify {lsx_,lasx_x}maddw description
  LoongArch: Simplify {lsx,lasx_x}vpick description
  LoongArch: Implement vec_widen_mult_{even,odd}_* for LSX and LASX
    modes
  LoongArch: Implement [su]dot_prod* for LSX and LASX modes

 gcc/config/loongarch/constraints.md           |    2 +-
 gcc/config/loongarch/lasx.md                  | 1222 +----------------
 gcc/config/loongarch/loongarch-builtins.cc    |   60 +
 gcc/config/loongarch/loongarch-modes.def      |    2 +
 gcc/config/loongarch/loongarch-protos.h       |    3 +
 gcc/config/loongarch/loongarch.cc             |   50 +-
 gcc/config/loongarch/loongarch.md             |    2 +-
 gcc/config/loongarch/lsx.md                   |  984 +------------
 gcc/config/loongarch/predicates.md            |   43 +
 gcc/config/loongarch/simd.md                  |  408 +++++-
 gcc/testsuite/gcc.target/loongarch/vrepli.c   |   15 +
 .../gcc.target/loongarch/wide-mul-reduc-1.c   |   18 +
 .../gcc.target/loongarch/wide-mul-reduc-2.c   |   18 +
 13 files changed, 619 insertions(+), 2208 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vrepli.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-1.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c

-- 
2.48.1

Reply via email to