[arm] Handle immediate values in uaddvsi4
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 18 Oct 2019 19:04:06 +0000 (19:04 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 18 Oct 2019 19:04:06 +0000 (19:04 +0000)
commited6588f239790be8437515ca2dc5e44568963342
treee02ef04cedeb6f4c9d2bdef71f0186bcfd86ff10
parentf9f6247d14dde9cd7202743ec60d253050a60d58
[arm] Handle immediate values in uaddvsi4

The uaddv patterns in the arm back-end do not currenty handle immediates
during expansion.  This patch adds this support for uaddvsi4.  It's really
a stepping-stone towards early expansion of uaddvdi4, but it complete and
a useful change in its own right.

Whilst making this change I also observed that we really had two patterns
that did exactly the same thing, but with slightly different properties;
consequently I've cleaned up all of the add-and-compare patterns to bring
some consistency.

* config/arm/arm.md (adddi3): Call gen_addsi3_compare_op1.
* (uaddv<mode>4): Delete expansion pattern.
(uaddvsi4): New pattern.
(uaddvdi4): Likewise.
(addsi3_compareC): Delete pattern, change callers to use
addsi3_compare_op1.
(addsi3_compare_op1): No-longer anonymous.  Clean up constraints to
reduce the number of alternatives and re-work type attribute handling.
(addsi3_compare_op2): Clean up constraints to reduce the number of
alternatives and re-work type attribute handling.
(compare_addsi2_op0): Likewise.
(compare_addsi2_op1): Likewise.

From-SVN: r277182
gcc/ChangeLog
gcc/config/arm/arm.md