[AArch64] Fix PR62178 testcase failures
authorWilco Dijkstra <wdijkstr@arm.com>
Wed, 14 Nov 2018 12:35:36 +0000 (12:35 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Wed, 14 Nov 2018 12:35:36 +0000 (12:35 +0000)
commitff4d8480403be6ab92e07f6981e7bfc04c3863c9
tree558da2565d60de053556689fc74e2fb15ff65e03
parentb258173580ec8ed49c1655593531c9819e064730
[AArch64] Fix PR62178 testcase failures

The testcase for PR62178 has been failing for a while due to the pass
conditions being too tight, resulting in failures with -mcmodel=tiny:

ldr q2, [x0], 124
ld1r {v1.4s}, [x1], 4
cmp x0, x2
mla v0.4s, v2.4s, v1.4s
bne .L7

-mcmodel=small generates the slightly different:

ldr q1, [x0], 124
ldr s2, [x1, 4]!
cmp x0, x2
mla v0.4s, v1.4s, v2.s[0]
bne .L7

This is due to Combine merging a DUP instruction with either a load
or MLA - we can't force it to prefer one over the other.  However the
generated vector loop is fast either way since it generates MLA and
merges the DUP either with a load or MLA.  So relax the conditions
slightly and check we still generate MLA and there is no DUP or FMOV.

The testcase now passes - committed as obvious.

    testsuite/
* gcc.target/aarch64/pr62178.c: Relax scan-assembler checks.

From-SVN: r266139
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/pr62178.c