aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2013-11-19 17:01:45 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2013-11-19 17:01:45 +0000
commit2d04cc301b37691506e287be5ddfd757b7d64c23 (patch)
treef42089e4cf14f094ae8e6473405fcf81901653e7 /gcc
parentdc936fb236f9e85b88a8f59e2d33af2b76b786f7 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.c1
-rw-r--r--gcc/config/rs6000/vector.md1
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)))
{