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