aarch64: PR target/99037 Fix RTL represntation in move_lo_quad patterns
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 29 Mar 2021 10:52:24 +0000 (11:52 +0100)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 29 Mar 2021 10:54:57 +0000 (11:54 +0100)
commit37d9074e12082132ae62c12fbe958c697f638c0a
treec7102ff0938c1a2c1bc1bc005a7f5c2839f49fb2
parent25e515d2199d555848dfba01fd5364df94096496
aarch64: PR target/99037 Fix RTL represntation in move_lo_quad patterns

This patch fixes the RTL representation of the move_lo_quad patterns to use aarch64_simd_or_scalar_imm_zero
for the zero part rather than a vec_duplicate of zero or a const_int 0.
The expander that generates them is also adjusted so that we use and match the correct const_vector forms throughout.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
gcc/ChangeLog:

PR target/99037
* config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>): Use
aarch64_simd_or_scalar_imm_zero to match zeroes.  Remove pattern
matching const_int 0.
(move_lo_quad_internal_be_<mode>): Likewise.
(move_lo_quad_<mode>): Update for the above.
* config/aarch64/iterators.md (VQ_2E): Delete.

gcc/testsuite/ChangeLog:

PR target/99808
* gcc.target/aarch64/pr99808.c: New test.
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/iterators.md
gcc/testsuite/gcc.target/aarch64/pr99808.c [new file with mode: 0644]