]> git.ipfire.org Git - thirdparty/gcc.git/commit
LoongArch: Implement [su]dot_prod* for LSX and LASX modes
authorXi Ruoyao <xry111@xry111.site>
Mon, 20 Jan 2025 15:13:19 +0000 (23:13 +0800)
committerXi Ruoyao <xry111@xry111.site>
Wed, 19 Feb 2025 06:34:45 +0000 (14:34 +0800)
commitcef5f23adb6f9f052d03286ad8ccf352eefccf86
tree197ff341d45bc2d53c114121984b8f4f0d3cf517
parent7c54e46b209664d3a501a03908339c9903d01f1e
LoongArch: Implement [su]dot_prod* for LSX and LASX modes

Despite it's just a special case of "a widening product of which the
result used for reduction," having these standard names allows to
recognize the dot product pattern earlier and it may be beneficial to
optimization.  Also fix some test failures with the test cases:

- gcc.dg/vect/vect-reduc-chain-2.c
- gcc.dg/vect/vect-reduc-chain-3.c
- gcc.dg/vect/vect-reduc-chain-dot-slp-3.c
- gcc.dg/vect/vect-reduc-chain-dot-slp-4.c

gcc/ChangeLog:

* config/loongarch/simd.md (wvec_half): New define_mode_attr.
(<su>dot_prod<wvec_half><mode>): New define_expand.

gcc/testsuite/ChangeLog:

* gcc.target/loongarch/wide-mul-reduc-2.c (dg-final): Scan
DOT_PROD_EXPR in optimized tree.
gcc/config/loongarch/simd.md
gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c