]> git.ipfire.org Git - thirdparty/gcc.git/commit
LoongArch: Add more numbers supported for {x}vldi
authorDeng Jianbo <dengjianbo@loongson.cn>
Mon, 17 Nov 2025 07:28:19 +0000 (15:28 +0800)
committerLulu Cheng <chenglulu@loongson.cn>
Fri, 21 Nov 2025 06:42:11 +0000 (14:42 +0800)
commitcabfea3350ac55de8697bebf99a1456e2be4172c
treefceeab39e5880aee69f62df0d2a41b22c0dfd5ba
parent1efe2bdc08796912cf872b21a0b960f1af673043
LoongArch: Add more numbers supported for {x}vldi

When the most significant bit of the 13 bit immediate value in LoongArch
{x}vldi isntruction is set 1, it can generate different numbers based on
the algorithm.  This patch adds to support these numbers to be
generated by {x}vldi instruction.

gcc/ChangeLog:

* config/loongarch/constraints.md: Update constraint YI to support
more numbers.
* config/loongarch/loongarch-protos.h
(loongarch_const_vector_vrepli): Rename.
(loongarch_const_vector_vldi): Ditto.
* config/loongarch/loongarch.cc (VLDI_NEG_MASK): New macro.
(loongarch_parse_vldi_const): New function to check if numbers can
be generated by {x}vldi instruction.
(loongarch_const_vector_vrepli): Rename.
(loongarch_const_vector_vldi): Use above function.
(loongarch_const_insns): Call renamed function.
(loongarch_split_vector_move_p): Ditto.
(loongarch_output_move): Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/loongarch/vector/lasx/lasx-builtin.c: Replace xvrepli
with xvldi.
* gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c: Fix test.
* gcc.target/loongarch/vector/lsx/lsx-builtin.c: Repalce vrepli with
vldi.
* gcc.target/loongarch/vrepli.c: Ditto.
* gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c: New test.
* gcc.target/loongarch/vector/lsx/lsx-vldi-2.c: New test.
gcc/config/loongarch/constraints.md
gcc/config/loongarch/loongarch-protos.h
gcc/config/loongarch/loongarch.cc
gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-builtin.c
gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c
gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c
gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vldi-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/loongarch/vrepli.c