aboutsummaryrefslogtreecommitdiff
path: root/gcc/asan.cc
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@xry111.site>2024-08-09 10:23:07 +0800
committerXi Ruoyao <xry111@xry111.site>2025-02-19 14:34:45 +0800
commitf727a4c57ec9f9ea628f6d330be513f01c318a61 (patch)
tree8237fab0496600affe95ade731c5295549152e19 /gcc/asan.cc
parent2ca759fc529f0b74a593c7df54353281a0e5208c (diff)
downloadgcc-f727a4c57ec9f9ea628f6d330be513f01c318a61.zip
gcc-f727a4c57ec9f9ea628f6d330be513f01c318a61.tar.gz
gcc-f727a4c57ec9f9ea628f6d330be513f01c318a61.tar.bz2
LoongArch: Simplify {lsx_,lasx_x}vmaddw description
Like what we've done for {lsx_,lasx_x}v{add,sub,mul}l{ev,od}, use special predicates and TImode RTL instead of hard-coded const vectors and UNSPECs. Also reorder two operands of the outer plus in the template, so combine will recognize {x,}vadd + {x,}vmulw{ev,od} => {x,}vmaddw{ev,od}. gcc/ChangeLog: * config/loongarch/lasx.md (UNSPEC_LASX_XVMADDWEV): Remove. (UNSPEC_LASX_XVMADDWEV2): Remove. (UNSPEC_LASX_XVMADDWEV3): Remove. (UNSPEC_LASX_XVMADDWOD): Remove. (UNSPEC_LASX_XVMADDWOD2): Remove. (UNSPEC_LASX_XVMADDWOD3): Remove. (lasx_xvmaddwev_h_b<u>): Remove. (lasx_xvmaddwev_w_h<u>): Remove. (lasx_xvmaddwev_d_w<u>): Remove. (lasx_xvmaddwev_q_d): Remove. (lasx_xvmaddwod_h_b<u>): Remove. (lasx_xvmaddwod_w_h<u>): Remove. (lasx_xvmaddwod_d_w<u>): Remove. (lasx_xvmaddwod_q_d): Remove. (lasx_xvmaddwev_q_du): Remove. (lasx_xvmaddwod_q_du): Remove. (lasx_xvmaddwev_h_bu_b): Remove. (lasx_xvmaddwev_w_hu_h): Remove. (lasx_xvmaddwev_d_wu_w): Remove. (lasx_xvmaddwev_q_du_d): Remove. (lasx_xvmaddwod_h_bu_b): Remove. (lasx_xvmaddwod_w_hu_h): Remove. (lasx_xvmaddwod_d_wu_w): Remove. (lasx_xvmaddwod_q_du_d): Remove. * config/loongarch/lsx.md (UNSPEC_LSX_VMADDWEV): Remove. (UNSPEC_LSX_VMADDWEV2): Remove. (UNSPEC_LSX_VMADDWEV3): Remove. (UNSPEC_LSX_VMADDWOD): Remove. (UNSPEC_LSX_VMADDWOD2): Remove. (UNSPEC_LSX_VMADDWOD3): Remove. (lsx_vmaddwev_h_b<u>): Remove. (lsx_vmaddwev_w_h<u>): Remove. (lsx_vmaddwev_d_w<u>): Remove. (lsx_vmaddwev_q_d): Remove. (lsx_vmaddwod_h_b<u>): Remove. (lsx_vmaddwod_w_h<u>): Remove. (lsx_vmaddwod_d_w<u>): Remove. (lsx_vmaddwod_q_d): Remove. (lsx_vmaddwev_q_du): Remove. (lsx_vmaddwod_q_du): Remove. (lsx_vmaddwev_h_bu_b): Remove. (lsx_vmaddwev_w_hu_h): Remove. (lsx_vmaddwev_d_wu_w): Remove. (lsx_vmaddwev_q_du_d): Remove. (lsx_vmaddwod_h_bu_b): Remove. (lsx_vmaddwod_w_hu_h): Remove. (lsx_vmaddwod_d_wu_w): Remove. (lsx_vmaddwod_q_du_d): Remove. * config/loongarch/simd.md (simd_maddw_evod_<mode>_<su>): New define_insn. (<simd_isa>_<x>vmaddw<ev_od>_<simdfmt_w>_<simdfmt><u>): New define_expand. (simd_maddw_evod_<mode>_hetero): New define_insn. (<simd_isa>_<x>vmaddw<ev_od>_<simdfmt_w>_<simdfmt>u_<simdfmt>): New define_expand. (<simd_isa>_maddw<ev_od>_q_d<u>_punned): New define_expand. (<simd_isa>_maddw<ev_od>_q_du_d_punned): New define_expand. * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vmaddwev_q_d): Define as a macro to override it with the punned expand. (CODE_FOR_lsx_vmaddwev_q_du): Likewise. (CODE_FOR_lsx_vmaddwev_q_du_d): Likewise. (CODE_FOR_lsx_vmaddwod_q_d): Likewise. (CODE_FOR_lsx_vmaddwod_q_du): Likewise. (CODE_FOR_lsx_vmaddwod_q_du_d): Likewise. (CODE_FOR_lasx_xvmaddwev_q_d): Likewise. (CODE_FOR_lasx_xvmaddwev_q_du): Likewise. (CODE_FOR_lasx_xvmaddwev_q_du_d): Likewise. (CODE_FOR_lasx_xvmaddwod_q_d): Likewise. (CODE_FOR_lasx_xvmaddwod_q_du): Likewise. (CODE_FOR_lasx_xvmaddwod_q_du_d): Likewise.
Diffstat (limited to 'gcc/asan.cc')
0 files changed, 0 insertions, 0 deletions