Improve modes_tieable by returning true in more cases...
authorWilco Dijkstra <wdijkstr@arm.com>
Mon, 20 Jun 2016 12:24:48 +0000 (12:24 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Mon, 20 Jun 2016 12:24:48 +0000 (12:24 +0000)
commit61f17a5c5a8565c5ebfcdbe78f16b56c52b285dd
tree165f3fc8fc05c3a4ca201a83a58139a44d855c1e
parent3ddfabe34fbcf04822c794f1dc8e1740811ad016
Improve modes_tieable by returning true in more cases...

Improve modes_tieable by returning true in more cases: allow scalar access
within vectors without requiring an extra move.  Removing these moves helps
the register allocator in deciding whether to use integer or FP registers on
operations that can be done on both.  This saves about 100 instructions in the
gcc.target/aarch64 tests.

A typical example:

orr     v1.8b, v0.8b, v1.8b
fmov    x0, d0
fmov    x1, d1
add     x0, x1, x0
ins     v0.d[0], x0
orr     v0.8b, v1.8b, v0.8b

after:

orr     v1.8b, v0.8b, v1.8b
add     d0, d1, d0
orr     v0.8b, v1.8b, v0.8b

    gcc/
* config/aarch64/aarch64.c (aarch64_modes_tieable_p):
Allow scalar/single vector modes to be tieable.

From-SVN: r237597
gcc/ChangeLog
gcc/config/aarch64/aarch64.c