]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
vector.md ("mov<mode>"): Do not call rs6000_emit_le_vsx_move to move into or out...
authorUlrich Weigand <uweigand@de.ibm.com>
Tue, 19 Nov 2013 17:01:45 +0000 (17:01 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Tue, 19 Nov 2013 17:01:45 +0000 (17:01 +0000)
* 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

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/vector.md

index 91000ce7cd033ed0f51af8032be17956bb048605..79f87addad717870a8304aed4d2e7d5ded19eff5 100644 (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...
index fa79a02a936bd5f973d2f3040ef1dd298d3686a5..5c39d94395aaef537b72dbd7017f40c1d7b8f3d7 100644 (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))
index 10a401813d19b3fba27dcf638bffb8cdf2a2aefd..650fbddc2bbba5d133201456ca31fd0786510377 100644 (file)
   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)))
     {