diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2013-11-19 17:01:45 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2013-11-19 17:01:45 +0000 |
commit | 2d04cc301b37691506e287be5ddfd757b7d64c23 (patch) | |
tree | f42089e4cf14f094ae8e6473405fcf81901653e7 /gcc | |
parent | dc936fb236f9e85b88a8f59e2d33af2b76b786f7 (diff) | |
download | gcc-2d04cc301b37691506e287be5ddfd757b7d64c23.zip gcc-2d04cc301b37691506e287be5ddfd757b7d64c23.tar.gz gcc-2d04cc301b37691506e287be5ddfd757b7d64c23.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 1 | ||||
-rw-r--r-- | gcc/config/rs6000/vector.md | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 91000ce..79f87ad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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... diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index fa79a02..5c39d94 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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)) diff --git a/gcc/config/rs6000/vector.md b/gcc/config/rs6000/vector.md index 10a4018..650fbdd 100644 --- a/gcc/config/rs6000/vector.md +++ b/gcc/config/rs6000/vector.md @@ -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))) { |