aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/ast/rust-pattern.h
diff options
context:
space:
mode:
authorGuo Jie <guojie@loongson.cn>2024-12-30 10:38:51 +0800
committerLulu Cheng <chenglulu@loongson.cn>2025-01-02 10:11:35 +0800
commit66a88e0f1726024fe0d34badd1db45c1b2ccf042 (patch)
tree5f7462a1e40af497ea7c362ca731a183c00e086b /gcc/rust/ast/rust-pattern.h
parent66b6e578d99ea20e2c67593be7a772d7710e05b2 (diff)
downloadgcc-66a88e0f1726024fe0d34badd1db45c1b2ccf042.zip
gcc-66a88e0f1726024fe0d34badd1db45c1b2ccf042.tar.gz
gcc-66a88e0f1726024fe0d34badd1db45c1b2ccf042.tar.bz2
LoongArch: Add some vector pack/unpack patterns
gcc/ChangeLog: * config/loongarch/lasx.md (vec_unpacks_lo_<mode>): Redefine. (vec_unpacku_lo_<mode>): Ditto. (lasx_vext2xv_h<u>_b<u>): Replaced by vec_unpack<su>_lo_v32qi. (vec_unpack<su>_lo_v32qi): New insn. (lasx_vext2xv_w<u>_h<u>): Replaced by vec_unpack<su>_lo_v16hi. (vec_unpack<su>_lo_v16qi_internal): New insn, for 128 bits. (vec_unpack<su>_lo_v16hi): New insn. (lasx_vext2xv_d<u>_w<u>): Replaced by vec_unpack<su>_lo_v8si. (vec_unpack<su>_lo_v8hi_internal): New insn, for 128 bits. (vec_unpack<su>_lo_v8si): New insn. (vec_unpack<su>_lo_v4si_internal): New insn, for 128 bits. (vec_packs_float_v4di): New expander. (vec_pack_sfix_trunc_v4df): Ditto. (vec_unpacks_float_hi_v8si): Ditto. (vec_unpacks_float_lo_v8si): Ditto. (vec_unpack_sfix_trunc_hi_v8sf): Ditto. (vec_unpack_sfix_trunc_lo_v8sf): Ditto. * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vftintrz_w_d): Rename. (CODE_FOR_lsx_vftintrzh_l_s): Ditto. (CODE_FOR_lsx_vftintrzl_l_s): Ditto. (CODE_FOR_lsx_vffint_s_l): Ditto. (CODE_FOR_lsx_vffinth_d_w): Ditto. (CODE_FOR_lsx_vffintl_d_w): Ditto. (CODE_FOR_lsx_vexth_h_b): Ditto. (CODE_FOR_lsx_vexth_w_h): Ditto. (CODE_FOR_lsx_vexth_d_w): Ditto. (CODE_FOR_lsx_vexth_hu_bu): Ditto. (CODE_FOR_lsx_vexth_wu_hu): Ditto. (CODE_FOR_lsx_vexth_du_wu): Ditto. (CODE_FOR_lsx_vfcvth_d_s): Ditto. (CODE_FOR_lsx_vfcvtl_d_s): Ditto. (CODE_FOR_lasx_vext2xv_h_b): Ditto. (CODE_FOR_lasx_vext2xv_w_h): Ditto. (CODE_FOR_lasx_vext2xv_d_w): Ditto. (CODE_FOR_lasx_vext2xv_hu_bu): Ditto. (CODE_FOR_lasx_vext2xv_wu_hu): Ditto. (CODE_FOR_lasx_vext2xv_du_wu): Ditto. (loongarch_expand_builtin_insn): Swap source operands in CODE_FOR_lsx_vftintrz_w_d and CODE_FOR_lsx_vffint_s_l. * config/loongarch/loongarch-protos.h (loongarch_expand_vec_unpack): Remove useless parameter high_p. * config/loongarch/loongarch.cc (loongarch_expand_vec_unpack): Rewrite. * config/loongarch/lsx.md (vec_unpacks_hi_v4sf): Redefine. (vec_unpacks_lo_v4sf): Ditto. (vec_unpacks_hi_<mode>): Ditto. (vec_unpacku_hi_<mode>): Ditto. (lsx_vfcvth_d_s): Replaced by vec_unpacks_hi_v4sf. (lsx_vfcvtl_d_s): Replaced by vec_unpacks_lo_v4sf. (lsx_vffint_s_l): Replaced by vec_packs_float_v2di. (vec_packs_float_v2di): New insn. (lsx_vftintrz_w_d): Replaced by vec_pack_sfix_trunc_v2df. (vec_pack_sfix_trunc_v2df): New insn. (lsx_vffinth_d_w): Replaced by vec_unpacks_float_hi_v4si. (vec_unpacks_float_hi_v4si): New insn. (lsx_vffintl_d_w): Replaced by vec_unpacks_float_lo_v4si. (vec_unpacks_float_lo_v4si): New insn. (lsx_vftintrzh_l_s): Replaced by vec_unpack_sfix_trunc_hi_v4sf. (vec_unpack_sfix_trunc_hi_v4sf): New insn. (lsx_vftintrzl_l_s): Replaced by vec_unpack_sfix_trunc_lo_v4sf. (vec_unpack_sfix_trunc_lo_v4sf): New insn. (lsx_vexth_h<u>_b<u>): Replaced by vec_unpack<su>_hi_v16qi. (vec_unpack<su>_hi_v16qi): New insn. (lsx_vexth_w<u>_h<u>): Replaced by vec_unpack<su>_hi_v8hi. (vec_unpack<su>_hi_v8hi): New insn. (lsx_vexth_d<u>_w<u>): Replaced by vec_unpack<su>_hi_v4si. (vec_unpack<su>_hi_v4si): New insn. gcc/testsuite/ChangeLog: * gcc.target/loongarch/vec_pack_unpack_128.c: New test. * gcc.target/loongarch/vec_pack_unpack_256.c: New test.
Diffstat (limited to 'gcc/rust/ast/rust-pattern.h')
0 files changed, 0 insertions, 0 deletions