[AArch64] Fix register clobber in, aarch64_ashr_sisd_or_int_<mode>3 split.
authorMarcus Shawcroft <marcus.shawcroft@arm.com>
Mon, 30 Jun 2014 07:54:59 +0000 (07:54 +0000)
committerMarcus Shawcroft <mshawcroft@gcc.gnu.org>
Mon, 30 Jun 2014 07:54:59 +0000 (07:54 +0000)
commit21a7b5e1dbb59c6ff055aa3240e52916790ec305
tree7fa66772c1b413d0a1c56cfa5ab2674e9a947586
parent85c00e0b91c40959852cbd7a0cacc85f2663ceee
[AArch64] Fix register clobber in, aarch64_ashr_sisd_or_int_<mode>3 split.

PR target/61633

The two split patterns associated with
aarch64_ashr_sisd_or_int_<mode>3 split the instruction into a NEG
followed by an SHL.  The split uses one of the input operands as a
scratch register to hold the output of the NEG resulting in register
corruption.

This patch adjusts the splits to use the output operand as the scratch
register.

2014-06-30  Marcus Shawcroft  <marcus.shawcroft@arm.com>

       PR target/61633
       * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
       Add alternative; make early clobber.  Adjust both split patterns
       to use operand 0 as the working register.

From-SVN: r212137
gcc/ChangeLog
gcc/config/aarch64/aarch64.md