vector.md ("mov<mode>"): Do not call rs6000_emit_le_vsx_move to move into or out of GPRs.

* config/rs6000/vector.md ("mov<mode>"): Do not call
	rs6000_emit_le_vsx_move to move into or out of GPRs.
	* config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Assert
	source and destination are not GPR hard regs.

From-SVN: r205045
This commit is contained in:
Ulrich Weigand 2013-11-19 17:01:45 +00:00 committed by Ulrich Weigand
parent dc936fb236
commit 2d04cc301b
3 changed files with 9 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2013-11-19 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* config/rs6000/vector.md ("mov<mode>"): Do not call
rs6000_emit_le_vsx_move to move into or out of GPRs.
* config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Assert
source and destination are not GPR hard regs.
2013-11-19 David Malcolm <dmalcolm@redhat.com>
* basic-block.h (n_edges_for_function): Rename macro to...

View File

@ -7983,6 +7983,7 @@ rs6000_emit_le_vsx_move (rtx dest, rtx source, enum machine_mode mode)
gcc_assert (!BYTES_BIG_ENDIAN
&& VECTOR_MEM_VSX_P (mode)
&& mode != TImode
&& !gpr_or_gpr_p (dest, source)
&& (MEM_P (source) ^ MEM_P (dest)));
if (MEM_P (source))

View File

@ -108,6 +108,7 @@
if (!BYTES_BIG_ENDIAN
&& VECTOR_MEM_VSX_P (<MODE>mode)
&& <MODE>mode != TImode
&& !gpr_or_gpr_p (operands[0], operands[1])
&& (memory_operand (operands[0], <MODE>mode)
^ memory_operand (operands[1], <MODE>mode)))
{