diff options
author | Xi Ruoyao <xry111@xry111.site> | 2023-11-19 16:28:59 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2023-11-29 15:07:08 +0800 |
commit | cbbc3eeb07794062c892b9284b139a224acdfb2b (patch) | |
tree | 731c7fb905f03fb020bae183f2c3db89df6e5909 /gcc/fold-const.cc | |
parent | 530348c418d9ec28aac5b151c15405bfb860e5c4 (diff) | |
download | gcc-cbbc3eeb07794062c892b9284b139a224acdfb2b.zip gcc-cbbc3eeb07794062c892b9284b139a224acdfb2b.tar.gz gcc-cbbc3eeb07794062c892b9284b139a224acdfb2b.tar.bz2 |
LoongArch: Use standard pattern name and RTX code for LSX/LASX muh instructions
Removes unnecessary UNSPECs and make the muh instructions useful with
GNU vectors or auto vectorization.
gcc/ChangeLog:
* config/loongarch/simd.md (muh): New code attribute mapping
any_extend to smul_highpart or umul_highpart.
(<su>mul<mode>3_highpart): New define_insn.
* config/loongarch/lsx.md (UNSPEC_LSX_VMUH_S): Remove.
(UNSPEC_LSX_VMUH_U): Remove.
(lsx_vmuh_s_<lsxfmt>): Remove.
(lsx_vmuh_u_<lsxfmt>): Remove.
* config/loongarch/lasx.md (UNSPEC_LASX_XVMUH_S): Remove.
(UNSPEC_LASX_XVMUH_U): Remove.
(lasx_xvmuh_s_<lasxfmt>): Remove.
(lasx_xvmuh_u_<lasxfmt>): Remove.
* config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vmuh_b):
Redefine to standard pattern name.
(CODE_FOR_lsx_vmuh_h): Likewise.
(CODE_FOR_lsx_vmuh_w): Likewise.
(CODE_FOR_lsx_vmuh_d): Likewise.
(CODE_FOR_lsx_vmuh_bu): Likewise.
(CODE_FOR_lsx_vmuh_hu): Likewise.
(CODE_FOR_lsx_vmuh_wu): Likewise.
(CODE_FOR_lsx_vmuh_du): Likewise.
(CODE_FOR_lasx_xvmuh_b): Likewise.
(CODE_FOR_lasx_xvmuh_h): Likewise.
(CODE_FOR_lasx_xvmuh_w): Likewise.
(CODE_FOR_lasx_xvmuh_d): Likewise.
(CODE_FOR_lasx_xvmuh_bu): Likewise.
(CODE_FOR_lasx_xvmuh_hu): Likewise.
(CODE_FOR_lasx_xvmuh_wu): Likewise.
(CODE_FOR_lasx_xvmuh_du): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/loongarch/vect-muh.c: New test.
Diffstat (limited to 'gcc/fold-const.cc')
0 files changed, 0 insertions, 0 deletions