arm.c (output_move_neon): Handle REG explicitly.

* config/arm/arm.c (output_move_neon): Handle REG explicitly.

From-SVN: r212892
This commit is contained in:
Bin Cheng 2014-07-21 12:10:34 +00:00 committed by Bin Cheng
parent 38303b1a3d
commit 8cde4e713a
2 changed files with 19 additions and 8 deletions

View File

@ -1,3 +1,7 @@
2014-07-21 Bin Cheng <bin.cheng@arm.com>
* config/arm/arm.c (output_move_neon): Handle REG explicitly.
2014-07-21 Uros Bizjak <ubizjak@gmail.com>
PR target/61855

View File

@ -18551,6 +18551,20 @@ output_move_neon (rtx *operands)
/* FIXME: Not currently enabled in neon_vector_mem_operand. */
gcc_unreachable ();
case REG:
/* We have to use vldm / vstm for too-large modes. */
if (nregs > 1)
{
if (nregs > 4)
templ = "v%smia%%?\t%%m0, %%h1";
else
templ = "v%s1.64\t%%h1, %%A0";
ops[0] = mem;
ops[1] = reg;
break;
}
/* Fall through. */
case LABEL_REF:
case PLUS:
{
@ -18584,14 +18598,7 @@ output_move_neon (rtx *operands)
}
default:
/* We have to use vldm / vstm for too-large modes. */
if (nregs > 4)
templ = "v%smia%%?\t%%m0, %%h1";
else
templ = "v%s1.64\t%%h1, %%A0";
ops[0] = mem;
ops[1] = reg;
gcc_unreachable ();
}
sprintf (buff, templ, load ? "ld" : "st");