aarch64: Remove redundant vec_concat patterns
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 9 Feb 2022 16:57:04 +0000 (16:57 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Wed, 9 Feb 2022 16:57:04 +0000 (16:57 +0000)
commitaeef5c57f161ad0258c5ab066ade2274bef3271a
treec8375c5e3c778b37c8857cb7e78f92ee19f747aa
parent958448a9441ee54e012c67cfc3cf88083f3d0e4a
aarch64: Remove redundant vec_concat patterns

move_lo_quad_internal_<mode> and move_lo_quad_internal_be_<mode>
partially duplicate the later aarch64_combinez{,_be}<mode> patterns.
The duplication itself is a regression.

The only substantive differences between the two are:

* combinez uses vector MOV (ORR) instead of element MOV (DUP).
  The former seems more likely to be handled via renaming.

* combinez disparages the GPR->FPR alternative whereas move_lo_quad
  gave it equal cost.  The new test gives a token example of when
  the combinez behaviour helps.

gcc/
* config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>)
(move_lo_quad_internal_be_<mode>): Delete.
(move_lo_quad_<mode>): Use aarch64_combine<Vhalf> instead of the above.

gcc/testsuite/
* gcc.target/aarch64/vec-init-8.c: New test.
gcc/config/aarch64/aarch64-simd.md
gcc/testsuite/gcc.target/aarch64/vec-init-8.c [new file with mode: 0644]