1. Simplify the implementation of 256-vector
vec_widen_<su>{add/sub/mult}_{hi/lo}.
2. Implement 128-bit vector vec_widen_<su>{add/sub/mult}_{hi/lo}.
3. Implement {s/u}dot_prod{v2di/v4si/v4di/v8si}{v8hi/v16qi/v16hi/v32qi}.
4. Removed redundant "-mlasx" compilation options in some test cases.
After doing this, the following test case can be tested and passed:
FAIL: gcc.dg/vect/vect-reduc-chain-1.c -flto -ffat-lto-objects
scan-tree-dump-times vect "vectorizing statement: \\\\S+ = DOT_PROD_EXPR" 2
FAIL: gcc.dg/vect/vect-reduc-chain-1.c scan-tree-dump-times vect "vectorizing
statement: \\\\S+ = DOT_PROD_EXPR" 2
FAIL: gcc.dg/vect/vect-reduc-chain-dot-slp-1.c -flto -ffat-lto-objects
scan-tree-dump vect "vectorizing SLP node starting from: \\\\S+ = DOT_PROD_EXPR"
FAIL: gcc.dg/vect/vect-reduc-chain-dot-slp-1.c scan-tree-dump vect "vectorizing
SLP node starting from: \\\\S+ = DOT_PROD_EXPR"
FAIL: gcc.dg/vect/vect-reduc-chain-dot-slp-2.c -flto -ffat-lto-objects
scan-tree-dump vect "vectorizing SLP node starting from: \\\\S+ = DOT_PROD_EXPR"
FAIL: gcc.dg/vect/vect-reduc-chain-dot-slp-2.c scan-tree-dump vect "vectorizing
SLP node starting from: \\\\S+ = DOT_PROD_EXPR"
Lulu Cheng (5):
LoongArch: Simplify vec_widen_<su>{add/sub/mult}_{hi/lo}_m describe.
LoongArch: Implement
vec_widen_<su>{add/sub/mult}_{hi/lo}_{v16qi/v8hi}.
LoongArch: Implement the vector dot product operation with quadruple
width.
LoongArch: Support vec_widen_[s]{add/sub/mult}_{hi/lo}_{v4si/v8si}.
LoongArch: Remove the "-mlasx" compilation option from the test cases.
gcc/config/loongarch/lasx.md | 76 ++++---------
gcc/config/loongarch/loongarch-protos.h | 6 +-
gcc/config/loongarch/loongarch.cc | 103 ++----------------
gcc/config/loongarch/lsx.md | 48 +++++++-
gcc/config/loongarch/simd.md | 55 +++++++++-
.../gcc.dg/vect/slp-widen-mult-half.c | 1 -
gcc/testsuite/gcc.dg/vect/tree-vect.h | 2 +
.../gcc.dg/vect/vect-widen-mult-const-s16.c | 1 -
.../gcc.dg/vect/vect-widen-mult-const-u16.c | 1 -
.../gcc.dg/vect/vect-widen-mult-half-u8.c | 1 -
.../gcc.dg/vect/vect-widen-mult-half.c | 1 -
.../gcc.dg/vect/vect-widen-mult-u16.c | 1 -
.../gcc.dg/vect/vect-widen-mult-u8-s16-s32.c | 1 -
.../gcc.dg/vect/vect-widen-mult-u8-u32.c | 1 -
.../gcc.dg/vect/vect-widen-mult-u8.c | 1 -
15 files changed, 136 insertions(+), 163 deletions(-)
--
2.34.1