aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.cc
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@xry111.site>2023-11-19 16:28:59 +0800
committerXi Ruoyao <xry111@xry111.site>2023-11-29 15:07:08 +0800
commitcbbc3eeb07794062c892b9284b139a224acdfb2b (patch)
tree731c7fb905f03fb020bae183f2c3db89df6e5909 /gcc/fold-const.cc
parent530348c418d9ec28aac5b151c15405bfb860e5c4 (diff)
downloadgcc-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